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

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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.