Описание действий задачи.




Задача 1.

Каждый элемент строки разделить на предварительно рассчитанную сумму элементов этой строки.

 

Действие программы.

Пользователь заполняет матрицу 5 на 5. Затем программа выводит исходный вид матрицы с помощью двух циклов с параметром. После, запускается 2 новых цикла с параметром, где программа считает сумму строки, затем делит все элементы строки на сумму строки и выводит на экран.

 

Назначение переменных

Переменная Тип Назначение
a real Двумерный массив, где хранятся введенные значения
i, j integer Счетчик цикла
sum real Сумма строки


Текст программы.

program lab06_01;

 

Const

n = 5;

m = 5;

 

Type

matr1 = array [1..n, 1..m] of real;

 

Var

a: matr1; // Матрица

i, j: integer; // Счетчик цикла

sum: real; // Сумма всех элементов данной строки

 

Begin

writeln('Задача программы: Каждый элемент строки разделить на предварительно рассчитанную сумму элементов этой строки.');

for i:= 1 to n do

Begin

writeln('Новая строка (',i,'): ');

for j:= 1 to m do

Begin

write(j,') ');readln(a[i, j]);

end;

end;

 

//Вывод исходной матрицы на экран

writeln('Исходная матрица:');

for i:= 1 to n do

Begin

write(i,':');

for j:= 1 to m do

Begin

write(a[i,j]:6);

end;

writeln;

end;

 

//Обработка и вывод новой матрицы

writeln('Отработанная матрица:');

for i:= 1 to n do

Begin

sum:= 0;

write(i, ':'); // Вывод номера строки

// Сумма всех элементов в строке

for j:= 1 to m do

sum:= sum + a[i,j];

// Делим каждый элемент в строке

for j:= 1 to m do

Begin

a[i,j]:= a[i,j] / sum;

write(a[i,j]:6:2);

end;

writeln(' (', sum:0:2, ')');

end;

 

writeln;

write('Программа закончила свою работу...'); readln;

end.


Тестирование программы

Задача программы: Каждый элемент строки разделить на предварительно рассчитанную сумму элементов этой строки.

Новая строка (1):

1) 5

2) 4

3) 6

4) 5

5) 4

Новая строка (2):

1)

2) 2

3) 3

4) 4

5) 5

Новая строка (3):

1) 6

2) 5

3) 4

4) 3

5) 2

Новая строка (4):

1) 9

2) 8

3) 7

4) 6

5) 5

Новая строка (5):

1) 8

2) 7

3) 6

4) 5

5) 4

Исходная матрица:

1: 5 4 6 5 4

2: 1 2 3 4 5

3: 6 5 4 3 2

4: 9 8 7 6 5

5: 8 7 6 5 4

Отработанная матрица:

1: 0.21 0.17 0.25 0.21 0.17 (24.00)

2: 0.07 0.13 0.20 0.27 0.33 (15.00)

3: 0.30 0.25 0.20 0.15 0.10 (20.00)

4: 0.26 0.23 0.20 0.17 0.14 (35.00)

5: 0.27 0.23 0.20 0.17 0.13 (30.00)

 

Программа закончила свою работу...

 


Задача 2.

В двумерном массиве целых чисел заменить все элементы, меньшие суммы элементов первой строки на эту сумму.

 

Работа программы

1) Матрица заполняется с клавиатуры пользователя, или рандомно.

2) При вводе значений в первую строку, программа сохраняет сумму.

3) Выводится исходная и обработанная матрица. Перед выводом обработанного значения, условный оператор проверяет, не меньше ли суммы первой строки, в случае успеха – меняет значение на сумму.

Назначение переменных

Переменная Тип Назначение
a integer Двумерный массив. (заполняется с клавиатуры, либо рандомом)
i, j integer Счетчик цикла
sum integer Сумма первой строки
cRandom char Заполнить массив рандомными числами? (вводится с клавиатуры)

Блок схема.


Текст программы.

program lab06_02;

 

Const

n = 5;

m = 5;

Var

a: array [1..n,1..m] of integer;

i,j: integer;

sum: integer;

cRandom: char;

 

Begin

writeln('Задача программы: В двумерном массиве целых чисел заменить все элементы, меньшие суммы элементов первой строки на эту сумму.');

write('Заполнить матрицу автоматически? (y или n)'); readln(cRandom);

randomize;

 

// Заполнение первой строки матрицы

for j:= 1 to m do

Begin

write('[1,',j,'] ');

if cRandom = 'y' then

Begin

a[1,j]:= random(10);

writeln(a[1,j]);

End

else readln(a[1, j]);

sum:= sum + a[1,j];

end;

// Заполнение остальных строк матрицы

for i:= 2 to n do

Begin

for j:= 1 to m do

Begin

write('[',i,',',j,'] ');

if cRandom = 'y' then

Begin

a[i,j]:= random(100);

writeln(a[i,j]);

End

else readln(a[i, j]);

end;

end;

 

writeln('Сумма первой строки: ', sum);

 

//Вывод исходной матрицы на экран

writeln('Исходная матрица:');

for i:= 1 to n do

Begin

