Присваивание значений элементам массива
Значения элементам массива могут быть присвоены в процессе работы программы. Для этого следует организовать вложенные циклы, управляющие переменные которых позволяют индексировать строки и столбцы двумерного массива.
Пример 3. Заполнение двумерного массива случайными числами
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i,j;
int num[3][4]; //выделена память под двумерный массив
clrscr();
randomize();
//внешний цикл индексирует строки
for(i=0; i<3; i++) //индекс строки изменяется от 0 до 2
// внутренний цикл индексирует столбцы
for(j=0; j<4; j++) // индекс столбцаи изменяется от 0 до 3
num[i][j] = rand(); //присваиваивание элементу матрицы случайного числа
printf("Полученная матрица\n\n");
// вывод матрицы по строкам
for(i=0; i<3; i++) {
for(j=0; j<4; j++)
printf("%6d ", num[i][j]);
printf("\n");
}
getch();
return 0;
}
Пример 4.
Если необходимо, чтобы при обявлении элементы массив были инициализированы нулевыми значениями, массив может быть объявлен как статический.
//Сформировать матрицу A(10,10) следующего вида:
// 1 0 0 ...0
// 2 1 0 ...0
// 3 2 1 ...0
// . . . . ..
// . . . . ..
// 10 9 8 ...1
//
#include <stdio.h>
#include <conio.h>
#define N 10
void main(void)
{
static int a[N][N]; //Статический массив инициализируется нулями
int i,j;
clrscr();
for(i=0;i<N; i++)
for(j=0; j<N; j++)
if(i>=j)
a[i][j]=i-j+1; //условие попадания под гл. диагональ
//вывод полученного массива
for(i=0;i<N; i++)
{ for(j=0; j<N; j++)
printf("%3d",a[i][j]);
putchar('\n');
}
getch();
}
Ввод элементов двумерного массива в диалоговом режиме
Пример 5.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i,j;
int num[3][4]; //выделена память под двумерный массив
clrscr();
randomize();
for(i=0; i<3; i++) //индекс строки изменяется от 0 до 2
for(j=0; j<4; j++) // индекс столбцаи изменяется от 0 до 3
{
printf("Введите элемент num[%d][%d]\n",i,j);
scanf("%d",&num[i][j]);
}
printf("Полученная матрица\n\n");
// вывод матрицы по строкам
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
printf("%6d ", num[i][j]);
printf("\n");
}
getch();
return 0;
}
Массивы строк
Массив строк можно организовать так же, как массив данных любого типа. Массив строк будет являться массивом массивов символов. Определяя массив строк также, как и при определении массива другого типа, следует использовать два индекса. Например, определение
char name [10] [20];
задает 10 строковых переменных name длиной не более 19 символов в каждой.
Строки можно вводить и выводить, используя только один цикл, повторяющийся по одному разу на каждую строку массива, как показано в примере 1.
Пример 1. Ввод-вывод массива строк.
#include <stdio.h>
void main (void
{
char name[10] [20];
int index;
// ввод строк
// цикл по индексу строки
for(index=0; index <10; index++)
{
printf(“Введите строку №%d “,index);
gets(name[index];
printf(“ \n”);
}
// вывод строк
// цикл по индексу строки
for(index=0; index <10; index++)
{
puts(name[index];
}
}
Если требуется задавать строки путем ввода значений отдельных символов, следует использовать вложенные циклы. Так, если необходимо ввести строки, составляющие массив char name[10][20], то следует организовать внешний цикл, который должен повторяться 10 раз, по одному на каждую строку и внутренний цикл, который должен иметь 19 повторов для ввода значений одной строки. В примере 1 показана программа, в которой вводятся 10 имен в массив, а затем все эти 10 строк с помощью цикла for выводятся на экран.
