Вот очень простое решение.
Числа назначаются непосредственно в двухмерном массиве в одном scanf (вы можете использовать индексы, но в этом нет необходимости, потому что вы знаете, что у вас может быть только 4 числа) .
Функция scanf_tetrad
принимает массив как параметр.
Код:
#include <stdio.h>
#include <stdlib.h>
void scanf_tetrad(int p[2][2])
{
printf("Enter 4 numbers:");
scanf("%d %d %d %d", &p[0][0], &p[0][1], &p[1][0], &p[1][1]);
}
int main()
{
int ia[2][2];
int i,j;
scanf_tetrad(ia);
printf("You entered: ");
for (i=0; i < 2; i++)
for(j=0; j < 2; j++)
printf("%d ", ia[i][j]);
printf("\n");
return 0;
}
Выполнение:
./tetrad
Enter 4 numbers:54634 456 7486743 4546
You entered: 54634 456 7486743 4546
Вот простая программа для чтения нескольких тетрад:
- он сначала просит ввести количество тетрад
- он выделяет динамический c массив
tt
который в массиве тетрадных массивов - он выделяет каждую тетраду массива в
tt
- он читает каждый тетрадный массив с той же функцией выше
- он отображает элементы массива тетрад, используя формулу для доступа к адресу элемента массива [x, y], что составляет
x * (number of columns) + y
. Обратите внимание, что этот код может не соответствовать стандарту на 100% C.
метрад. c
#include <stdio.h>
#include <stdlib.h>
void scanf_tetrad(int p[2][2])
{
printf("Enter 4 numbers:");
scanf("%d %d %d %d", &p[0][0], &p[0][1], &p[1][0], &p[1][1]);
}
int main()
{
int i,j, idx;
int ttnb;
int ***tt, **ctt;
printf("Enter number of tetrad:");
scanf("%d", &ttnb);
tt = malloc(ttnb * sizeof (int [2][2]));
if (tt == NULL)
{
perror("malloc");
return 1;
}
for (idx=0; idx < ttnb; idx++)
{
tt[idx] = malloc(sizeof (int [2][2]));
if (tt[idx] == NULL)
{
perror("malloc");
return 1;
}
}
for (idx=0; idx < ttnb; idx++)
{
scanf_tetrad((int (*)[2])tt[idx]);
}
printf("You entered:\n");
for (idx=0; idx < ttnb; idx++)
{
printf("tetrad %d: ", idx);
ctt = tt[idx];
for (i=0; i < 2; i++)
for(j=0; j < 2; j++)
{
printf("%d ", *((int*)ctt + (i * 2) + j));
}
printf("\n");
}
return 0;
}
Пример выполнения:
./mtetrad
Enter number of tetrad:4
Enter 4 numbers: 1 2 3 4
Enter 4 numbers:5 6 7 8
Enter 4 numbers:9 10 11 12
Enter 4 numbers:13 14 15 16
You entered:
tetrad 0: 1 2 3 4
tetrad 1: 5 6 7 8
tetrad 2: 9 10 11 12
tetrad 3: 13 14 15 16