Программирование на языке Си Часть II Тема 1. Массивы Учитель информатики: Корогод В.А.

Презентация:



Advertisements
Похожие презентации
Массивы Массивы Ввод и вывод массива Максимальный элемент массива Обработка массивов Сортировка массивов Поиск в массивеМассивыВвод и вывод массиваМаксимальный.
Advertisements

К. Поляков, Программирование на языке Паскаль Часть III Тема. Массивы.
К. Поляков, Программирование на языке Паскаль Часть II Тема: Поиск максимального элемента массива.
К. Поляков, Программирование на алгоритмическом языке. Часть II 1.МассивыМассивы 2.Максимальный элемент массиваМаксимальный.
Программирование на языке Си Часть II Матрицы Учитель информатики: Корогод В.А.
К. Поляков, Программирование на языке Паскаль Часть II Тема: Массивы.
1 Программирование на языке Паскаль Тема 1. Массивы.
1 Обработка массивов. 2 Реверс массива Задача: переставить элементы массива в обратном порядке. Алгоритм: поменять местами A[1] и A[N], A[2] и A[N-1],
1 Случайные числа на языке Паскаль Тип величины Диапазон значений Паскаль Веществен ный [ 0, 1 ]x : = random [ 0, a]x : = random * a [ a, b ]x : = random.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
1 Массивы Массив – это упорядоченная последовательность, состоящая из фиксированного количества величин одного типа. Особенности: все элементы имеют один.
1 Программирование на языке Паскаль Обработка массивов.
1 Программирование на языке Паскаль Максимальный элемент массива.
Например: семейство бабочек; Понятие одномерного массива поле цветов;
Власова О.А. СОШ 5, Елабуга. Например: семейство бабочек ; Понятие одномерного массива поле цветов;
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 62. МассивыМассивы.
Тематический блок «Программирование» ЕГЭ-2015 Задания 19, 20, 21, 25.
Язык программирования Pascal Массивы А. Жидков. Массивы Массив – поименованный набор однотипных элементов, каждый из которых имеет свой номер, (индекс).
Программирование на языке Паскаль Массивы 1.Массивы (объявление, заполнение)Массивы (объявление, заполнение) 2.Поиск в массивеПоиск в массиве 3.Максимальный.
К. Поляков, Программирование на алгоритмическом языке. Часть III 1.Обработка массивовОбработка массивов 2.Сортировка.
Транксрипт:

Программирование на языке Си Часть II Тема 1. Массивы Учитель информатики: Корогод В.А

2 Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности: все элементы имеют один тип весь массив имеет одно имя все элементы расположены в памяти рядом Примеры: список учеников в классе квартиры в доме школы в городе данные о температуре воздуха за год

3 Массивы A A массив НОМЕР элемента массива (ИНДЕКС) НОМЕР элемента массива (ИНДЕКС) A[0] A[1] A[2] A[3] A[4] ЗНАЧЕНИЕ элемента массива A[2] НОМЕР (ИНДЕКС) элемента массива: 2 ЗНАЧЕНИЕ элемента массива: 15 НУЛЯ Нумерация элементов массива в Си начинается с НУЛЯ! !

4 Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в памяти Пример: Размер через константу: имя размер массива (количество элементов) тип элементов тип элементов int A [ ]; const int N = 5; N int A [ 5 ];

5 Объявление массивов Еще примеры: int X[10], Y[10]; float zz, A[20]; char s[80]; int X[10], Y[10]; float zz, A[20]; char s[80]; С присвоением начальных значений: int A[4] = { 8, -3, 4, 6 }; float B[2] = { 1. }; char C[3] = { 'A', '1', 'Ю' }; int A[4] = { 8, -3, 4, 6 }; float B[2] = { 1. }; char C[3] = { 'A', '1', 'Ю' }; остальные нулевые! Если начальные значения не заданы, в ячейках находится «мусор»! !

