Вы находитесь на странице: 1из 8

Харьковский национальный университет имени В.

 Н. Каразина
Факультет компьютерных наук
Кафедра моделирования систем и технологий

ОТЧЕТ
ЛАБОРАТОРНОЙ РАБОТЕ №1
«Системы счисления»

дисциплина: «Алгоритмизация и программирование»

Выполнил: студент группы КС15


Яровой Илья Андреевич

Проверил: доцент, кандидат


физико-математических наук
Севидов Сергей Михайлович

Харьков
2021
Задание 1.
Выполните свой вариант индивидуального задания №1 (см.
приложение). Нарисуйте диаграмму потоков данных, блок-схему и по ней
составьте программу. Проведите расчеты для различных исходных данных
(три примера)

Результаты выполнения задания №1 представлены:


1. на рисунке 1 – диаграмма потоков данных
2. на рисунке 2 – блок-схема алгоритма;
3. в листинге 1 – исходный код программы;
4. в вариантах данных 1 -3 – результаты выполнения программы.

Рисунок 1 – Диаграмма потоков данных к заданию 1

Рисунок 2 – Блок – схема к заданию 1


Листинг 1. Исходный код программы:

#include <stdio.h> // Вычисление номера дня недели, 1 янв. - четверг


int main(){
int a;
printf("Enter the number: ");
scanf("%d", &a);
if (a < 366 & a > 0){
int b = a % 7 + 3;
int c = b % 7;
printf("Serial number of the day is %d", c);
}
else{
printf("error");
}
return 0;
}

Результаты выполнения программы:

1 Вариант данных:

Enter the number: 1


Serial number of the day is 4
--------------------------------
Process exited after 1.516 seconds with return value 0

2 Вариант данных:

Enter the number: 366


error
--------------------------------
Process exited after 6.942 seconds with return value 0

3 Вариант данных:

Enter the number: 365


Serial number of the day is 4
--------------------------------
Process exited after 7.965 seconds with return value 0

Задание 2
Проделайте аналогичные действия (выполните вручную алгоритм и
заполните по нему таблицу) для значений N и k, заданных в Вашем
индивидуальном задании №2.
Таблица 1 – Задание №2
№ Блок Результат Комментарий
шага
1 а) N=260, ввод исходных данных
k=8
2 б) n=2 83=512, 82=64. Т.к. 512>260, а 64<260, выбираем n=2.
3 в) 4 260 / 64 = 4 (деление нацело!)
4 г) N=4 n=1 260 – 4*64 = 4
n уменьшилось на 1
5 д) TRUE n=1, поэтому n>=0. Условный переход к блоку в).
6 в) 0 4 /8 = 0
7 г) N=4 4 – 0*8 = 4
n=0 n уменьшилось на 1 и стало равно нулю
8 д) TRUE n=0, это еще неотрицательное число; поэтому
n>=0 Переход к блоку в).
9 в) 4 4/1=4
10 г) N=0 n=- 4 – 1*4 = 0
1 n уменьшилось на 1!
11 д) FALSE n=-1. Условие n>=0 не выполняется.
12 Коне -- Конец выполнения.
ц

Задание 3.
Будет ли работать алгоритм на рис.2, если на его вход подать N=0
(при "хорошем" k: например, k=8)? Модифицируйте блок-схему на рис.2
так, чтобы сразу после ввода N и k была проверка "N=0?", и в случае
выполнения этого условия на экран выводилось сообщение: N=0. В
противном случае алгоритм должен все делать как раньше.
Рисунок 3 – Блок - схема к заданию 3

Задание 4.

Результаты выполнения задания №4 представлены:


1. на рисунке 4 – диаграмма потоков данных
2. на рисунке 5 – блок-схема алгоритма;
3. в листинге 2 – исходный код программы;
4 в вариантах данных 1 -3 – результаты выполнения программы.

Выполните свой вариант индивидуального задания №3 (см.


приложение). Перед тем, как писать код программы, постройте диаграмму
потоков данных и блок-схему.

Рисунок 4 – Диаграмма потока данных к заданию 4


Рисунок 5 – Блок – схема к заданию 4

Листинг 2. Исходный код программы:

#include <stdio.h> // Вычисление разницы макс. и мин. трех чисел


int main(){
int a, b, c, maxn, minn, res;
printf("Enter first number: ");
scanf("%d", &a);
printf("Enter second number: ");
scanf("%d", &b);
printf("Enter third number: ");
scanf("%d", &c);
if(a > b){
maxn = a;
}
else{
maxn = b;
}
if (maxn < c)
{
maxn = c;
}
if(a < b){
minn = a;
}
else{
minn = b;
}
if (minn > c)
{
minn = c;
}
res = maxn - minn;
printf("%d", res);

return 0;
}

Результаты выполнения программы:

1 Вариант данных:

Enter first number: 12


Enter second number: 12
Enter third number: 12
0
--------------------------------
Process exited after 2.111 seconds with return value 0

2 Вариант данных:

Enter first number: 10


Enter second number: 12
Enter third number: 9
3
--------------------------------
Process exited after 3.33 seconds with return value 0

3 Вариант данных:

Enter first number: 12


Enter second number: 10
Enter third number: 12
2
--------------------------------
Process exited after 6.43 seconds with return value 0

Вам также может понравиться