Если ваше назначение - использовать массивы и ничего более, массив должен быть объявлен с целочисленным литералом, устанавливающим количество элементов для каждого измерения, например,
int main() {
double matrix[ROWCAP][COLCAP];
Инициализируйте ваши переменные, чтобы сделать ваши начальные сравненияработа для вас:
int row = 101;
int col = 101;
while (row > ROWCAP) {
cout << "\nEnter the number of rows: ";
if (!(cin >> row)) {
cerr << "error: invalid integer input - row\n";
return 1;
}
if (row <= ROWCAP)
break;
cerr << "error: exceeds " << ROWCAP << '\n';
}
(то же самое для col
с COLCAP
, примечание: вы можете просто непрерывно выполнять цикл, пока не получите требуемый ввод, например, while (1) {...}
)
Чтобы передать двумерный массив в функцию, у вас есть 2 варианта:
void readValues(int x, int y, double matrix[][COLCAP]);
или
void readValues(int x, int y, double (*matrix)[COLCAP]);
Соответствующая функция определение будетбыть:
void readValues (int x, int y, double matrix[][COLCAP])
{
for (int i=0; i<x; i++)
{
for (int j=0; j<y; j++)
{
if (!(cin >> matrix[i][j])) {
cerr << "error: invalid integer input - matrix[i][j]\n";
exit (EXIT_FAILURE);
}
}
}
}
или
void readValues (int x, int y, double (*matrix)[COLCAP])
( примечание: вы должны проверить каждый пользовательский ввод )
Когда вы вызываете функцию, передающую 2D-массив, вы передаете только имя массива:
cout << "Enter the matrix:\n";
readValues (row, col, matrix);
Если положить его в целом, вы можете сделать:
#include <iostream>
#define ROWCAP 100
#define COLCAP 100
using namespace std;
void readValues(int x, int y, double matrix[][COLCAP]);
void printValues(int x, int y, double matrix[][COLCAP]);
int main() {
double matrix[ROWCAP][COLCAP];
int row = 101;
int col = 101;
while (row > ROWCAP) {
cout << "\nEnter the number of rows: ";
if (!(cin >> row)) {
cerr << "error: invalid integer input - row\n";
return 1;
}
if (row <= ROWCAP)
break;
cerr << "error: exceeds " << ROWCAP << '\n';
}
while (col > COLCAP) {
cout << "\nEnter the number of cols: ";
if (!(cin >> col)) {
cerr << "error: invalid integer input - col\n";
return 1;
}
if (col <= COLCAP)
break;
cerr << "error: exceeds " << COLCAP << '\n';
}
cout << "Enter the matrix:\n";
readValues (row, col, matrix);
cout<<"\nThe matrix entered was:\n";
printValues (row, col, matrix);
return 0;
}
void readValues (int x, int y, double matrix[][COLCAP])
{
for (int i=0; i<x; i++)
{
for (int j=0; j<y; j++)
{
if (!(cin >> matrix[i][j])) {
cerr << "error: invalid integer input - matrix[i][j]\n";
exit (EXIT_FAILURE);
}
}
}
}
void printValues (int x, int y, double matrix[][COLCAP])
{
for (int i=0; i<x; i++)
{
for(int j=0; j<y; j++)
{
cout << matrix[i][j] << "\t";
}
cout << endl;
}
}
Пример использования / Вывод
$ ./bin/matrix_cin
Enter the number of rows: 3
Enter the number of cols: 3
Enter the matrix:
1 2 3 4 5 6 7 8 9
The matrix entered was:
1 2 3
4 5 6
7 8 9
Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.