6 Массивы Объявление: Ввод с клавиатуры: Поэлементные операции: Вывод на экран: const int N = 5; int A[N], i; const int N = 5; int A[N], i; printf("Введите 5 элементов массива:\n"); for( i=0; i < N; i++ ) { printf ("A[%d] = ", i ); scanf ("%d", & A[i] ); } printf("Введите 5 элементов массива:\n"); for( i=0; i < N; i++ ) { printf ("A[%d] = ", i ); scanf ("%d", & A[i] ); } A[0] = A[1] = A[2] = A[3] = A[4] = for( i=0; i < N; i++ ) A[i] = A[i]*2; printf("Результат:\n"); for( i=0; i < N; i++ ) printf("%4d", A[i]); printf("Результат:\n"); for( i=0; i < N; i++ ) printf("%4d", A[i]); Результат:

7 Программа #include main() { const int N = 5; int A[N], i; // ввод элементов массива // обработка массива // вывод результата getch(); } #include main() { const int N = 5; int A[N], i; // ввод элементов массива // обработка массива // вывод результата getch(); } Задача: ввести с клавиатуры массив из 5 элементов, умножить все элементы на 2 и вывести полученный массив на экран. на предыдущих слайдах

Программирование на языке Си Часть II Тема 2. Максимальный элемент массива

9 Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Псевдокод: // считаем, что элемент A[0] – максимальный for ( i=1; i < N; i++ ) if ( A[i] > максимального ) // запомнить новый максимальный элемент A[i] // считаем, что элемент A[0] – максимальный for ( i=1; i < N; i++ ) if ( A[i] > максимального ) // запомнить новый максимальный элемент A[i] Почему цикл от i=1 ? ?

10 Максимальный элемент max = A[0]; // пока A[0]– максимальный iMax = 0; for ( i=1; i < N; i++ ) // проверяем остальные if ( A[i] > max ) { // нашли новый max = A[i]; // запомнить A[i] iMax = i; // запомнить i } max = A[0]; // пока A[0]– максимальный iMax = 0; for ( i=1; i < N; i++ ) // проверяем остальные if ( A[i] > max ) { // нашли новый max = A[i]; // запомнить A[i] iMax = i; // запомнить i } Дополнение: как найти номер максимального элемента? Как упростить? ? По номеру элемента iMax всегда можно найти его значение A[iMax]. Поэтому везде меняем max на A[iMax] и убираем переменную max. A[iMax]

Программирование на языке Си Часть II Тема 3. Обработка массивов © К.Ю. Поляков,

12 Реверс массива Задача: переставить элементы массива в обратном порядке (выполнить инверсию). Алгоритм: поменять местами A[0] и A[N-1], A[1] и A[N-2], … Псевдокод: 35…97 79…53 01…N-2N-1 01…N-2N-1 for ( i = 0; i < N; i++ ) // поменять местами A[i] и A[N-1-i] for ( i = 0; i < N; i++ ) // поменять местами A[i] и A[N-1-i] сумма индексов N-1 Что неверно? ? ; i++ ) N / 2N / 2

13 Как переставить элементы? Задача: поменять местами содержимое двух чашек. Задача: поменять местами содержимое двух ячеек памяти ? ? x y c c = x; x = y; y = c; c = x; x = y; y = c; x = y; y = x; x = y; y = x; Можно ли обойтись без c ? ?

14 Программа main() { const int N = 10; int A[N], i, c; // заполнить массив // вывести исходный массив for ( i = 0; i < N/2; i++ ) { c = A[i]; A[i] = A[N-1-i]; A[N-1-i] = c; } // вывести полученный массив }

15 Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего. Алгоритм: A[0]=A[1]; A[1]=A[2];… A[N-2]=A[N-1]; Цикл: 3581… …N-2N-1 581…973 for ( i = 0; i < N-1; i ++) A[i] = A[i+1]; Что неверно? ? почему не N ?

16 Программа main() { const int N = 10; int A[N], i, c; // заполнить массив // вывести исходный массив c = A[0]; for ( i = 0; i < N-1; i ++) A[i] = A[i+1]; A[N-1] = c; // вывести полученный массив }