1. Условие задачи
Разработать алгоритм и программу нисходящим способом, предполагая заданной матрицу А из 5 строк и 5 столбцов или одномерные массивы указанной длины.
Если в последовательности С1, С2, …, С5 имеются равные элементы, изменить значения всех ее элементов по правилу:
Ci:=Ci+Aii.
2. Состав данных
Тип
|
Имя
|
Смысл
|
Структура
|
Исходные данные
|
символ
|
SC
|
строка элементов последовательности С, разделенных пробелом
|
строка
|
символ
|
SА
|
строка для считывания элементов текущей строки матрицы А, разделенных пробелом
|
строка
|
Выходные данные
|
символ
|
SC
|
строка элементов последовательности С, разделенных пробелом
|
строка
|
Промежуточные данные
|
вещественный
|
C
|
исходные данные последовательности для обработки
|
одномерный массив
|
целый
|
i
|
текущее значение номера элемента последовательности
|
простая переменная
|
целый
|
j
|
текущее значение номера элемента последовательности для сравнения с элементом под номером i
|
простая переменная
|
логический
|
c1
|
переменная, означающая корректность (true) или некорректность (false) данных последовательности С или матрицы А
|
простая переменная
|
логический
|
c2
|
переменная, означающая наличие (true) или отсутствие (false) одинаковых элементов последовательности С
|
простая переменная
|
вещественный
|
CN
|
последовательность С, изменненная в соответствии с условием задачи
Ci:=Ci+Aii
|
одномерный массив
|
символ
|
st
|
текущий элемент последовательности CN, сохраненный в виде строки
|
строка
|
символ
|
SCN
|
строка для элементов получившейся последовательности СN, разделенных пробелом
|
строка
|
3. Форма ввода
1 5
<С1>
|
...
|
1 5
<С5>
|
1 5
<A11>
|
...
|
1 5
<A15>
|
...
|
1 5
<A51>
|
...
|
1 5
<A55>
|
4. Выходная форма
1 5
<С1>
|
...
|
1 5
<С5>
|
1 5
<A11>
|
...
|
1 5
<A15>
|
...
|
1 5
<A51>
|
...
|
1 5
<A55>
|
1 5
<С1>
|
...
|
1 5
<С5>
|
5. / 6. Проработка фрагментов программы
Значение суммы соответствующих элементов двух массивов существует для любых вещественных чисел. Сравнение также можно выполнить для любой пары вещественных чисел.
Проверки дополнительных условий для указанных действий не требуется.
Для считывания строк данных и перевода их в массивы чисел определена функция.
Полученный в результате массив содержит исходные данные и дополнительное числовое значение:
оно равно 0, если все значения корректны,
равно 1, если обнаружены нечисловые значения.
function st2ar(a:string; n:integer): ReArr;
var k: integer;
var x: real;
var ka: string;
begin
st2ar[n]:=0;
for k:=1 to n do
begin
if k=n then ka:=a else
ka:=copy(a,1,pos(' ',a)-1);
val(ka,x); delete(a,1,pos(' ',a));
if ((x<>0) or ((x=0) and (ka='0'))) then
st2ar[k-1]:=x
else
begin
st2ar[n]:=1; break;
end;
end;
end;
7. Аномалии
Ошибки программы возможны при некорректном вводе данных пользователем.
Сообщение о некорректности данных выдается программой в случае обнаружения нечисловых значений.
8. Тесты
1) с положительным результатом
0.5 0.8 0.6 0.6 0.7
-8.1 8.2 -6.6 0.97 3.8
0.028 3.8 -9.8 9.9 -1.8
-4.4 -1.8 0.79 4.1 9.2
8.3 -1.1 3.3 9.2 -4.4
6.0 2.3 9.2 8.0 8.4
0.9 0.2 0.4 0.5 0.1
7.6 6.8 -0.73 5.2 0.79
3.7 -8.3 -2.3 -6.2 9.3
4.1 5.4 -2.8 -2.0 4.4
-7.0 -7.7 9.1 3.5 8.2
-4.9 2.8 -0.90 4.7 0.60
2) с отрицательным результатом
5.1 -2.9 1.1 0.7 1.1
-12.3 7.8 -4.2 0.1 -2.8
0.4 A -11.2 -5.9 1.1
3.4 7.8 S -9.1 12.2
3.3 -8.1 -3.3 5.2 4.74
6.5 -2.3 -1.2 3.0 7.4