Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Алгоритмы действий над элементами двумерного массива






Задача 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, заполненный целыми числами. Определить, есть ли в данном массиве столбец, в котором имеются одинаковые элементы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.