Операторы цикла. Операторы передачи управления
Скачать 0.87 Mb.
|
Министерство образования и Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Новосибирский государственный технический университет» Кафедра Автоматизированных систем управления Отчет по лабораторной работе №1 Тема: Операторы цикла. Операторы передачи управления Дисциплина: Информатика Вариант №6
Новосибирск 2022. Задание 1 При решении задачи использовать три типа циклов (три реализации функции). Написать функцию, которая считывает целое k, за которым следует k целых чисел. Функция должна считывать только по одному значению в операторе ввода. Определить, является ли вводимая последовательность чисел неубывающей. Задание 2 Написать функцию, которая выводит все цифры последовательности до k – ой. Использовать функцию, определяющую количество цифр в числе Count_Pos (number) (см пример дальше по тексту). Последовательность 110100100010000…, в которой выписаны подряд все степени 10. Тестовые данные 1
. Описание структур данных 1
Блок-схема алгоритма 1 main Рис.1. Блок-схема алгоритма main. Do while Рис.2. Блок-схема алгоритма Do while. While и Fore Рис.3. Блок-схема алгоритма while и fore. Описание функций 1
Листинг программы с комментариями 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; Описание структур данных
Блок-схемы алгоритмов Рис.7. Блок-схема алгоритма main. Рис.8. Блок-схема алгоритма Count_Pos Описание функций
Листинг программы с комментариями #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. |