Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава3_Массивы и указатели в С++.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
331 Кб
Скачать

9.3. Заполнение массива данными и вывод элементов массива

1. Заполнение массива данными

1) Заполнение массива в процессе вычислений

Этот способ заполнения элементов массива особенно удобен, когда между элементами существует какая-либо зависимость, например, арифметическая или геометрическая прогрессии, или элементы связаны между собой рекуррентным соотношением.

Пример. Создать массив m длины 10, занести в его i -ю ячейку значение i2 .

#include <stdio.h>

void main()

{

int m[10], i;

for(i=0; i<10; i++) m[i] = i*i;

}

Пример. Сформировать массив из 5 строк и 5 столбцов, у которого элементы равны произведению своих индексов.

#include <stdio.h>

void main()

{

int mas[5][5],i,j;

for(i=0; i<5; i++)

for(j=0; j<5; j++)

mas[i][j] = i*j;

}

2) Ввод элементов массива с клавиатуры

Используется обычно тогда, когда между элементами не наблюдается никакой зависимости.

Пример. Ввод элементов одномерного массива с клавиатуры

const int n=10;

int i, mas[n];

printf("Введите элементы массива\n"); // подсказка для ввода

for(i=0; i<n; i++)

{

printf("mas[%d]=", i);

scanf("%d", &mas[i]); // ввод элемента массива с номером i

}

Пример. Ввод элементов двумерного массива с клавиатуры

const int m=3,n=4;

int i,j,mas[m][n];

printf("Введите элементы массива\n");

for(i=0; i<m; i++)

for(j=0; j<n; j++)

{

printf("mas[%d][%d]= ", i,j);

scanf("%d", &mas[i][j]);

}

3) Чтение элементов массивы из файла (текстового или двоичного)

2. Вывод элементов массива

Пример. Вывод элементов одномерного массива

for(i=0; i<n; i++)

printf("mas[%d]=%d\n", i,mas[i]);

или

for(i=0; i<n; i++)

printf(" %d", mas[i]);

Пример. Вывод элементов двумерного массива

for(i=0; i<m; i++)

for(j=0; j<n; j++)

printf("mas[%d][%d]=%d\n", i,j,mas[i][j]);

или

for(i=0; i<m; i++)

{

for(j=0; j<n; j++) printf(" %d", mas[i][j]);

printf("\n");

}

Пример. Программа, которая умножает все элементы массива, введенного с клавиатуры, на 2 и выводит полученный массив на экран.

#include <stdio.h>

void main()

{

const int n=10;

int i, A[n];

printf("Введите элементы массива\n");

for(i=0; i<n; i++)

{

printf("A[%d]=", i);

scanf("%d", &A[i]);

}

for(i=0; i<n; i++)

{

A[i]=A[i]*2; // умножение элемента массива на 2

printf(" %d", A[i]); // вывод элемента массива

}

}

9.4. Типовые задачи на обработку одномерных массивов

В задачах на обработку одномерных массивов наиболее часто встречаются следующие алгоритмы:

1. Поиск максимального (минимального) значения в массиве и его индекса

Пример. Программа поиска максимального элемента массива и его индекса.

#include <stdio.h>

void main()

{

const int n=10;

int i, A[n], max, imax;

printf("Введите элементы массива\n");

for(i=0; i<n; i++)

{

printf("A[%d]=", i);

scanf("%d", &A[i]);

}

max=A[0]; imax=0; // предполагаем, что A[0] – максимальный

for(i=1; i<n; i++) // перебор с элемента 1

if (A[i]>max) { max=A[i]; imax=i; }

printf("Максимальный элемент массива: %d\n", max);

printf("Индекс максимального элемента: %d\n", imax);

}

Чтобы найти минимальный элемент, достаточно изменить условие в условном операторе на обратное (A[i] < max). Конечно, вспомогательную переменную в этом случае лучше (но не обязательно!) назвать min.

Примечание. Если в массиве есть несколько элементов, равных максимальному, то в результате работы программы будет выведен индекс первого максимального элемента.

При решении данной задачи можно обойтись одной дополнительной переменной. Дело в том, что по номеру элемента можно легко найти его значение в массиве. На этом основана приведенная ниже программа.

#include <stdio.h>

void main()

{

const int n=10;

int i, A[n], imax;

// ввод массива А

imax=0; // Предполагаем, что 0 – индекс максимального эл-та

for(i=1; i<n; i++)

if (A[i]>A[imax]) imax=i; // Запомнили новый номер

printf("Максимальный элемент A[%d]=%d\n", imax, A[imax]);

}