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

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

  • Выполнили: Проверил

  • Определить, является ли вводимая последовательность чисел неубывающей. Задание 2

  • Последовательность 110100100010000…, в которой выписаны подряд все степени 10. Тестовые данные 1

  • Описание структур данных 1

  • Блок-схема алгоритма 1 main

  • While и Fore

  • Листинг программы с комментариями 1

  • Скриншот работы программы 1

  • Задание №2 Тестовые данные Тест 1 Ввод: 4;Вывод: 1101; Тест 2

  • Блок-схемы алгоритмов

  • Листинг программы с комментариями

  • Скриншоты работы программы

  • Операторы цикла. Операторы передачи управления


    Скачать 0.87 Mb.
    НазваниеОператоры цикла. Операторы передачи управления
    Дата29.03.2023
    Размер0.87 Mb.
    Формат файлаdocx
    Имя файлаAP-227_Lab_1_6_variant.docx
    ТипОтчет
    #1022974

    Министерство образования и Российской Федерации

    Федеральное государственное бюджетное образовательное учреждение высшего образования
    «Новосибирский государственный технический университет»

    Кафедра Автоматизированных систем управления



    Отчет

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

    Тема: Операторы цикла. Операторы передачи управления

    Дисциплина: Информатика

    Вариант №6

    Выполнили:




    Проверил:

    Студенты

    Саая Ольга

    Слободчикова Екатерина

    Старший преподаватель кафедры АСУ Эстрайх И.В

    Факультет

    АВТФ




    Направление (специальность) подготовки


    09.03.03 – Прикладная информатика




    Группа

    АП-227





    Новосибирск

    2022.
    Задание 1

    При решении задачи использовать три типа циклов (три реализации функции).

    Написать функцию, которая считывает целое k, за которым следует k целых чисел. Функция должна считывать только по одному значению в операторе ввода.

    Определить, является ли вводимая последовательность чисел неубывающей.

    Задание 2
    Написать функцию, которая выводит все цифры последовательности до k – ой. Использовать функцию, определяющую количество цифр в числе Count_Pos (number) (см пример дальше по тексту).

    Последовательность 110100100010000…, в которой выписаны подряд все степени 10.

    Тестовые данные 1

    Набор данных

    Ожидаемый результат

    K=5, 1, 2, 3, 4, 5

    Последовательность не убывающая

    K=4, 6, 4, 3, 1

    Последовательность не является не убывающая

    K=0

    Невозможно ввести последовательность

    K=-10

    Невозможно ввести последовательность

    K=2, 20, 30

    Последовательность не убывающая

    K=4, 6, 4, 3, 1

    Последовательность не является не убывающая

    .


    Описание структур данных 1

    имя

    тип

    Назначение

    k

    int

    Количество значений в последовательности

    number

    int

    Введенное значение последовательности

    number

    int

    Запомненное значение предыдущего числа

    m

    int

    Подсчет количества введенных значений

    itog

    int

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


    Блок-схема алгоритма 1

    main



    Рис.1. Блок-схема алгоритма main.

    Do while



    Рис.2. Блок-схема алгоритма Do while.

    While и Fore



    Рис.3. Блок-схема алгоритма while и fore.

    Описание функций 1

    имя

    Выполняемое действие

    Параметры

    whl

    Работа с циклом while

    -

    dowhl

    Работа с циклом do_while

    -

    fore

    Работа с циклом for

    -

    main

    Выполняет программу

    -


    Листинг программы с комментариями 1

    #include "stdio.h" // Библиотеки

    #include

    #include

    void whl () // Работы с циклов while

    {

    int k, number, number2, m = 1, itog = 0;

    printf("Введите количество значений для цикла while : "); // Начало ввода

    scanf_s("%d", &k);

    if (k < 2)

    {

    printf("Невозможно ввести последовательность");

    }

    else

    {

    printf("Введите %d число: ", m); // Начало ввода чисел

    scanf_s("%d", &number);

    m += 1;

    number2 = number; // Запоминание преведущего

    while (m <= k)

    {

    printf("Введите %d число: ", m); // Продолжение ввода чисел

    scanf_s("%d", &number);

    if (number < number2) // Проверка условия

    {

    itog = 1;

    m += 1;

    }

    else

    {

    number2 = number;

    m += 1;

    }

    }

    if (itog == 1) // Вывод ответа

    {

    printf("Последовательность не является не убывающей");

    }

    if(itog==0)

    {

    printf("Последовательность не убывающая");

    }

    }

    }
    void dowhl() // Работа с циклом do_while

    {

    int k, number, number2, m = 1, itog = 0;

    printf("Введите количество значений для цикла do_while : "); // Начало ввода

    scanf_s("%d", &k);

    if (k < 2)

    {

    printf("Невозможно ввести последовательность");

    }

    else

    {

    printf("Введите %d число: ", m); // Начало ввода чисел

    scanf_s("%d", &number);

    m += 1;

    number2 = number;

    do

    {

    printf("Введите %d число: ", m); // Продолжение ввода чисел

    scanf_s("%d", &number);

    if (number < number2) // Проверка условия

    {

    itog = 1;

    m += 1;

    }

    else

    {

    number2 = number;

    m += 1;

    }

    }

    while (m <= k);

    if (itog == 1) // Вывод результата

    {

    printf("Последовательность не является не убывающей");

    }

    if (itog == 0)

    {

    printf("Последовательность не убывающая");

    }

    }

    }
    void fore() // Работа с циклом for

    {

    int k, number, number2, m = 1, itog = 0;

    printf("Введите количество значений для цикла for : "); // Начало ввода

    scanf_s("%d", &k);

    if (k < 2)

    {

    printf("Невозможно ввести последовательность");

    }

    else

    {

    printf("Введите %d число: ", m); // Начало ввода чисел

    scanf_s("%d", &number);

    m += 1;

    number2 = number;

    for(; m <= k;)

    {

    printf("Введите %d число: ", m); // Продолжение ввода чисел

    scanf_s("%d", &number);

    if (number < number2) // Проверка условия

    {

    itog = 1;

    m += 1;

    }

    else

    {

    number2 = number;

    m += 1;

    }

    }
    if (itog == 1) // Вывод ответа

    {

    printf("Последовательность не является не убывающей");
    }

    if (itog == 0)

    {

    printf("Последовательность не убывающая");
    }

    }

    }
    int main() // Основная фунция

    {

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

    printf("Начало работы программы\n");

    whl(); // Начало хождения по циклам

    printf("\n");

    printf("\n");

    dowhl();

    printf("\n");

    printf("\n");

    fore();

    }

    Скриншот работы программы 1



    Рис.4. Скриншот1 тест1.


    Рис.5. Скриншот2 тест2.



    Рис.6. Скриншот3 тест3.

    Задание №2

    Тестовые данные

    Тест 1

    Ввод: 4;

    Вывод: 1101;

    Тест 2

    Ввод: 2;

    Вывод: 11;

    Тест 3

    Ввод: 16;

    Вывод: 1101001000100001;
    Описание структур данных

    Имя

    Тип

    Назначение

    p

    int

    Счетчик для проверки разрядов

    number

    int

    Число для проверки разрядов

    i

    int

    Счетчик

    k

    int

    Вводимое число, количество элементов в строке

    n

    int

    Переменная, для хранения 10 возведённой в степень с дальнейшим выводом

    v

    int

    Переменная для хранения количества цифр в строке

    s

    int

    Переменная для подсчета лишних элементов


    Блок-схемы алгоритмов


    Рис.7. Блок-схема алгоритма main.


    Рис.8. Блок-схема алгоритма Count_Pos
    Описание функций

    Имя

    Выполняемое действие

    Параметры

    Count_Pos

    Подсчет цифр в заданном числе

    number

    main

    Подсчет и вывод всех степеней 10 подряд которые входят в диапазон с 0 по k элементов.


    _



    Листинг программы с комментариями
    #include

    #include

    #include
    int Count_Pos (int number)

    {

    int p = 1;

    while ((number / (int) pow (10, p)) > 0) p++; // подсчет цифр в числе

    return p;

    }
    int main() {

    setlocale(LC_ALL, "Rus");//установка русского языка

    int i,k,n,v,s;

    scanf("%d",&k);//ввести количество элементов в строке

    i=0;//счетчик

    v=0;

    while(v
    n=pow(10,i);//возведение 10 в степень

    i+=1;

    v+=Count_Pos(n);//подсчет количества элементов

    if(v>k){

    s=v-k;

    n = n / pow(10, s);

    }

    printf("%d",n);//вывод

    }

    }


    Скриншоты работы программы


    Рис.9. Скриншот1 тест1.



    Рис.10. Скриншот2 тест2.



    Рис.11. Скриншот3 тест3.




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