Хелпикс

Главная

Контакты

Случайная статья





Структура данных. Схема алгоритма решения задачи по ГОСТ 19.701-90



3 Структура данных

Таблица 2 – Данные

Элементы данных Рекомендуемый тип Назначение
Dlina[1] Integer Максимальная длина итогового массива
A array [0..19] of  integer Хранение исходного массива А[20]
B array [0..(Dlina-21)] of  integer Хранение исходного массива B[n-20]
C array[0..(Dlina-1)]  of  integer Хранение итогового массива С[n]
i, k 0..Dlina Счетчик цикла
j 0..20 Счетчик цикла
Oshibka Boolean Логическая переменная, обозначающая   наличие ошибки во входных данных

 

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

 

Тестовые ситуации: Некорректные данные

Тест 2.1

Тестовая ситуация: Некорректное значение длины массива

Исходные данные: n=20

Ожидаемый результат: Некорректные данные.

Полученный результат:  

 

Рисунок 5—Тест 2.1
Тест 2.2

Тестовая ситуация: Массивы не отсортированы в порядке убывания

Исходные данные:

Количество элементов итогового массива 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
Тест 2.3

Тестовая ситуация: Один из элементов массива дробный

Исходные данные:

Количество элементов итогового массива 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
Тест 2.4

Тестовая ситуация: Выход за границу типа

Исходные данные:

Количество элементов итогового массива 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
Тест 2.5

Тестовая ситуация: Ошибка ввода

Исходные данные:

Количество элементов итогового массива 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



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.