Моя настоящая цель здесь - инициализировать 2d-массив, затем вызвать функцию, чтобы получить пользовательский ввод для строк и столбцов, а затем вернуть 2d-массив в main с размером, указанным пользователем.
Хотя я понимаю, что было бы гораздо эффективнее не использовать функцию GetData для запроса ввода данных пользователем, а вместо этого поместить ввод в основную функцию, мой профессор требует, чтобы я это сделал.
Это специальная подсказка:
"GetData (): написать функцию, которая принимает ссылку на двумерный массив, ссылку на переменные, одну для числа строк и другую для числа столбцов в качестве параметра. Функция принимает количество строк и числовых столбцов в качестве пользовательского ввода и обновляет переданную ему переменную. Затем она принимает входные данные для матрицы на основе количества строк и столбцов. "
#include <stdio.h>
void GetData(int *rows, int *columns, int matrix[][*columns]);
void Display(int rows, int columns, int matrix[][columns]);
int main(void)
{
int r1, c1, r2, c2;
int m1[r1][c1];
int m2[r2][c2];
printf("Working for Matrix 1\n");
GetData(&r1,&c1,m1);
Display(r1,c1,m1);
return 0;
}
void GetData(int *rows, int *columns, int matrix[][*columns])
{
// maybe instead of void it needs to return an integer pointer?
int a, b, i, j,k;
printf("Enter number of rows and columns: ");
scanf("%d %d",&a,&b);
*rows = a;
*columns = b;
printf("Enter data for %dx%d matrix",*rows,*columns);
for(i = 0;i<*rows;i++)
{
printf("\nrow %d\n",i+1);
for(j=0;j<*columns;j++)
{
scanf("%d",&k);
matrix[i][j] = k;
}
}
}
void Display(int rows, int columns, int matrix[][columns])
{
int i, j;
for (i=0;i<rows;i++)
{
for(j=0;j<columns;j++)
printf("%4d",matrix[i][j]);
}
}
Когда этот кодзапускается, также есть ошибка сегментации, я не слишком уверен, что это означает или что это вызывает.