Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Алгоритмы действий над элементами двумерного массива
Задача 1. В течение недели измерялась температура три раза в день: утром, в обед и вечером. Показания записали в таблицу размерностью 7х3. Определить среднюю температуру за каждый день. USES Crt; VAR T: ARRAY[0..7, 0..3] OF INTEGER; I, J: BYTE; S: INTEGER; ST: REAL; A: STRING[12]; BEGIN ClrScr; WriteLn; { Заполнение таблицы } FOR I: =1 TO 7 DO Begin WriteLn(' Введите показания за ', I, ' день'); FOR J: =1 TO 3 DO Begin CASE J OF 1: A: =' Утром - '; 2: A: =' В обед - '; 3: A: =' Вечером - '; End; Write(A); ReadLn(T[I, J]); End; End; WriteLn; { Подсчет средней температуры за каждый день } FOR I: =1 TO 7 DO Begin S: =0; FOR J: =1 TO 3 DO S: =S+T[I, J]; ST: =S/3; WriteLn('Средняя температура за ', I, ' день = ', ST: 4: 1); End; END. Задача 2. Группа из 10 учащихся сдавала экзамен по 4 предметам. Результаты экзаменов записали в таблицу размерностью 10х4. Определить средний балл по каждому предмету. USES Crt; VAR E: ARRAY[0..10, 0..4] OF INTEGER; I, J: BYTE; S: INTEGER; SB: REAL; A: STRING[16]; BEGIN ClrScr; WriteLn; { Заполнение таблицы } FOR I: =1 TO 10 DO Begin WriteLn(' Введите оценки ', I, ' учащегося'); FOR J: =1 TO 4 DO Begin CASE J OF 1: A: =' Математика - '; 2: A: =' Физика - '; 3: A: =' Химия - '; 4: A: =' Информатика - '; End; Write(A); ReadLn(E[I, J]); End; End; WriteLn; { Подсчет среднего балла по каждому предмету. Циклы меняются местами.' } FOR J: =1 TO 4 DO Begin S: =0; FOR I: =1 TO 10 DO S: =S+E[I, J]; SB: =S/10; CASE J OF 1: A: =' математике - '; 2: A: =' физике - '; 3: A: =' химии - '; 4: A: =' информатике - '; End; WriteLn(' Средний балл по ', A, ' = ', SB: 4: 1); End; END. Задача 3. Поменять местами значения К-ого и Р-ого столбцов матрицы В, размерностью MхM, заполненную случайным образом. USES Crt; LABEL M1; CONST M=8; VAR A: ARRAY[0..M, 0..M] OF INTEGER; I, J, K, P: BYTE; PP: INTEGER; BEGIN ClrScr; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения двумерного массива'); FOR I: =1 TO M DO Begin FOR J: =1 TO M DO Begin A[I, J]: =Random(23); Write(A[I, J]: 3); End; WriteLn; End; WriteLn; WriteLn(' Введите номера столбцов, которые необходимо поменять'); WriteLn(' Их значения не должны превышать ', M); M1: ReadLn(K, P); IF (K> M) OR (P> M) THEN GOTO M1; { Перестановка значений введенных столбцов } FOR I: =1 TO M DO Begin PP: =A[I, K]; A[I, K]: =A[I, P]; A[I, P]: =PP; End; WriteLn(' Измененный двумерный массив'); FOR I: =1 TO M DO Begin FOR J: =1 TO M DO Begin Write(A[I, J]: 3); End; WriteLn; End; END. Задача 4. Дан двумерный массив размерностью 6х3, заполненный целыми числами. Подсчитать количество строк, в которых первый элемент строки меньше нуля. USES Crt; VAR M: ARRAY[0..6, 0..3] OF INTEGER; I, J, K: BYTE; BEGIN ClrScr; Randomize; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения двумерного массива'); FOR I: =1 TO 6 DO Begin FOR J: =1 TO 3 DO Begin M[I, J]: =Random(23)-10; Write(M[I, J]: 3); End; WriteLn; End; WriteLn; K: =0; { Подсчет количества строк, в которых первый элемент строки меньше 0 } FOR I: =1 TO 6 DO IF M[I, 1]< 0 THEN Inc(K); Write(' Количество строк, в которых первый элемент строки меньше 0 = ', K); END. Задача 5. Дан двумерный массив размерностью Nх2N, заполненный целыми числами. Найти среднее арифметическое элементов, имеющие четные номера строк. USES Crt; CONST N=5; VAR H: ARRAY[0..N, 0..2*N] OF INTEGER; I, J, K: BYTE; S: LongInt; SA: REAL; BEGIN ClrScr; Randomize; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения элементов двумерного массива'); WriteLn; FOR I: =1 TO N DO Begin FOR J: =1 TO 2*N DO Begin H[I, J]: =Random(23); Write(H[I, J]: 3); End; WriteLn; End; WriteLn; { Нахождение суммы значений элементов, имеющих четные номера строк } I: =2; K: =0; WHILE I< =N DO Begin FOR J: =1 TO 2*N DO Begin S: =S+H[I, J]; Inc(K); End; I: =I+2; End; SA: =S/K; Write(' Среднее арифметическое элементов, имеющих четные номера строк =', SA: 4: 1); END. Задача 6. Дан двумерный массив размерностью NхM, заполненный случайным образом. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов. USES Crt; CONST N=6; M=8; VAR A: ARRAY[0..N, 0..M] OF INTEGER; I, J, KO, KP, FL: BYTE; BEGIN ClrScr; Randomize; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения элементов двумерного массива'); FOR I: =1 TO N DO Begin FOR J: =1 TO M DO Begin A[I, J]: =Random(20)-10; Write(A[I, J]: 3); End; WriteLn; End; WriteLn; FOR J: =1 TO M DO Begin KP: =0; KO: =0; FOR I: =1 TO N DO Begin IF A[I, J]> 0 THEN Inc(KP); IF A[I, J]< 0 THEN Inc(KO); End; IF KP=KO THEN Begin WriteLn(' В ', J, ' столбце равное количество положительных и отрицательных элементов'); FL: =1; End; End; IF FL=0 THEN WriteLn(' Нет столбцов, в которых равное количество положительных и отрицательных элементов'); END. Задача 7. Дан двумерный массив размерностью NхM, заполненный случайным образом. Определить, есть ли в данном массиве строка, в которой ровно два отрицательных элемента. USES Crt; CONST N=6; M=8; VAR A: ARRAY[0..N, 0..M] OF INTEGER; I, J, K, FL: BYTE; BEGIN ClrScr; Randomize; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения элементов двумерного массива'); FOR I: =1 TO N DO Begin FOR J: =1 TO M DO Begin A[I, J]: =Random(40)-15; Write(A[I, J]: 3); End; WriteLn; End; WriteLn; FL: =0; { Определение строк, в которых ровно два отрицательных элемента } FOR I: =1 TO N DO Begin K: =0; FOR J: =1 TO M DO IF A[I, J]< 0 THEN Inc(K); IF K=2 THEN Begin WriteLn('В ', I, ' строке ровно два отрицательных элемента'); FL: =1; End; End; IF FL=0 THEN Writeln(' Нет строк, в которых ровно два отрицательных элемента'); END. Задача 8. Дан двумерный массив размерностью 4х6 и величина N. Подсчитать количество строк, в которых есть элемент равный N. USES Crt; LABEL M1; VAR M: ARRAY[0..4, 0..6] OF INTEGER; I, J, K: BYTE; N: INTEGER; BEGIN ClrScr; Randomize; { Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы } WriteLn(' Значения элементов двумерного массива'); FOR I: =1 TO 4 DO Begin FOR J: =1 TO 6 DO Begin M[I, J]: =Random(50); Write(M[I, J]: 3); End; WriteLn; End; WriteLn; Write(' Введите значение величины N '); ReadLn(N); K: =0; { Нахождение строк, в которых имеется величина N } FOR I: =1 TO 4 DO Begin FOR J: =1 TO 6 DO IF M[I, J]=N THEN Begin K: =K+1; GOTO M1; End; M1: End; WriteLn(' Количество строк, в которых есть элемент равный ', N, ' = ', K); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Найти произведение элементов К-го и Р-го столбцов квадратной матрицы, размерностью 6х6. 2. Дан двумерный массив размерностью 5х3, заполненный целыми числами. Найти произведение элементов нечетных строк матрицы. 3. Дан двумерный массив размерностью 5х6, заполненный целыми числами и величина К. Найти количество элементов, равных К и их сумму. 4. Дан двумерный массив размерностью NхM, заполненный целыми числами. Определить, есть ли в данном массиве столбец, в котором имеются одинаковые элементы.
|