Завдання 2
Складіть блок-схему алгоритму знаходження суми чисел, перше
з яких дорівнює 7, кожне наступне на 5 більше від попереднього
і всі вони не перевищують 100. Виконайте алгоритм.
Завдання 3
Складіть блок-схему алгоритму знаходження суми додатних чисел,
перше з яких дорівнює 50, кожне наступне на 8 менше від попере-
днього. Виконайте алгоритм.
#include <iostream>
#include <clocale>
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
int s;
cout << "Введите s: ";
cin >> s;
switch(s)
{
case 0: cout << "LOSE"; break;
case 1: cout << "DRAW"; break;
case 3: cout << "WIN"; break;
default: cout << "Неверное число."; break;
}
}
Объяснение:
#include <iostream> // Библиотека ввода-вывода
#include <clocale> // Библиотека локализации (возможно, будет работать без нее)
using namespace std; // Пространство имён
int main()
{
setlocale(LC_ALL,"Russian"); // Локализация (возможно, будет работать без нее)
int s; // Создание целочисленной переменной
cout << "Введите s: "; // Вывод текста в консоль
cin >> s; // Ввод переменной с клавиатуры
switch(s) // Принимает значение s
{
case 0: cout << "LOSE"; break; // Если s = 0, то выводим LOSE
case 1: cout << "DRAW"; break; // Если s = 1, то выводим DRAW
case 3: cout << "WIN"; break; // Если s = 3, то выводим WIN
default: cout << "Неверное число."; break; // Если s не равно ни одному из трёх чисел, то выводим Неверное число
}
}
A=53₁₀,
B=653₈,
C=DA₁₆,
R=R₂
Эту задачу можно решать разными выбор зависит от умения решающего выполнять сложение в той или иной системе счисления. Но в любом варианте, сначала нужно представить А, В, С в какой-то одной системе счисления.
Посмотрим, как это будет выглядеть, если пользоваться привычной нам десятичной системой.
653₈ = 6·8²+5·8¹+3·8⁰ = 6·64+5·8+3 = 427
DA₁₆ = 13·16¹+10·16⁰ = 218
R₁₀ = 53+427+218 = 698
Переводим полученное число в двоичную систему, получая R₂:
698/2=349, остаток 0
349/2=174, остаток 1
174/2=87, остаток 0
87/2=43, остаток 1
43/2 =21, остаток 1
21/2=10, остаток 1
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
Выписываем остатки в обратном порядке: 1010111010.
Это и есть ответ.
А теперь допустим, что мы хорошо владеем восьмеричной системой счисления.
1) получим А₈
53/8=6, остаток 5
6/8=0, остаток 6
Выписываем остатки в обратном порядке: А₈=65
2) получим С₈, для чего перейдем сначала в двоичную систему
С₂=1101 1010 (просто заменяем каждую цифру четырьмя двоичными).
А теперь разобьем справа налево полученное значение по три разряда и каждую полученную триаду заменим восьмеричной цифрой.
11 011 010₂ = 332₈
3) Выполним сложение R₈=A₈+B₈+C₈
65 740
+653 +332
740 1272
Складывать в восьмеричной системе просто, если знать одну маленькую хитрость. 8 отличается от 10 на 2, поэтому и результат сложения в восьмеричной системе на 2 больше, чем в десятичной, если число превышает 7. Смотрим: 5+3=8, но это в десятичной, а в восьмеричной это на 2 больше, т.е. 10. Поэтому мы пишем 0 и +1 идет в следующий разряд. 6+5=11 и еще +1 от переноса, итого 12. Но в восьмеричной на 2 больше, т.е. 14. 4 пишем. +1 перенос. 6 и +1 от переноса - 7. Вот и получили 740.
4) Мы нашли R₈, переходим к R₂.
Заменяем каждую восьмеричную цифру тремя двоичными:
1272₈=1 010 111 010₂
Мы получили тот же ответ, что и в предыдущем расчета.
Так что - дело привычки. Второй вариант кажется "непосвященному" сложнее, но на самом деле в нем меньше арифметики и если нет под рукой калькулятора, то может оказаться и быстрее, и удобнее.
ответ: 1010111010