Я хочу написать код для вычисления некоторых значений и поместить эти значения в двумерный массив. Я написал очень простую форму этой проблемы.
Этот код не дает результата.
Я хочу иметь один массив m
или n
с элементами, которые вычисляются по определенной функции.
#include "stdafx.h"
#include "iostream"
#include "cmath"
using namespace std;
double x;
int i,j;
double A[10][10];
double M;
double function (double A,double x)
{
for (i = 0; i = 9; ++i)
for (j = 0; j = 9; ++j)
M = 10 + x + A;
return M;
}
int _tmain(int argc, _TCHAR* argv[])
{
double y;
cin >> x;
y = function(A[10][10], x);
cout << y;
return 0;
}
Этот код не имеет никакого смысла
{ for (i=0;i=9;++i) for (j=0;j=9;++j) M=10+x+A; return M; }
Вы назначаете 9 в я и j в циклы. Поскольку 9 не равно 0, то эти условия i = 9
и j = 9
всегда будут преобразованы в true и циклы будут бесконечными. Также неясно, что вы пытаетесь вычислить, используя еще одно недопустимое выражение M=10+x+A
Вы используете назначение =
вместо равенства ==
в вашем состоянии цикла. Поскольку 9
преобразуется в true
ваши циклы - это бесконечные циклы (BTW, вы, вероятно, захотите использовать i != 10
а также для j
любом случае).
Следующее может помочь вам понять, как инициализировать массив.
double createValueFromIndices(int x, int y)
{
return 10. * x + y; // or any wanted value;
}
void initArray(double (&a)[10][10])
{
for (int x = 0; x != 10; ++x) {
for (int y = 0; y != 10; ++y) {
a[x][y] = createValueFromIndices(x, y);
}
}
}
int main(int argc, char** argv)
{
double a[10][10];
initArray(a);
return 0;
}
a
. Таким образом, a[x][y] == 10. * x + y
, например a[4][2] == 42.
Похоже, вы намеревались сделать:
for (i = 0; i <= 9; ++i)
for (j = 0; j <= 9; ++j)
Вам не хватало <. я <10 будет более стандартным.