|
||||||||||||||||||||||||||
Структура данных. Схема алгоритма решения задачи по ГОСТ 19.701-90 ⇐ ПредыдущаяСтр 2 из 2 3 Структура данных Таблица 2 – Данные
4 Схема алгоритма решения задачи по ГОСТ 19.701-90
Рисунок 1– Графическая схема алгоритма(часть 1)
Рисунок 2– Графическая схема алгоритма (часть 2) Приложение А (обязательное) Исходный код программы
Program Вариант_50_1; { Краткое условие. Даны отсортированные в порядке убывания массивы A[20] и B[n-20]. Необходимо получить упорядоченный по убыванию массив C[n] путем слияния массивов A и B, без дальнейшей сортировки массива C. Массивы A и B вводятся с клавиатуры.}
{$APPTYPE CONSOLE} // консольная программа
uses { Объявление библиотек } SysUtils, // системная библиотека windows; // библиотека для работы с консолью
Const { Объявление констант } Dlina = 100; // максимальная длина итогового массива
Var { Объявление переменных } A: array [0..19] of integer; B: array[0..(Dlina-21)] of integer; C: array[0..(Dlina-1)] of integer; n: integer; j: 0..20; i,k: 0..Dlina; Oshibka: boolean;
Begin Try
{ Настройка параметров консоли } SetConsoleCP(1251); SetConsoleOutputCP(1251);
{ Инициализация переменных } Oshibka:= false;
{ Ввод данных }
{ Ввод длины итогового массива} write('Введите количество элементов итогового массива(20<n<=',Dlina,'):'); readln(n);
{ Проверка корректности введенной длины } if (n <= 20) or (n > Dlina) then Oshibka:=true else begin
{ Поэлементный ввод массива А } writeln('Введите массив A(поэлементно, через пробел):'); read(A[0]); i:=0; repeat Inc(i); read(A[i]); until (i >= 19) or (A[i] > A[i-1]); readln;
{ Проверка отсортированности массива A} if A[i] > A[i-1] then Oshibka:=true else begin
{ Поэлементный ввод массива В } writeln('Введите массив B(поэлементно, через пробел):'); read(B[0]); i:=0; repeat Inc(i); read(B[i]); until (i >= n-21) or (B[i] > B[i-1]); readln;
{ Проверка отсортированности массива B} if B[i] > B[i-1] then Oshibka:=true else begin
{ Получение массива C слиянием массивов A и B }
i:=0; j:=0; k:=0;
{ Заполняем массив С пока не дойдем до границы массива А или массива В (цикл A)} while (j < 20) and (k < n-20) do begin
{ Выбор i-того элемента массива C } if A[j] >= B[k] then begin C[i]:= A[j]; Inc(j); end else begin C[i]:= B[k]; Inc(k); end;
Inc(i); end;
{ Получение оставшихся(n-i) элементов массива C (цикл B1 или B2)} if j < 20 then while j < 20 do begin C[i]:= A[j]; Inc(i); Inc(j); end else while k < n-20 do begin C[i]:= B[k]; Inc(i); Inc(k); end;
{ Вывод ответа }
{ Поэлементный вывод массива C } writeln('Полученный массив C:'); for i := 0 to n-1 do write(C[i],' ');
end; end; end;
{ Главная проверка корректности данных } Except on E: Exception do Oshibka:=true end;
{ Проверка на наличие ошибок во входных данных} if Oshibka then begin writeln('Некорректные данные.'); end;
readln;
End. Приложение Б (обязательное) Тестовые наборы
Группа тестов 1
Тестовые ситуации: Наличие ответа
Тест 1.1 Тестовая ситуация: Работа с граничными значениями Исходные данные: Количество элементов итогового массива n:42 Исходный массив А: 2147483647 2000000000 437 49 47 45 43 42 41 40 10 0 -13 -15 -18 -19 -20 -2000000 -300000000 -2147483648 Исходный массив B: 48 46 44 41 40 39 10 10 0 0 -12 -14 -16 -17 -19 -21 -123456 -2000000 -300000001 -2147483628 -2147483638 -2147483647 Ожидаемый результат: Полученный массив С: 2147483647 2000000000 437 49 48 47 46 45 44 43 42 41 41 40 40 39 10 10 10 0 0 0 -12 -13 -14 -15 -16 -17 -18 -19 -19 -20 -21 -123456 -2000000 -2000000 -300000000 -300000001 -2147483628 -2147483638 -2147483647 -2147483648 Полученный результат:
Рисунок 3—Тест 1.1 Тест 1.2 Тестовая ситуация: Количество вводимых чисел больше длины массива Исходные данные: Количество элементов итогового массива n:22 Исходный массив А: 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 Исходный массив B: -3 -4 Ожидаемый результат: Полученный массив С: 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 -3 -4 Полученный результат:
Рисунок 4—Тест 1.2
Тестовые ситуации: Некорректные данные Тест 2.1 Тестовая ситуация: Некорректное значение длины массива Исходные данные: n=20 Ожидаемый результат: Некорректные данные. Полученный результат:
Рисунок 5—Тест 2.1 Тестовая ситуация: Массивы не отсортированы в порядке убывания Исходные данные: Количество элементов итогового массива n:25 Исходный массив А: 11 10 9 8 7 6 5 4 3 2 1 0 -11 -10 -9 -8 -7 -6 -5 -4 Ожидаемый результат: Некорректные данные. Полученный результат:
Рисунок 6—Тест 2.2 Тестовая ситуация: Один из элементов массива дробный Исходные данные: Количество элементов итогового массива n:25 Исходный массив А: 24 23 22 21 20 19 18.5 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Ожидаемый результат: Некорректные данные. Полученный результат:
Рисунок 7—Тест 2.3 Тестовая ситуация: Выход за границу типа Исходные данные: Количество элементов итогового массива n:25 Исходный массив А: 21474836477 23 22 21 20 19 18.5 17 16 15 14 13 12 11 10 9 8 7 6 5 Ожидаемый результат: Некорректные данные. Полученный результат:
Рисунок 8—Тест 2.4 Тестовая ситуация: Ошибка ввода Исходные данные: Количество элементов итогового массива n:25 Исходный массив А: 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Исходный массив B: 20 1а9б 18 17 16 15 Ожидаемый результат: Некорректные данные. Полученный результат:
Рисунок 9—Тест 2.5 [1] Величина с постоянным значением, ограниченная типом integer
|
||||||||||||||||||||||||||
|