Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДВУМЕРНЫЕ МАССИВЫ.doc
Скачиваний:
41
Добавлен:
25.11.2019
Размер:
77 Кб
Скачать
☆

Присваивание значений элементам массива

Значения элементам массива могут быть присвоены в процессе работы программы. Для этого следует организовать вложенные циклы, управляющие переменные которых позволяют индексировать строки и столбцы двумерного массива.

Пример 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 выводятся на экран.