for j:= 1 to m do write(a[i,j]:6);

writeln;

end;

 

//Обработка и вывод новой матрицы

writeln('Обработанная матрица:');

for i:= 1 to n do

Begin

for j:= 1 to m do

Begin

if a[i,j] < sum then a[i,j]:= sum;

write(a[i,j]:6);

end;

writeln;

end;

end.


Тестирование программы

Задача программы: В двумерном массиве целых чисел заменить все элементы, меньшие суммы элементов первой строки на эту сумму.

Заполнить матрицу автоматически? (y или n)y

[1,1] 7

[1,2] 0

[1,3] 8

[1,4] 2

[1,5] 7

[2,1] 6

[2,2] 93

[2,3] 24

[2,4] 27

[2,5] 85

[3,1] 54

[3,2] 54

[3,3] 26

[3,4] 19

[3,5] 61

[4,1] 8

[4,2] 75

[4,3] 82

[4,4] 80

[4,5] 97

[5,1] 56

[5,2] 93

[5,3] 25

[5,4] 78

[5,5] 83

Сумма первой строки: 24

Исходная матрица:

7 0 8 2 7

6 93 24 27 85

54 54 26 19 61

8 75 82 80 97

56 93 25 78 83

Обработанная матрица:

24 24 24 24 24

24 93 24 27 85

54 54 26 24 61

24 75 82 80 97

56 93 25 78 83


Задача 3.

Дана вещественная матрица размерности n * m. Удалить k столбец матрицы.

 

Описание действий задачи.

1) Матрица заполняется с клавиатуры пользователя, или рандомно.

2) Заполненная матрица выводится на экран с помощью циклов с параметром и пользователь вводит номер столбца, который нужно удалить.

3) Столбец удаляется при помощи цикла и выводится измененная матрица на экран

Назначение переменных

Переменная Тип Назначение
a real Двумерный массив. (Заполняется с клавиатуры, либо рандомом)
i, j integer Счетчик цикла
n, m integer Длина и ширина матрицы. (Вводится с клавиатуры)
k integer Нужен для удаления столбца (Вводится с клавиатуры)

Блок схема.


Текст программы.

program lab06_03;

 

Var

a: array [1..100,1..100] of real;

i,j: integer;

k, n, m: integer;

cRandom: char;

 

Begin

writeln('Дана вещественная матрица размерности n * m. Удалить k столбец матрицы.');

write('Введите два значения через пробел - n и m (макс: 100): '); readln(n,m);

write('Заполнить матрицу автоматически? (y или n)'); readln(cRandom);

randomize;

 

// Заполнение остальных строк матрицы

for i:= 1 to n do

Begin

for j:= 1 to m do

Begin

write('[',i,',',j,'] ');

if cRandom = 'y' then

Begin

a[i,j]:= random(100);

writeln(a[i,j]);

End

else readln(a[i, j]);

end;

end;

 

writeln('Исходная матрица:');

for i:= 1 to n do

Begin

for j:= 1 to m do

write(a[i,j]:4);

writeln;

end;

 

write('Какой столбец удалить? (Макс ',m,')'); readln(k);

 

for i:= 1 to n do

Begin

a[i,k]:= 0;

end;

 

writeln('Обработанная матрица:');

for i:= 1 to n do

Begin

for j:= 1 to m do

write(a[i,j]:4);

writeln;

end;

end.
Тестирование

Дана вещественная матрица размерности n * m. Удалить k столбец матрицы.

Введите два значения через пробел - n и m (макс: 100): 10

Заполнить матрицу автоматически? (y или n)y

[1,1] 62

[1,2] 68

[10,10] 5

Исходная матрица:

62 68 39 99 10 50 2 64 74 30

37 95 10 88 88 99 53 44 33 31

93 65 46 47 46 7 9 45 97 69

47 31 63 23 66 89 1 85 76 63

18 72 16 25 11 57 6 55 42 60

54 67 73 52 90 97 22 92 52 3

41 56 66 5 82 6 31 87 21 99

97 68 67 70 12 21 48 20 35 89

0 53 3 36 14 79 57 11 33 68

66 9 32 73 22 61 5 11 43 5

Какой столбец удалить? (Макс 10)2

Обработанная матрица:

62 0 39 99 10 50 2 64 74 30

37 0 10 88 88 99 53 44 33 31

93 0 46 47 46 7 9 45 97 69

47 0 63 23 66 89 1 85 76 63

18 0 16 25 11 57 6 55 42 60

54 0 73 52 90 97 22 92 52 3

41 0 66 5 82 6 31 87 21 99

97 0 67 70 12 21 48 20 35 89

0 0 3 36 14 79 57 11 33 68

66 0 32 73 22 61 5 11 43 5


Задача 4.

Дважды монотонный. Массив чисел А[1:m, 1:n] упорядочен по £ по строкам и по столбцам, то есть

A[i, 1] £ A[i, 2] £... при всех I = 1,..., m,

A[1,j] £ А[2,j] £... при всех j = 1,..., n.

Найти элемент массива, равный заданному числу х, и напечатать НЕТ, если такого элемента не окажется.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-09-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: