Разклонени алгоритми

Въведение

Задача 1: Да се напише програма, която въвежда от клавиатурата реално число r. Програмата да изчислява и отпечатва периметъра на окръжност с радиус r.

https://www.jdoodle.com/embed/v0/QzT

#include <iostream>
using namespace std;
int main() {
    const double PI = 3.14;
    double p, r;
    cout<<"r = ";
    cin>>r;
    p = 2 * PI * r;
    cout<<"p = "<<p;
    return 0;
}

Какво ще се случи, ако за стойност на радиуса бъде въведено отрицателно число?
За да бъде прецизно решена задачата, е необходимо да направим проверка за коректност на данните и само при коректно въведени такива, да се извършат изчисленията. В противен случай, програмата трябва да изведе подходящо информиращо съобщение.

Алгоритъм, чието изпълнение се разделя на различни последователности от действия, в зависимост от дадено условие, се нарича разклонен алгоритъм.

Условен оператор. Кратка форма.

Синтаксис:
if(<условие>) <оператор>;
условие: логически израз;
<оператор>: произволен, допустим в С++ оператор. Ако искаме да поставим повече от един оператор, необходимо е да използваме конструкция блок {…}.
Семантика:
1. Изчислява се стойността на логическия израз.
2. Ако условието има стойност true, се изпълнява операторът, след което програмата продължава със следващия по ред оператор.
3. Ако условието има стойност false, програмата продължава с оператора, зададен след конструкцията if.

Условен оператор. Пълна форма.

Синтаксис:
if(<условие>) <оператор1>;
else <оператор2>;

условие е логически израз;
<оператор1> и <оператор2>, са произволни, допустими в С++ оператори. Ако искаме да поставим повече от един оператор, необходимо е да използваме конструкция блок {…}.
Семантика:
1. Изчислява се стойността на логическия израз.
2. Ако условието има стойност true, се изпълнява операторът след if <operator1>. След което програмата продължава със следващия по ред оператор след конструкцията if (<operator2> НЕ СЕ изпълнява).
3. Ако условието има стойност false, програмата изпълнява <оператор2> (<operator1> НЕ СЕ изпълнява).

Решение на задача 1

https://www.jdoodle.com/embed/v0/QA5

#include <iostream>
using namespace std;
int main() {
    const double PI = 3.14;
    double p, r;
    cout<<"r = ";
    cin>>r;
    if(r>=0)
    {
        p = 2 * PI * r;
        cout<<"p = "<<p;
    }
    else cout<<"Некоректни данни! Радиусът не може да бъде отрицателно число.";
	return 0;
}

Упражнение

Задача 2

Да се състави програма, която въвежда от клавиатурата две различни реални числа. Програмата да изведе по-голямото от тях.

Задача 3

Да се състави програма, която въвежда последователно от клавиатурата три  реални числа и извежда най-голямото от тях.

Задача 4

Да се напише програма, която въвежда от клавиатурата 3 реални числа и ги сортира във възходяш ред. Въвеждането на числата става на един ред, разделени с интервал. Сортираните числа се извеждат на един ред, разделени с интервал.

Вложени условни оператори

Тъй като всеки един от операторите в частите след if и else е произволен изпълним оператор в С++, то се допуска той да бъде и условен оператор. В такъв случай говорим за вложени условни оператори.

if(<условие1>)
{
     if(<
условие2>) <оператор1>;
     else <
оператор2>;
}
else
{
     if(<
условие3>) <оператор3>;
     else <
оператор4>;
}

Задачи

Задача 5

Напишете програма, която намира корена на линейното урав нение a*x + b = 0. На изхода се извежда стойността на х и подходящо съобщение.

Задача 6

Напишете програма, която определя в кой квадрант лежи точката А с координати (ха, уа). Предполага се, че х не лежи на никоя от координатните оси.

Задача 7

Да се напише програма за намиране корените на квадратното уравнение а*х*x + b*x + c = 0

Задача 8

Да се напише програма, която въвежда от клавиатурата реално число. Да се изведе абсолютната му стойност, без да се използва функцията fabs.

Задача 9

Да се напише програма, която въвежда символ от клавиатурата. Да се провери и отпечата дали въведеният символ е число.
Упътване: Използвайте кодовете на символите. Числата от 0 до 9 имат поредни кодове в ASCII таблицата.

Задача 10

Да се напише програма, която въвежда от клавиатурата цяло трицифрено число. Да се провери дали сумата от цифрите на числото е четно число.

Задача 11

Да се напише програма, която въвежда от клавиатурата цяло четирицифрено число. Да се провери дали произведението на цифрите е кратно на 3.

Задача 12

Да се напише програма, която въвежда от клавиатурата цяло четирицифрено число. Да се провери дали числото е симетрично, т.е. записът му отляво надясно и отдясно наляво е еднакъв.

Задача 13*

Да се напише програма, която въвежда от клавиатурата три цели числа, различни от нула. Програмата да извежда разликата между максималното четно число и минималното нечетно число между тях. Ако въведените числа са само нечетни, да извежда минималното от тях. Ако са само четни – максималното от тях.

Задача 14

Да се напише програма, която въвежда от клавиатурата трицифрено число n. Програмата проверява дали цифрите му са различни. Ако са различни, извежда „yes“ и произведението на първата и трета цифра на числото. В противен случай, извежда „no“ и числото изписано в обратен ред.