ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.02.2024
Просмотров: 7
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство образования и Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Новосибирский государственный технический университет»
Кафедра Автоматизированных систем управления
Отчет
по лабораторной работе №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.