Приклади програм з розгалуженням
Приклад 1. Задано три цілих числа a,b,c в діапазоні від 1000 до 9999. Знайти те з них сума цифр якого найбільша.
#include <iostream>
#include <conio.h>
void main()
{
using namespace std;
int a,b,c,s,max,d; // оголошення змінних
cout<<"Enter a,b,c:";
cin>>a>>b>>c; // введення значення змінних
// перевірка на відповідність введених значень вказаному діапазону
if ((a<1000 || a>9999)||(b<1000 || b>9999)||(c<1000 || c>9999))
// хоча б одне число не попадає в діапазон
cout<<"All numbers must be between 1000 and 9999"<<endl;
else { // всі числа задані коректно, опрацьовуємо їх
s=a/1000+ a/100%10 + a/10%10 + a%10; // сума цифр числа a
max=s; // змінна max буде містити значення максимальної суми цифр
d=a; // змінна d буде містити саме число сума цифр якого максимальна
s=b/1000+ b/100%10 + b/10%10 + b%10; // сума цифр числа b
// перевірка чи сума цифр числа b більша за поточне максимальне значення
if (s>max) {
max=s; // якщо так, то переприсвоюємо змінній max нове значення
d=b; // і запам'ятовуємо число b в змінній d
}
s=c/1000+ c/100%10 + c/10%10 + c%10; // сума цифр числа c
// перевірка чи сума цифр числа c більша за поточне максимальне значення
if (s>max) {
max=s; // якщо так, то переприсвоюємо змінній max нове значення
d=c; // і запам'ятовуємо число c в змінній d
}
// тепер в змінній d маємо саме число, а в змінній max суму його цифр
// виводимо результат
cout<<"Number with max sum of digits:"<<d<<endl;
cout<<"Sum of digits is "<<max<<endl;
}
_getch();
}
Приклад 2. Задано чотири цілих числа a,b,c,d. Відомо, що одне з них відрізняється від трьох інших, які є однаковими. Знайти і вивести це число.
#include <iostream>
#include <conio.h>
void main()
{
using namespace std;
int a,b,c,d; // оголошення змінних
cout<<"Enter a,b,c,d:";
сin>>a>>b>>c>>d; // введення значення змінних
if (b==c && c==d && a!=b)
cout<<"Number that differed is "<<a;
else if (a==c && c==d && b!=a)
cout<<"Number that differed is "<<b;
else if (a==b && a==d && a!=c)
cout<<"Number that differed is "<<c;
else if (a==b && a==c && a!=d)
cout<<"Number that differed is "<<d;
else
cout<<"Three of numbers must be equal!"<<endl;
_getch();
}
3. КОНТРОЛЬНІ ЗАПИТАННЯ
- Що таке алгоритм? Які є форми запису алгоритмів?
- З яких базових конструкцій може складатися довільний алгоритм?
- Які блоки можна використовувати на блок-схемах?
- Як записується і працює умовний оператор if/else в С++?
- Які особливості вкладених структур if/else?
- Які особливості виразу за допомогою якого задається умова оператора if ?
- Напишіть вираз мовою С++ який перевіряє чи перша і остання цифри заданого трьохзначного цілого числа k рівні?
- Що таке складений оператор? Коли він використовується?
- Що таке умовна операція? Як вона працює?
- Які логічні операції мови С++ Ви знаєте? Наведіть приклади їх використання.
- Як реалізовано оператор вибору в С++?
- Для чого використовується оператор goto?
ЛАБОРАТОРНЕ ЗАВДАННЯ
1. Ознайомитися з теоретичним матеріалом викладеним вище в даній інструкції і виконати приклади програм.
2. Одержати індивідуальне завдання.
3. Розробити алгоритм розв’язання індивідуального завдання і подати його у вигляді блок-схеми.
4. Скласти програму на мовіС++ у відповідності з розробленим алгоритмом.
5. Виконати обчислення по програмі.
6. Підготувати та здати звіт про виконання лабораторної роботи.
5. СПИСОК ЛІТЕРАТУРИ
1. Керниган Б., Ритчи Д. Язык программирования С. - М. - Финансы и статистика. - 1992. – 272 с.
2. Уэйт М., Прата С., Мартин Д. Язык С. Руководство для начинающих. - М. - Мир. - 1988. –512 с.
3. К. Джамса. Учимся программировать на языке С++. М.: Мир, 1997. – 320 с
4. Герберт Шилдт. Полный справочник по C++. М. – С.-П.-К., Вильямс. – 2003. – 800 с.
5. Демидович Е. М. Основы алгоритмизации и программирования. Язык Си. (Учебное пособие). – Санкт-Петербург: “БХВ Петербург”. – 2006. – 439 с.
6. ІНДИВІДУАЛЬНІ ЗАВДАННЯ
Не використовуючи оператор циклу скласти програму, яка
1) За заданим кутом (в градусах) визначити знаки усіх тригонометричних функцій. (Не використовувати математичні функції з стандартної бібліотеки).
2) Читає натуральні числа m, n і друкує всі натуральні числа менші від n, сума цифр яких дорівнює m.
3) Обчислює корені квадратного рівняння ах2 +b*х +с=0 для заданих довільних дійсних а, b, с. У випадку відсутності дійсних коренів цього рівняння друкує відповідне повідомлення.
4) Визначити чи задана точка (x,y) належить півкругу, який описується нерівностями: x2+y2£r2 та y³0.
5) Задані дійсні числа а1, b1, с1, а2, b2, с2. Надрукувати координати точки перетину прямих, які описуються рівняннями: а1*х+b1*у=с1 та а2*х+b2*y=с2 або повідомлення про те, що прямі не перетинаються.
6) За заданим восьмизначним натуральним числом знаходить середнє арифметичне цифр цього числа та кількість ненульових цифр.
7) За заданим натуральним дев’ятизначним числом знаходить суму цифр цього числа та кількість одиниць.
8) Визначає номер максимального числа та середнє значення тільки додатних чисел з 10 чисел введених з клавіатури.
9) Визначає півсуму максимального та мінімального чисел, які знаходяться серед 10 введених з клавіатури додатних чисел.
10) Обчислює і виводить десяткове значення кожного з чисел, які є записом числа у системі числення з основою 5. З клавіатури послідовно ввести 4 п’ятизначних числа, контролюючи чи число є записаним в системі числення з основою 5.
11) Визначає номер мінімального числа та середнє значення всіх більших за –10 введених з клавіатури від’ємних чисел. (Кількість чисел 10).
12) За заданим натуральним восьмизначним числом знаходить подвоєний добуток ненульових цифр цього числа та кількість нулів.
13) За введеними трьома дійсними числами x, y, z обчислити значення
14) Обчислює і виводить десяткове значення кожного з чисел, які є записом числа у системі числення з основою 7. З клавіатури послідовно ввести 3 шестизначних числа, контролюючи чи число є записаним в системі числення з основою 7.
15) За введеним натуральним дев’ятизначним числом видруковує нове число, утворене зворотнім записом цифр введеного числа.
16) За введеними трьома дійсними числами x, y, z обчислити значення
17) За введеними трьома дійсними числами x, y, z обчислити значення
18) Визначає середнє арифметичне значення додатних чисел та кількість від’ємних чисел. Дійсні числа вводяться з клавіатури, кількість чисел 10.
19) За введеними значеннями коефіцієнтів лінійних алгебраїчних рівнянь визначити чи система цих рівнянь має розв’язок, якщо так – чи він єдиний. Система має вигляд:
20) За введеними чотирма дійсними числами x, y, z, s обчислити значення
21) За введеними трьома дійсними числами x, y, z обчислити значення
22) З клавіатури вводяться 10 додатних чисел. Обчислити кількість чисел більших за середнє арифметичне усіх введених та номери двох найбільших чисел.
23) Обчислює і виводить десяткове значення кожного з чисел, які є записом числа у системі числення з основою 8. З клавіатури послідовно ввести 4 шестизначних числа, контролюючи чи число є записаним в системі числення з основою 8.
24) З клавіатури ввести натуральне семизначне число. За сумою цифр цього числа надрукувати символ, ASCII-код якого дорівнює третій частині знайденої суми плюс 132.