Главная страница
Навигация по странице:

  • 3. Разработка 3.1. Модульная структура программы

  • 3.2. Спецификация на программные модули

  • 3.3. Схема алгоритмов

  • 3.4. Реализация

  • 4. Тестирование

  • Лабораторная работа программирование МЭИ 1 курс 1 семестр. Отчёт. Лабораторная работа 1 Массивы Вариант 14 Задание Дан массив a n


    Скачать 461.13 Kb.
    НазваниеЛабораторная работа 1 Массивы Вариант 14 Задание Дан массив a n
    АнкорЛабораторная работа программирование МЭИ 1 курс 1 семестр
    Дата03.11.2022
    Размер461.13 Kb.
    Формат файлаdocx
    Имя файлаОтчёт.docx
    ТипЛабораторная работа
    #768928

    А-07-12

    Лабораторная работа №1

    Массивы

    Вариант №14
    1. Задание

    Дан массив A(n). Найти наибольшую из длин отрезков подряд идущих простых чисел.
    2. Анализ

    Необходимо реализовать одномерный массив A(n). Кол-во элементов n и сам массив ввести с клавиатуры. Для решения поставленной задачи необходимо описать функцию primeNumber, которая проверяет, является ли данное число простым. Описать исключения: недопустимое число n, отсутствие простых чисел. Протестировать программу.
    3. Разработка
    3.1. Модульная структура программы

    Программа состоит из четырёх функций. Они представлены на схеме 1.


    main





    getArray

    getAmount





    primeNumber

    Схема 1. Модульная структура программы.
    3.2. Спецификация на программные модули

    Спецификация каждой функции представлены в таблице 1.


    Имя модуля

    Имя вызыв. модуля

    Назначение

    Входные данные

    Выходные данные

    Особенности

    primeNumber

    getAmount

    проверка числа на принадлежность к простым числам

    n, i , k типа int

    true/false




    getArray

    main

    создание массива из n чисел

    n, i типа int

    ar[i] типа int




    getAmount

    main

    вывод на экран кол-ва подряд идущих простых чисел

    n, i типа int

    ammax типа int




    main




    основной модуль программы










    Таблица 1. Спецификация модулей
    3.3. Схема алгоритмов

    Схема алгоритма для функции getAmount показана на схеме 2.

    начало



    am=0; amax=0



    i=0; i










    a[i] простое

    am>amax






    am++

    am>amax

    amax=am










    amax=am

    amax==0










    am=0




    сообщение об ошибке

    ответ






    конец

    Схема 2. Схема алгоритма модуля getAmount

    3.4. Реализация

    Программа написана на языке С++ в среде Microsoft Visual C++ 2005.
    #include "stdafx.h"

    #include

    #include
    using namespace std;
    int primeNumber(int ar, int i) //Проверка числа на принадлежность к простым числам

    {

    if (ar < 2)

    {

    return 0; //Числа 0 и 1 - не простые

    }

    else

    {

    for (int k = 2; k <= ar-1; k++)

    {

    if (ar % k == 0) //если число ar делится без остатка на любое,

    { //кроме 0, 1 и числа превышающие ar/2,

    return 0; //то оно не простое

    break; //прерываем цикл

    }

    }

    return 1; //Возвращаем true, если число простое

    }

    }
    void getArray(int *ar, int n) //Вводим последовательность чисел с клавиатуры

    {

    cout << "Массив: \n";

    for(int i = 0; i < n; i++)

    {

    cin >> ar[i];

    }

    }
    void getAmount(int *ar, int n) //Находим наибольшее количество подряд идущих чисел

    {

    int am = 0; //Количество подряд идушщих чисел

    int ammax = 0; //Наибольшее количество подряд идущих чисел

    for (int i = 0; i < n; i++)

    {

    if (primeNumber(ar[i], i)) //Если число простое

    {

    am++;

    }

    else //Если следующее число не простое

    {

    if (am > ammax)

    {

    ammax = am;

    }

    am = 0;

    }

    }

    if (am > ammax) ammax = am; //Если наибольшая цепочка чисел в конце

    if (ammax == 0)

    {

    cout << "Нет простых чисел" << endl;

    }

    else

    {

    cout << "Кол-во подряд идущих чисел = " << ammax << endl;

    }

    }
    void main()

    {

    setlocale(0, "Russian"); //Русский язык

    int n; //Размермассива

    int ar[20]; //Сам массив

    cout << "Введите размер массива: ";

    cin >> n;

    if (n > 20 || n < 1)

    {

    cout << "Неправильно задан размер массива" << endl;

    system("pause");

    return;

    }

    int *array = new int [n]; //Инициализируем память под массив

    getArray(ar, n); //Выводим последовательность чисел с клавиатуры

    getAmount(ar, n); //Находим наибольшее количество подряд идущих чисел

    delete []array; //Освобождаем память

    system("pause");

    return;

    }
    4. Тестирование

    Проведём тестирование программы. Рассмотрим такие аномалии, как неправильно введённый размер массива и отсутствие простых чисел.
    1) Неправильно задан размер массива:

    2) Нет ни одного простого числа:


    3) Есть несколько простых чисел:

    4) Все простые числа:




    написать администратору сайта