Академический Документы
Профессиональный Документы
Культура Документы
Электротехнический факультет
Дисциплина
«Основы программирования»
2.2 Проектирование
Начало
Ввод n
c1 = c2 = 0
Нет
n>0
Да
d = n % 10 Вывод
c1, c2
Нет d % 2 == 1 Да Конец
c2++ c1++
n /= 10
2.3 Реализация
#include <iostream>
int main()
{
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите натуральное число, n = ";
cin >> n;
int c1, c2, d;
c1 = c2 = 0;
while (n > 0)
{
d = n % 10;
if (d % 2 == 1)
c1++;
else
c2++;
n /= 10;
}
cout << "Запись числа содержит" << endl;
cout << "нечётных цифр: " << c1 << endl;
cout << "чётных цифр: " << c2 << endl;
system("Pause");
return 0;
}
2.4 Тестирование
3 Решение задачи 2
3.2 Проектирование
Начало
x = rand() % 1001;
hx = x / 100;
Ввод y
hy = y / 100
Да
x>y
Нет
Вывод
Да
x<y «больше»
Нет
Вывод
«меньше»
Нет Вывод «в
этой сотне»
Да
x != y
Нет
Вывод
«Вы угадали!»
Конец
В начале алгоритма случайным образом формируется число x в
интервале от 0 до 1000 и вычисляется сотня, в которой это число находится.
Далее, начинается тело цикла с постусловием, где условием продолжения
цикла является неравенство числа y, введённого пользователем и числа x. В
цикле происходит ввод пользователем числа y, вычисления сотни, в которую
входит это число. Если загаданное число x больше числа y, заданного
пользователем, то выводится сообщение «больше», в противном случае, если
загаданное число x меньше числа y, заданного пользователем, то выводится
сообщение «меньше». Если числа x и y не равны, но номера сотен, в которых
они находятся равны, то выводится сообщение «в этой сотне». На этом тело
цикла заканчивается, происходит проверка условия продолжения цикла, и
если оно выполняется, то цикл возвращается к вводу числа пользователем.
Если условие цикла не выполняется, т.е. пользователь угадал число, то
выводится сообщение «Вы угадали!» и программа завершается.
3.3 Реализация
#include <iostream>
#include <ctime>
int main()
{
setlocale(LC_ALL, "Russian");
srand(time(0));
int x = rand() % 1001;
int hx = x / 100;
int y, hy;
cout << "Угадайте число от 0 до 1000" << endl;
do {
cout << "> ";
cin >> y;
hy = y / 100;
if (x > y)
cout << "больше" << endl;
else if (x < y)
cout << "меньше" << endl;
if ((x != y) && (hx == hy))
cout << "в этой сотне" << endl;
} while (x != y);
cout << "Поздравляю, Вы угадали!" << endl;
system("Pause");
return 0;
}
3.4 Тестирование
4 Решение задачи 3
4.2 Проектирование
Начало
Ввод a, b
c=0
i = a; i <= b; i++
Да
isPrime = true c == 0
Нет
j = 2; j <= sqrt(i); j++ Вывод «в
диапазоне
Вывод с
нет простых
Нет i % j == 0 чисел»
Да
isPrime = false
Конец
c *= i c=i
Алгоритм выполнения программы начинается с ввода границ
диапазона, в котором будут искаться простые числа. Затем нулём
инициализируется переменная c, в которой будет накапливаться
произведение всех простых чисел в заданном диапазоне. Далее, начинается
цикл с параметром, где перебираются все числа из заданного диапазона.
Счётчик цикла – целочисленная переменная i. В теле цикла первым делом
инициализируется значением true переменная логического типа isPrime, по
значению которой будет далее будет принято решение об изменении
текущего результата. После инициализации isPrime начинается вложенный
цикл с параметром, внутри которого будут перебираться числа от 2 до корня
квадратного из i. Если будет найдено число, которое является делителем
числа i, то переменной isPrime будет присвоено значение false, а вложенный
цикл будет прерван оператором break. После выполнения вложенного цикла,
проверяется условие истинности переменной isPrime. Если значение этой
переменной равно true, то мы нашли простое число и переходим к проверке
значения переменной c. Если значение переменной c равно нулю, значит
найденное простое число является первым в заданном диапазоне и это
значение присваивается переменной c. Иначе, если значение переменной c не
равно нулю, значит найденное простое число уже не первое и переменная c
домножается на это значение. На этом заканчивается тело внешнего цикла с
параметром по переменной i. По окончанию выполнения цикла, вновь
происходит проверка равенства переменной c нулю. Если это условие
выполняется, значит в диапазоне не было найдено ни одно простое число, и
выводится соответствующее сообщение, иначе на экран выводится число c,
являющееся произведением всех простых чисел в заданном диапазоне. На
этом алгоритм завершается.
4.3 Реализация
#include <iostream>
int main()
{
setlocale(LC_ALL, "Russian");
int a, b;
cout << "Введите границы диапазона [a, b]" << endl;
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
int c = 0;
for (int i = a; i <= b; i++)
{
bool isPrime = true;
for (int j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
isPrime = false;
break;
}
}
if (isPrime == true)
{
if (c == 0)
c = i;
else
c *= i;
}
}
if (c == 0)
cout << "В заданном диапазоне нет простых чисел" << endl;
else
cout << "Прризведение всех простых чисел в диапазоне: " << c << endl;
system("Pause");
return 0;
}
4.4 Тестирование
Заключение