Теоретическое введение.
Перед выполнением заданий работы 4 необходимо ознакомиться с типом данных массив.
В работе рассматриваются простейшие алгоритмы работы с массивами, особенности организации циклов при обработке одномерных массивов (векторов) и двумерных массивов (матриц), организация ввода/вывода массивов, а также общие вопросы организации программ для обработки массивов.
Рассматриваемые в работе алгоритмы являются базовыми для реализации более сложных алгоритмов обработки массивов, рассматриваемых в последующих работах. Алгоритмы оформлены в виде фрагментов программ. При самостоятельном выполнении заданий к работе может потребоваться корректировка приведенных программ. Все алгоритмы описаны в общем виде применительно к массивам произвольных размеров. Для обозначения границ изменения индексов используются переменные. При реализации приведенных фрагментов программ на ЭВМ необходимо в начале программы описать все используемые массивы и присвоить значения константам, обозначающим границы изменения индексов. Не забывайте, размеры массива объявляют всегда константой!
Ввод/вывод массивов, а также обработка массивов связаны, как правило, с последовательным просмотром элементов массива, что реализуется организацией циклов. При этом, как правило, индексы используются в качестве управляющих переменных циклов.
Для ввода массивов нужно составить программу, обеспечивающую изменение индексов и последовательное заполнение элементов массивов данными.
Ввод одномерного массива
// ввод массива
# include <stdio.h>
# include <conio.h>
# define N 5 // размер массива
void main()
{
int a[N]; // массив
int i; // индекс
printf (“ Введите массив целых чисел. \n”);
printf (“После ввода каждого числа \n”);
printf (“нажимайте <Enter> \n”);
for ( i= 0; i<N; i++)
{
printf (“a[%i]-> ” , i+1);
scanf (“%i”, &a[i] );
}
printf (“\n Для завершения нажмите <Enter>”);
getch();
}
Особенностью выполнения этой программы является то, что ввод выполняется N раз и при каждом его выполнении вводится одно число (очередной элемент массива). Если массив содержит небольшое известное заранее число элементов (например, 4), то в списке ввода можно указать явно все элементы массива.
При вводе двумерного массива необходимо организовать двойной цикл: внешний — по номеру строки, внутренний — по номеру столбца. Ввод матрицы по строкам
int a[N][M]; // массив
int i, j; // индекс
for ( i = 0; i<N; i++)
for ( j = 0; j<M; j++)
{
printf ("a[%i][%i]-> " , i+1, j+1);
scanf ("%i", &a[i][j] );
}
N — число строк, М — число столбцов матрицы.
Ввод в приведенной программе выполняется N*M раз и обеспечивает каждый раз ввод одного элемента массива. Порядок ввода элементов определяете порядком изменения индексов в программе и является следующим: a[0][0], a[0][1], … a[0][M-1], a[1][0], a[1][1], . . . a[1][M-1], … a[N-1][0], a[N-1][1], …a[N-1][M-1].
Но на экран выводиться номера индексов соответствующих началу отсчета с 1.
Ввод по строкам, реализованный в приведенной программе является наиболее естественным. В случае необходимости можно организовать заполнение массива по столбцам. Для этого внешний цикл должен быть организован по номеру столбца (j), а внутренний — по номеру строки (i) с соответствующими границами изменения индексов.
2. Вывод (печать) массивов. При выводе массивов необходимо обеспечить наглядность и удобство восприятия полученных результатов.
Вывод одномерного массива, как правило, целесообразно осуществлять в строку, сопровождая поясняющим текстом.
printf ("Массив a-> " );
for ( i = 0; i<N; i++)
printf (" %i, " , a[i] );
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.