Thursday, January 2, 2020

ЛР7 Программирование (1.4.2 В22) - IV

LabWork7
📑 IT Online Mini Campus. Task 1.4.2
IV. Программа SageMath (Python)
Массивы для работы цикла генерируются самой программой случайным образом, некорректные данные не появятся.

N=10; X,Y,T=[],[],[]; M=0
for i in [0..N-1]:
    X.append(round(random()*100-50,2))
    Y.append(round(random()*100-50,2))
    T.append(max(X[i],Y[i]))
    M+=int(T[i]==X[i])
print('X: %s'%X); print('Y: %s'%Y) 
print('T: %s'%T)
print('Number of coincidences: %d'%M)


ЛР7 Программирование (1.4.2 В22) - III

LabWork7

III. Программа Pascal
Program Lab7;
var X,Y,T: array [0..1000] of real;
    SX,SY: string;
    N,M,i: integer;
begin
    writeln('Лаб.7':38);
    write('Количество элементов N: '); 
    readln(N); writeln(N:3);
    readln(SX); writeln('Массив X: '); writeln(SX);
    readln(SY); writeln('Массив Y: '); writeln(SY);
    i:=1; M:=0; writeln('Массив T: ');
    while i<N+1 do
    begin
        val(copy(SX,1,pos(' ',SX)-1),X[i-1]);
        val(copy(SY,1,pos(' ',SY)-1),Y[i-1]);
        if i=N then
        begin
            val(SX,X[i-1]); val(SY,Y[i-1]);
        end;
        if ((X[i-1]<>0) and (Y[i-1]<>0)) or ((X[i-1]=0) and (SX[1]='0')) or ((Y[i-1]=0) and (SY[1]='0')) then
        begin
            if X[i-1]>Y[i-1] then
            begin
                T[i-1]:=X[i-1]; M:=M+1;
            end
            else T[i-1]:=Y[i-1];
        end
        else
        begin
            writeln('Данные не корректны'); break;
        end;
        write(T[i-1]:5:2); write(' ');
        delete(SX,1,pos(' ',SX)); delete(SY,1,pos(' ',SY));
        i:=i+1;
    end;
    writeln(); 
    writeln('Количество элементов X в Т: '); 
    writeln(M); 
end.

STDIN
10
0.86 -13.29 44.56 10.19 -38.8 35.38 -41.66 38.75 -1.73 -40.66
-19.52 -31.89 6.07 32.04 32.16 39.84 -29.39 6.35 45.79 -43.54


ЛР7 Программирование (1.4.2 В22) - II

LabWork7
II. Алгоритм

ЛР7 Программирование (1.4.2 В22) - I

LabWork7
I. Внешняя спецификация
1. Условие задачи
Разработать алгоритм и программу обработки одномерных массивов, используя единственный цикл:
  • при заданных X1,X2,...,XN и Y1,Y2,...YN получить массив T1,T2,...,TN, элементы которого получают значения по правилу Ti=max(Xi,Yi), и подсчитать, сколько элементов Ti получило значения Xi.

2. Состав данных
Тип
Имя
Смысл
Структура
Исходные данные
символ
SX
строка для считывания элементов массива Х, разделенных пробелом
строка
символ
SY
строка для считывания элементов массива Y, разделенных пробелом
строка
целый
N
количество элементов
простая переменная
Выходные данные
вещественный
T
массив элементов, сформированный по правилу: Ti=max(Xi,Yi)
одномерный массив
целый
M
количество элементов массива X, включенных в состав массива T
простая переменная
Промежуточные данные
целый
i
номер элемента массива
простая переменная
вещественный
X
массив данных
одномерный массив
вещественный
Y
массив данных
одномерный массив

3. Форма ввода
1 3
<N>
1 N*6-1
<X1 X2 ... XN >
1 N*6-1
<Y1 Y2 ... YN >

4. Выходная форма
1 3
<N>
1 N*6-1
<X1 X2 ... XN >
1 N*6-1
<Y1 Y2 ... YN >
1 5
<T1 >

...
1 5
<TN >
1 3
<M>

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

if ((X[i-1]<>0) and (Y[i-1]<>0)) or ((X[i-1]=0) and (SX[1]='0')) or ((Y[i-1]=0) and (SY[1]='0')) then

Данная строка программы проверяет, является ли нулевым очередной элемент массива X или Y. Если элемент в исходном массиве был ненулевой, а считанное значение равно нулю, то данные были введены некорректно.
Задача решена при условии ввода массива одной строкой.

7. Аномалии
Ошибки программы возможны при некорректном вводе данных пользователем.
Сообщение об ошибке выдается программой в случае невыполнения указанного условия.

8. Тесты
1) с положительным результатом

10
0.86 -13.29 44.56 10.19 -38.8 35.38 -41.66 38.75 -1.73 -40.66
-19.52 -31.89 6.07 32.04 32.16 39.84 -29.39 6.35 45.79 -43.54

2) с отрицательным результатом

8
29.94, 5.36 -46.24  -10.96  
5.96  -19.75 a