
4405481e530f17a368d95a49ac912cfa.ppt
- Количество слайдов: 17
Табличный способ организации данных. Составление программ.
Алгоритмы поиска минимального и максимального элементов массива. Задача 1. В массиве хранится температура за февраль. Номер элемента массива сответствует дню месяца. Составить алгоритм отвечающий на вопрос «Сколько было самых холодных дней в феврале и какая температура была в эти дни? » PROGRAM TASK 1; USES CRT; VAR FEV: ARRAY[1. . 28] OF INTEGER; MIN, KMIN, I: INTEGER; BEGIN WRITELN(‘Программу составил Иванов Федя’); WRITELN(‘Сколько самых холодных дней в феврале. ’);
{ ЗАПОЛНЕНИЕ МАССИВА И ЕГО ПЕЧАТЬ} FOR I: =1 TO 28 DO BEGIN FEV[I]: =RAMDOM(40)-35; WRITE(FEV[I], ’ ‘); END; WRITELN; { ПОИСК МИНИМАЛЬНОГО} MIN: =FEV[1]; FOR I: =1 TO 28 DO IF MIN>FEV[I] THEN MIN: =FEV[I]; { ПОДСЧЕТ КОЛИЧЕСТВА МИНИМАЛЬНЫХ} KMIN: =0; FOR I: =1 TO 28 DO IF MIN=FEV[I] THEN KMIN: =KMIN+1; WRITELN(‘ САМАЯ НИЗКАЯ ТЕМПЕРАТУРА : ‘, MIN); WRITELN(‘ Количество самых холодных дней : ‘, KMIN); END.
Задача 2. В массиве хранится температура за февраль. Номер элемента массива сответствует дню месяца. Составить алгоритм распечатывающий список самых холодных дней в феврале. PROGRAM TASK 1; USES CRT; VAR FEV: ARRAY[1. . 28] OF INTEGER; MIN, I: INTEGER; BEGIN WRITELN(‘Программу составил Иванов Федя’); WRITELN(‘Список самых холодных дней в феврале. ’); { ЗАПОЛНЕНИЕ МАССИВА И ЕГО ПЕЧАТЬ} FOR I: =1 TO 28 DO BEGIN FEV[I]: =RAMDOM(40)-35; WRITE(FEV[I], ’ ‘); END; WRITELN;
{ ПОИСК МИНИМАЛЬНОГО} MIN: =FEV[1]; FOR I: =1 TO 28 DO IF MIN>FEV[I] THEN MIN: =FEV[I]; { ПЕЧАТЬ СПИСКА СЫМЫХ ХОЛОДНЫХ ДНЕЙ} WRITELN(‘САМЫЕ ХОЛОДНЫЕ ДНИ ФЕВРАЛЯ: ’); FOR I: =1 TO 28 DO IF MIN=FEV[I] THEN WRITE(I, ’ ‘); END.
Упорядочивание элементов массива (сортировка) Сортировка методом пузырька. N –кол-во элементов массива. …. . -кол-во пар. …. . -кол-во проходов. первый вариант For i: =1 to n-1 do For j: =1 to n-1 do │ If mas[i]>(<)mas[i+1] then {если пара не упорядочена │ Begin │ c: =mas[i]; { поменять их местами} │ Проход mas[i]: =mas[i+1]; │ mas[i+1]: =c; │ end; │
Вариант второй repeat b: =true; {установка флага упорядоченности массива} For j: =1 to n-1 do │ If mas[i]>(<)mas[i+1] then │ Begin │ c: =mas[i]; │ Проход mas[i]: =mas[i+1]; │ mas[i+1]: =c; │ b: =false; {сброс флага} │ end; until b;
Третий вариант: n 1: =n; {установка верхней границы массива} repeat b: =true; For j: =1 to n 1 -1 do │ If mas[i]>(<)mas[i+1] then │ Begin │ c: =mas[i]; │ Проход mas[i]: =mas[i+1]; │ mas[i+1]: =c; │ b: =false; │ end; n 1: =n 1 -1; {уменьшение верхней границы} until b;
Сортировка методом простого обмена К- первый неупорядоченный элемент. for k: =1 to n-1 do begin min: =mas[k]; for j: =k to n do if min>mas[j] then поиск минимального begin элемента в min: =mas[j]; неупорядоченной части nk: =j; массива end; mas[nk]: =mas[k]; mas[k]: =min; end; обмен минимального элемента с первым элементом неупорядоченной части
Сортировка методом простой вставки а-(integer) вспомогательная переменная. Var mas: array[o. . n] of integer; …. …. for i: =2 to n do begin a: =mas[i]; k: =i-1; mas[0]: =a; while a<mas[k] do begin mas[k+1]: =mas[k]; k: =k-1; end; mas[k]: =a; end;
Прямоугольные таблицы (двумерные массивы)
НАЙТИ КОЛ-ВО ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ В КАЖДОЙ СТРОКЕ МАССИВА А. РЕЗУЛЬТАТЫ ПРЕДСТАВИТЬ В ВИДЕ ОДНОМЕРНОГО МАССИВА В. В МАССИВЕ В НАЙТИ MIN, MAX. PROGRAM MAS 1; USES CRT; CONST N=5; M=6; VAR B: ARRAY[1. . N] OF INTEGER; A: ARRAY[1. . N, 1. . M] OF INTEGER; I, J, K, MIN, MAX: INTEGER; {ЗАПОЛНЕНИЕ И ПЕЧАТЬ МАССИВА А. } PROCEDURE ZAP; VAR I, J: INTEGER; BEGIN FOR I: =1 TO N DO BEGIN FOR J: =1 TO M DO BEGIN A[I, J]: =RANDOM(89)-30; WRITE(A[I, J], ' '); END; WRITELN; END;
BEGIN CLRSCR; TEXTCOLOR(3); WRITELN('ИСХОДНЫЙ МАССИВ : '); ZAP; WRITELN; { ПОДСЧЕТ КОЛ-ВА ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ В КАЖДОЙ СТРОКЕ. ЗАПОЛНЕНИЕ МАССИВА В. } FOR I: =1 TO N DO BEGIN K: =0; FOR J: =1 TO N DO IF A[I, J]>0 THEN K: =K+1; B[I]: =K; END; WRITELN('ЛИНЕЙНЫЙ МАССИВ В : '); FOR I: =1 TO N DO WRITE(B[I], ' '); WRITELN; MIN: =B[1]; MAX: =B[1]; FOR I: =1 TO N DO BEGIN IF MIN>B[I] THEN MIN: =B[I]; IF MAX<B[I] THEN MAX: =B[I]; END; WRITELN('MIN=', MIN, ' MAX=', MAX); READLN; END.
НАЙТИ КОЛ-ВО ЭЛЕМЕНТОВ МАССИВА А, ЗНАЧЕНИЯ КОТОРЫХ МЕНЬШЕ ИЛИ РАВНЫ МИНИМАЛЬНОМУ ЭЛЕМЕНТУ 1 -ОЙ СТРОКИ МАССИВА. PROGRAM MAS 2; USES CRT; CONST N=5; M=6; VAR A: ARRAY[1. . N, 1. . M] OF INTEGER; I, J, K, MIN: INTEGER; {ЗАПОЛНЕНИЕ И ПЕЧАТЬ. } PROCEDURE ZAP; VAR I, J: INTEGER; BEGIN FOR I: =1 TO N DO BEGIN FOR J: =1 TO M DO BEGIN A[I, J]: =RANDOM(89)+10; WRITE(A[I, J], ' '); END; WRITELN; END;
BEGIN RANDOMIZE; CLRSCR; TEXTCOLOR(3); WRITELN('ИСХОДНЫЙ МАССИВ : '); ZAP; WRITELN; { ПОИСК МИНИМАЛЬНОГО ЭЛЕМЕНТА В ПЕРВОЙ СТРОКЕ. } MIN: =A[1, 1]; FOR J: =1 TO M DO IF MIN>A[1, J] THEN MIN: =A[1, J]; WRITELN('В ПЕРВОЙ СТРОКЕ MIN=', MIN); {ПОДСЧЕТ НУЖНОГО КОЛ-ВА ЭЛЕМЕНТОВ. } K: =0; FOR I: =1 TO N DO FOR J: =1 TO M DO IF A[I, J]<=MIN THEN K: =K+1; WRITELN('КОЛ-ВО ЭЛЕМЕНТОВ РАВНО ', K); READLN; END.
ДАН ПРЯМОУГОЛЬНЫЙ МАССИВ А И НЕКОТОРОЕ ЧИСЛО С. ПРЕОБРАЗОВАТЬ КАЖДУЮ СТРОКУ, РАЗДЕЛИВ ЭЛЕМЕНТ СТРОКИ НА СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ ТЕХ ЭЛЕМЕНТОВ, КОТОРЫЕ ПО ВЕЛИЧИНЕ БОЛЬШЕ С. PROGRAM MAS 12; USES CRT; CONST N=5; M=6; VAR A: ARRAY[1. . N, 1. . M] OF REAL; I, J, C, K: INTEGER; S, CR: REAL; { ЗАПОЛНЕНИЕ} PROCEDURE ZAP; VAR I, J: INTEGER; BEGIN FOR I: =1 TO N DO FOR J: =1 TO M DO A[I, J]: =RANDOM(89)+10; END; {ПЕЧАТЬ} PROCEDURE PECH; VAR I, J: INTEGER; BEGIN FOR I: =1 TO N DO BEGIN FOR J: =1 TO M DO WRITE(A[I, J]: 4: 2, ' '); WRITELN; END;
BEGIN RANDOMIZE; CLRSCR; TEXTCOLOR(3); WRITE('ВВЕДИ С (ДВУЗНАЧНОЕ) : '); READLN(C); WRITELN('ИСХОДНЫЙ МАССИВ : '); ZAP; PECH; FOR I: =1 TO N DO BEGIN S: =0; K: =0; FOR J: =1 TO M DO IF A[I, J]>C THEN BEGIN S: =S+A[I, J]; K: =K+1; END; IF K<>0 THEN BEGIN CR: =S/K; FOR J: =1 TO M DO A[I, J]: =A[I, J]/CR; END; WRITELN('ПРЕОБРАЗОВАННЫЙ МАССИВ: '); PECH; WRITELN; READLN; END.
4405481e530f17a368d95a49ac912cfa.ppt