Cum se rezolva eroarea la codul acesta:
#include
#include
using namespace std;
int main()
{
int rows, colums;
cout << "row= ";
cin >> rows;
cout << "colums= ";
cin >> colums;
int *Matrix = (int*)malloc(rows * colums * sizeof(int));
for (int i = 0; i < rows; i++)
{
for (int j = 0; j, colums; j++)
{
cout << "Matrix[" << i << "][" << j << "]= ";
cin << Matrix[i][j];
}
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j, colums; j++)
{
cout << Matrix[i][j];
}
cout << endl;
}
free(Matrix);
return 0;
}
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int rows, colums;
cout << "row= ";
cin >> rows;
cout << "colums= ";
cin >> colums;
int **Matrix = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++)
{
Matrix[i] = (int *)malloc(colums * sizeof(int));
for (int j = 0; j < colums; j++)
{
cout << "Matrix[" << i << "][" << j << "]= ";
cin >> Matrix[i][j];
}
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < colums; j++)
cout << Matrix[i][j];
cout << endl;
}
for (int i = 0; i < rows; i++)
free(Matrix[i]);
free(Matrix);
return 0;
}
Explicație:
În primul rând ștergi cele două include-uri și adaugi un #include <iostream>.
După foloseai din câte am văzut << cu cin, pentru cin folosești >>.
După în for, de exemplu „for (int j = 0; j, colums; j++)” trebuie să-l scrii ca și „for (int j = 0; j < colums; j++)”.
Când aloci matricea dinamică prima dată aloci un array de dublu pointeri ( fiecare pointer „va arăta” spre o linie a matricii ( care e un alt array de intregi )) și la final eliberezi matricea alocată.
for (int i = 0; i < rows; i++)
{
Matrix[i] = (int *)malloc(colums * sizeof(int));
for (int j = 0; j < colums; j++)
{
cout << "Matrix[" << i << "][" << j << "]= ";
cin >> Matrix[i][j];
}
poate cu sintaxa din c++ îți e mai ușor de văzut
int ** Matrix = new int*[rows]; ( un vector de pointeri )