Skip to content

3214Hoh/LabExample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 

Repository files navigation

Отчет по лабораторной работе № 1

№ группы: ПМ-2502

Выполнил: Филиппов Данил Константинович

Вариант: 22

Cодержание:

1. Постановка задачи

Программа на вход получает четыре различных числа. Нужно вывести на экран число, которое больше одного и меньше двух других чисел.

Данную задачу можно разделить на 2 подзадачи: нахождение минимального числа и нахождение второго минимального числа.

2. Входные и выходные данные

Данные на вход

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

Тип min значение max значение
A (Число 1) целое число -263 263 -1
B (Число 2) целое число -263 263 -1
C (Число 3) целое число -263 263 -1
D (Число 4) целое число -263 263 -1

Данные на выход

Так как программа должна вывести второе по счету в отсортерованном списке по возрастанию, то на выходе мы получим число лежащее в диапозоне от: -263 до: 263 -1

Тип min значение max значение
X целое число -263 263 -1

3. Выбор структуры данных

Программа получает 4 целый числа, с неуказанными ограничениями, поэтому для их хранения можно выделить 4 переменных (a, b, c, d) типа long.

4. Алгоритм

Алгоритм выполнения программы:

  1. Ввод данных: Программа считывает четыре целых числа, обозначенные как: a, b, c, d.

  2. Нахождение второго минимума:
    Программа находит минимальное число из a, b, c, d. Пример: пусть a - минимальное, тогда программа ищет минимальное из b, c, d. Соответсвенно то же самое и для других букв

  3. Вывод результата: На экран выводится второй минимальный элемент.

Блок-схема

graph TD
  A([Начало]) --> B[/Ввести: a, b, c, d/]
  B --> C{a < b && a < c && a < d}
  C -- Да --> D{b < c && b < d}
  D --  Да --> D1[/Вывод: b/]
  D -- Нет --> E{c < b && c < d}
  E --  Да --> E1[/Вывод: c/]
  E --  Нет --> E2[/Вывод: d/]
  C -- Нет --> R{b < a && b < c && b < d}
  R -- Да --> T{a < c && a < d}
  T --  Да --> T1[/Вывод: a/]
  T -- Нет --> Y{c < a && c < d}
  Y --  Да --> Y1[/Вывод: c/]
  Y --  Нет --> Y2[/Вывод: d/]
  R -- Нет --> U{c < a && c < b && c < d}
  U -- Да --> I{a < b && a < d}
  I --  Да --> I1[/Вывод: a/]
  I -- Нет --> O{b < a && b < d}
  O --  Да --> O1[/Вывод: b/]
  O --  Нет --> O2[/Вывод: d/]
  U -- Нет --> P{a < b && a < c}
  P --  Да --> P1[/Вывод: a/]
  P -- Нет --> S{b < a && b < c}
  S --  Да --> S1[/Вывод: b/]
  S --  Нет --> S2[/Вывод: c/]
  D1 --> Z([Конец])
  E1 --> Z([Конец])
  E2 --> Z([Конец])
  T1 --> Z([Конец])
  Y1 --> Z([Конец])
  Y2 --> Z([Конец])
  I1 --> Z([Конец])
  O1 --> Z([Конец])
  O2 --> Z([Конец])
  P1 --> Z([Конец])
  S1 --> Z([Конец])
  S2 --> Z([Конец])
Loading

5. Программа

import java.io.PrintStream;
import java.util.Scanner;


public class j_1{
    // Объявляем объект класса Scanner для ввода данных
    public static Scanner in = new Scanner(System.in);
    // Объявляем объект класса PrintStream для вывода данных
    public static PrintStream out = System.out;
    public static void main (String [] args) {
        // Считывание четырех целых чисел a, b, c, d из консоли
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong(), b = scanner.nextLong();
        long c = scanner.nextLong(), d  = scanner.nextLong();

        if (a < b && a < c && a < d){
            // a - наименьшее
            if (b < c && b < d) out.println(b);
            else if (c < b && c < d) out.println(c);
            else out.println(d);
        }
        else if (b < a && b < c && b < d) {
            // b - наименьшее
            if (a < c && a < d) out.println(a);
            else if (c < a && c < d) out.println(c);
            else out.println(d);
        }
        else if (c < a && c < b && c < d) {
            // c - наименьшее
            if (a < b && a < d) out.println(a);
            else if (b < a && b < d) out.println(b);
            else out.println(d);
        }
        else {
            // d - наименьшее
            if (a < b && a < c) out.println(a);
            else if (b < a && b < c) out.println(b);
            else out.println(c);
        }
    }
}

6. Анализ правильности решения

Программа работает корректно на всем множестве решений с учетом ограничений.

  1. Тест на D > C > B > A > 0:

    • Input:

      4 3 2 1
      
    • Output:

      2
      
  2. Тест на A < B < C < D < 0:

    • Input:

      -5 -4 -3 -1
      
    • Output:

      -4
      
  3. Тест на A > B > 0; C < D < 0:

    • Input:

      10 8 -7 -2
      
    • Output:

      -2
      
  4. Тест на ограничение задачи:

    • Input:

      34359738368 34359738369 34359738370 34359738371
      
    • Output:

      34359738369
      

About

Контрольная точка №1 (Java)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published