Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ - С-С++методичка и титул.doc
Скачиваний:
12
Добавлен:
08.11.2019
Размер:
789.5 Кб
Скачать

Занесение данных в массив

Исходные данные в элементы массива можно занести тремя способами:

  1. Инициализацией массива.

  2. Функцией ввода.

  3. Присваиванием значений.

Инициализация массива выполняется при описании массива путем задания начальных значений элементам в списке инициаторов, заключенном в фигурные скобки { }, а сами инициаторы разделяются запятыми.

Одномерный массив можно инициировать полностью:

int ar [5]={1,2,3,4,5} или частично: int ar[5]={4,5};

тогда ar[0]=4, ar[1]=5, остальные элементы равны 0, поэтому легко выполнить обнуление всего массива: int ar[5]={0}.

Двухмерный массив можно инициировать одним списком:

int ar [2][3]={1,2,3, 4,5,6}; либо отдельными списками построчно:

int ar [2][3]={{1,2,3},{4,5,6}}; либо неполными списками:

int ar [2][3]={{1,2},{4}}; что соответствует списку {{1,2,0},{4,0,0}}.

Ввод данных в массив функцией scanf ( ) выполняется поэлементно, для чего используется оператор цикла. Например, ввод одномерного массива:

for (i=0; i<5; i++) scanf (“%d”,&ar[i]); или scanf (“%d”, ar+i) c адресным выражением.

Присваивание значений элементам массива выполняется при вычислении выражений, определяющих элементы массива, например,

for (i=0; i<5; i++) a[i]=sin(i+1)+cos(2*i+1).

Обработка одномерных массивов

Пример 28.

Найти индекс и значение минимального элемента массива.

В задаче достаточно определить индекс искомого элемента массива, и с его помощью получить доступ к самому элементу.

Программа:

# define k 10 // количество элементов массива

void main ( )

{ float a[k]; int i; im; // описание массива и переменных

clrscr(); // очистка экрана

puts (“Ввести %d элементов массива”; k);

for (i=0;i<k;i++) // цикл по индексам элементов

scanf (“%f”, ar+i); // ввод элемента

im=0; // индекс начального элемента

for (i=1; i<k; i++) // цикл поиска индекса минимума

if (a[i] < a[im]) im=i; // проверка элемента на минимум

printf (“Минимум = %5.2f индекс=%d”, a[im], im);

}

Пример 29.

Упорядочить по возрастанию элементы массива методом "пузырька". Название происходит оттого, что легкие элементы должны перемещаться ("всплывать") к одному из концов массива. Используется два цикла. Первый цикл (прямой) организует шаги сортировки на единицу меньше числа элементов. Второй (обратный) цикл от конца массива до начала неупорядоченного фрагмента массива. В нем сравниваются соседние элементы a[j] и a[j-1] и переставляются местами с использованием рабочей ячейки r, если нарушено условие сортировки.

Программа:

#define k 10 // размер массива

void main ( )

{ float a[k], r; // описание массива и переменной

int i, j; // описание индексов

clrscr(); // очистка экрана

printf ( “Ввод массива :\n”);

for (i=0; i < k; i++) scanf (“%f”, a+i); // цикл ввода элементов массива

for (i=0; i < k-1; i++) // цикл шагов упорядочения

{ for(j=k-1; j > i; j--) // цикл перестановок элементов

if (a[j-1] > a[j] ) // если условие сортировки нарушено,

{ r=a[j]; // перестановка

a[j]=a[j-1]; // соседних

a[j-1]=r; // элементов

} // конец цикла перестановок

} // конец цикла упорядочения

puts (“Массив упорядочен по возрастанию:”);

for ( i=0; i<k; i++ ) printf (“%5.2f ”, a[i] ); // цикл вывода массива

}