Главная страница

Лабораторная. Лабораторная работа 5. Смирнов. Отчет по дисциплине Цифровая грамотность Программирование циклических алгоритмов с постусловием.


Скачать 0.65 Mb.
НазваниеОтчет по дисциплине Цифровая грамотность Программирование циклических алгоритмов с постусловием.
АнкорЛабораторная
Дата22.12.2021
Размер0.65 Mb.
Формат файлаpdf
Имя файлаЛабораторная работа 5. Смирнов.pdf
ТипОтчет
#314107

МИНОБРНАУКИ РОССИЙСКОЙ ФЕРЕДАЦИИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ОБРАЗОВАНИЯ "ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ" (ОмГТУ)
Кафедра «
Прикладная математика и фундаментальная информатика
»
ОТЧЕТ по дисциплине «Цифровая грамотность»
«
Программирование циклических алгоритмов с постусловием.
»
Принял:
Преподаватель: Моисеева
Н. А.
______________________ подпись, дата
Выполнил:
Студент гр. АТП-211
Смирнов Р.В.
______________________ подпись, дата
Омск 2021

Тема.
Научиться программировать циклические алгоритмы с постусловием на языке
С (Си).
Задание 1.
1.1.
Выполнить Пример 1.1. и построить ГСА. Организовать проверку, что пользователь ввел число от 0 до 10
Листинг для Примера 1.
ГСА:
Код:
#include

int
main(
int
argc,
char
*argv
[]
)
{
int
num =
0
;
do
{
printf(
"Enter a number from 0 to 10: "
);
scanf(
"%d"
, &num);
}
while
((num <
0
) || (num >
10
));
printf(
"You entered a number: %d\n"
, num);
}

Ввод:
-1
15
7
Вывод:
1.2.
Выполнить Пример 1.2. и построить ГСА. Модифицируйте
Пример 1.2. следующим образом: выведите на экран числа кратные 3.
Найти сумму кратных 3 чисел от 1 до N и подсчитать их количество.
Листинг для Примера 2.
ГСА:

Код:
#include

int
main(
int
argc,
char
*argv
[]
)
{
int
i =
1
, n, summ =
0
, amount =
0
;
printf(
"Enter a number: "
);
scanf(
"%d"
, &n);
do
{
if
(i %
3
==
0
)
{
amount++;
summ += i;
printf(
"%d\n"
, i);
i +=
3
;
continue
;
}
i++;
}
while
(i <= n);
}
Ввод:
21

Вывод:
1.3.
Выполнить Пример 1.3. и построить ГСА. Модифицируйте Пример 1.3.
следующим образом: выведите на экран все слагаемые и максимальное из них.
Вычислить сумму элементов s = 1+1/4+1/9+1/16+... c точностью до E = 0.00001.
Листинг для примера 1.3.
ГСА:
Код:
#include

int
main(
int
argc,
char
*argv
[]
)

{
float
E = {
0.00001
}, s = {
0
}, r;
int
i =
1
;
do
{
r =
1.0
/ (i * i);
s += r;
i++;
}
while
(r > E);
printf(
"Summa = %9.5f\n"
, s);
}
Вывод:
Задание 2.
2.1.
Для фрагментов ГСА (рис. 1, 2, 3) составить программный код на языке программирования Си.
Код:
#include

int
main(
int
argc,
char
*argv
[]
)
{
int
m =
2
, c =
7
, d =
5
, j = -
7
, f = -
2
, k =
8
;
do
{
c -=
2
;
}
while
(m < c);
printf(
"c=%d\n"
, c);
do
{
j +=
2
;
}
while
(d > j);
printf(
"j=%d\n"
, j);

do
{
f +=
2
;
}
while
(k - f > f);
printf(
"f=%d\n"
, f);
}
Вывод:
2.2.
Найти сумму первых десяти целых чисел. Изучить псевдокод ГСА (рис.
4).
Код:
#include

int
main(
int
argc,
char
*argv
[]
)
{
int
S =
0
, a =
1
;

do
{
S += a;
a++;
}
while
(a <=
10
);
printf(
"S=%d\n"
, S);
}
Вывод:
Задание 3.
Разработать ГСА для цикла с постусловием и программу на языке программирования Си в соответствии с индивидуальным заданием.
Строки программного кода сопроводить комментариями.
3.1.
10.Найти наибольшее целое четырехзначное число, которое при делении на 7 дает в остатке 5.
ГСА:
Код:
#include

#include

int
main(
int
argc,
char
*argv
[]
)
{

int
i =
10000
;
do
//цикл do while с условием, что остаток от деления i на 7 не
равен 5
{
i--;
printf(
"i=%4.d, i mod 7 =%d\n"
, i, i %
7
);
}
while
(i %
7
!=
5
);
//если остаток от деления i на 7 равен 5
printf(
"Required number i=%d\n"
, i);
}
Вывод:
3.2.
10. В диапазоне от 1000 до 2000 найти произведение и количество чисел, кратных 76 (напечатать исходные числа в строку).
ГСА:

Код:
#include

int
main(
int
argc,
char
*argv
[]
)
{
int
i =
1000
, amount =
0
, min =
10e6
;
unsigned
long
proizv =
1
, summ =
0
;
do
//перебираем все числа в цикле do while от 1000 до 2000
{
if
(i %
76
==
0
)
//если число делится нацело на 76
{
proizv *= i;
//произведение
summ += i;
//сумма
amount++;
//количество чисел
if
(i < min)
min = i;
//минимальное число
}
i++;

}
while
(i <=
2000
);
printf(
"Proizv=%lu, amount=%d, summ=%lu, min=%d\n"
, proizv, amount,
summ, min);
}
Вывод:



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