Глава 2.1. Прости пресмятания с числа
В настоящата глава ще се запознаем със следните концепции и програмни техники:
- Какво представлява системната конзола?
- Как да прочитаме числа от системната конзола?
- Как да работим с типове данни и променливи, които са ни необходими при обработка на числа и операциите между тях?
- Как да изведем резултат (число) на системната конзола?
- Как да извършваме прости аритметични операции: събиране, изваждане, умножение, деление, съединяване на низ?
Видео
Системна конзола
Обикновено наричана само "конзола", системната или още компютърната конзола, представлява устройството, чрез което подаваме команди на компютъра в текстов вид и получаваме резултатите от тяхното изпълнение отново като текст.
В повечето случаи системната конзола представлява текстов терминал, т.е. приема и визуализира само текст, без графични елементи като например бутони, менюта и т.н. Обикновено изглежда като прозорец с черен/бял цвят като този:
В повечето операционни системи конзолата е достъпна като самостоятелно приложение на което пишем конзолни команди. В Windows се нарича Command Prompt, а в Linux и Mac се нарича Terminal. В конзолата се изпълняват конзолни приложения. Те четат текстов вход от командния ред и печатат изхода си като текстов изход на конзолата. В настоящата книга ще се учим на програмиране като създаваме предимно конзолни приложения. Не забравяйте да настроите конзолата (от [Project] -> [Properties] -> [Linker] -> [System] -> Console(/SUBSYSTEM:CONSOLE) ).
В С++, за въвеждане на данни се използва cin
, а за отпечатването им - cout
. Това са обекти, дефинирани в namespace std
(пространство от имена). За улеснение, пространството може да бъде добавено към нашия проект. В противен случай, както вече научихме в предходната глава, всеки път преди използването на cin
и cout
(както и други обекти, дефинирани в std) е нужно да се изписва std::
, т.е.:
std::cin >> name;
std::cout << name;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/CinCout.
Пресмятания в програмирането
За компютрите знаем, че са машини, които обработват данни. Всички данни се записват в компютърната памет (RAM памет) в променливи. Променливите са именувани области от паметта, които пазят данни от определен тип, например число или текст. Всяка една променлива в C++ има име, тип и стойност. Ето как бихме дефинирали една променлива, като едновременно с декларацията ѝ, ѝ присвояваме и стойност:
След тяхната обработка, данните се записват отново в променливи (т.е. някъде в паметта, заделена от нашата програма).
Типове данни и променливи
В програмирането всяка една променлива съхранява определена стойност от даден тип. Типовете данни могат да бъдат например: число, буква, текст (стринг), дата, цвят, картинка, списък и др.
Ето няколко примера за типове данни:
- тип цяло число: 1, 2, 3, 4, 5, …
- тип дробно число: 0.5, 3.14, -1.5, …
- тип буква от азбуката (символ): 'a', 'b', 'c', …
- тип текст (стринг): "Здрасти", "Hi", "Beer", …
С++ е силно типизиран език, тоест типът на стойността винаги трябва да бъде обозначен (2 е цяло число, 0.5 е дробно число, "Здрасти" е стринг).
В следващите примери и задачи ще разгледаме следните типове данни:
- int - за цели числа,
- double - за дробни числа,
- string - за текст.
Четене на числа от конзолата
За да прочетем цяло (не дробно) число от конзолата е необходимо да декларираме променлива, да посочим типа на числото, както и да използваме >>
(оператор за побитово изместване надясно) за прочитане на информация от системната конзола:
int num;
cin >> num;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/ReadIntNumber.
Пример: пресмятане на лице на квадрат със страна а
За пример да вземем следната програма, която прочита цяло число от конзолата, умножава го по него самото (вдига го на квадрат) и отпечатва резултата от умножението. Така можем да пресметнем лицето на квадрат по дадена дължина на страната:
cout << "a = ";
int a;
cin >> a;
int area = a * a;
cout << "Square = ";
cout << area << endl;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/SquareArea.
Ето как би работила програмата при квадрат с размер на страната 3:
Опитайте да въведете грешно число, например "hello".
Как работи примерът?
На първия ред, с int a
, е декларирана променливата от тип int
(т.е. цяло число).
На втория ред, чрез cout << "a = ";
, се печата информативно съобщение, което подканва потребителя да въведе страната на квадрата a. За печатането на информация на системната конзола се използва <<
(побитово изместване наляво). След отпечатването курсорът остава на същия ред. Оставането на същия ред е по-удобно за потребителя, чисто визуално. Използва се cout <<"…";
, а не cout << "…" << endl;
и така курсорът остава на същия ред (endl
също е част от namespace std
за преминаване на нов ред може да се използва и "\n"): cout << area << "\n"
.
На третия ред cin >> a;
се прочита цяло число от конзолата и запазва във вече дефинираната променлива а
.
На четвъртия ред int area = a * a;
се създава нова променлива area
, в която резултатът от умножението на a
по a
се записва.
На петия ред cout << "Square area = ";
се отпечатва посочения текст, без да се преминава на нов ред. Отново се използва cout << "…"
, а не cout << "…" << endl;
и така курсорът остава на същия ред, за да може след това да се отпечата и изчисленото лице на квадрата.
На шестия ред, последната команда cout << area;
отпечатва стойността на променливата area
.
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#0.
Четене на дробно число от конзолата
За да прочетем дробно число от конзолата е необходимо отново да декларираме променлива, да посочим типа на числото, както и да използваме >>
(оператор за побитово изместване надясно):
double num;
cin >> num;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/ReadDoubleNumber.
Пример: прехвърляне от инчове в сантиметри
Да напишем програма, която чете дробно число в инчове и го обръща в сантиметри:
cout << "Inches = ";
double inches;
cin >> inches;
double centimeters = inches * 2.54;
cout << "Centimeters = ";
cout << centimeters << endl;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/InchesToCentimeters.
Да стартираме програмата и да се уверим, че при подаване на стойност в инчове, получаваме коректен резултат в сантиметри:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#1.
Четене на текст
При работа с текст, библиотеката <string>
е нужно да бъде включена. За прочитане на текст от системната конзола си декларираме нова променлива (от тип стринг) и използваме >>
(оператор за побитово изместване надясно):
#include <iostream>
#include <string>
using namespace std;
int main {
string str;
cin >> str;
return 0;
}
Може да тествате примера онлайн: https://repl.it/@vncpetrov/ReadText.
Пример: поздрав по име
Да напишем програма, която въвежда името на потребителя и го поздравява с текста "Hello, име".
string name;
getline(cin, name);
cout << "Hello, " << name << "!\n";
Може да тествате примера онлайн: https://repl.it/@vncpetrov/GreetingByName.
В този пример е използван друг начин за прочитане на входните данни, тъй като не се знае колко думи ще бъдат въведени за име. Поради тази причина, в С++ съществува функцията getline(…)
, с чиято помощ се извличат всички символи, написани на един ред (включително и интeрвалите). В глава "Функции"** ще се запознаем по-подробно с функциите, но сега нека разгледаме какво трябва да запишем в дадената.
На първо място в скобите поставяме обекта cin
, който "взима" входните данни и ги запаметява в променлива. За да укажем точно в коя променлива, на второ място изписваме нейното име (в този случай - name).
Както се забелязва, на последния ред стрингът "Hello, " е преди променливата name
, а другият стринг "!" - след нея. Всички те ще бъдат отпечатани в тази последователност, благодарение на <<
(операторът за побитово изместване наляво), който ги свързва в единен текст:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#2.
Печатане на текст и числа
string firstName, lastName, town;
int age;
cin >> firstName;
cin >> lastName;
cin >> age;
cin >> town;
cout << "You are " << firstName << " " << lastName <<
", a " << age << "-years old person from " << town << "." << endl;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/ConcatenateData.
Ето резултатът, който ще получим, след изпълнение на този пример:
Може да ви направи впечатление, че firstName
, lastName
, town
са написани на един ред. Това е така, защото когато променливите са от еднакъв тип, те могат се декларират на един ред.
И в този пример обърнете внимание как всяка една променлива трябва да бъде подадена в реда, в който искаме да се печата. Това се отнася и за местата, където се налага да сложим интервал (трябва изрично да укажем кои са те - в случая е използван празен стринг " "
, между firstName
и lastName
, но съществуват и други варианти).
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#3.
Аритметични операции
Да разгледаме базовите аритметични операции в програмирането.
Събиране на числа (оператор +
)
Можем да събираме числа с оператора +
:
int a = 5;
int b = 7;
int sum = a + b; // 12
Може да тествате примера онлайн: https://repl.it/@vncpetrov/SumOperator.
Изваждане на числа (оператор -
)
Изваждането на числа се извършва с оператора -
:
int a, b;
cin >> a;
cin >> b;
int result = a - b;
Може да тествате примера онлайн: https://repl.it/@vncpetrov/SubtractionOperator.
Ето резултатът от изпълнението на програмата (при числа 10 и 3):
Умножение на числа (оператор *
)
За умножение на числа използваме оператора *
:
int a = 5;
int b = 7;
int product = a * b; // 35
Може да тествате примера онлайн: https://repl.it/@vncpetrov/MultiplyOperator.
Деление на числа (оператор /)
Делението на числа се извършва с оператора /
. Той работи различно при цели и при дробни числа.
- Когато делим две цели числа, се извършва целочислено деление и полученият резултат е цяло число с отрязана дробна част. Например 11 / 3 = 3.
- Когато делим две числа, от които поне едното е дробно, се извършва дробно деление и полученият резултат е дробно число, както в математиката. Например 11 / 4.0 = 2.75. При невъзможност за точно разделяне, резултатът се закръгля, например 11.0 / 3 = 3.66666666666667.
- Целочисленото деление на 0 предизвиква грешка по време на изпълнение (runtime exception).
- Дробното деление на 0 не предизвиква грешка, а резултатът е +/- безкрайност или специалната стойност inf. Например 5 / 0.0 = ∞.
Ето няколко примера за използване на оператора за делене:
int a = 25;
cout << a / 4 << endl; // 6 - целочислено деление, което дава резултат цяло число.
// При делението на цели числа, дробната част се отрязва.
cout << a / 4.0 << endl; // 6.25 – дробно деление, което дава разултат дробно число.
// Указали сме числото 4 да се интерпретира като дробно,
// като сме добавили десетичната точка, следвана от нула.
// (ако f беше от тип int, дробната част пак щеше да бъде отрязана, а
// резултатът отново 6)
cout << a / 0 << endl; // Грешка: целочислено деление на 0
Може да тествате примера онлайн: https://repl.it/@vncpetrov/DivisionOperator1.
Да разгледаме и няколко примера за целочислено деление (запомнете, че при деление на цели числа в езика C++ резултатът е цяло число):
int a = 25;
cout << a / 7 << endl; // Целочислен резултат: 3
cout << a / 9 << endl; // Целочислен резултат: 2
Може да тествате примера онлайн: https://repl.it/@vncpetrov/DivisionOperator2.
Да разгледаме няколко примера за деление на дробни числа. При дробно делене резултатът винаги е дробно число и деленето никога не дава грешка и работи коректно със специалните стойности +∞ и -∞:
int a = 15;
cout << a / 2.0 << endl; // Дробен резултат: 7.5
cout << a / 0.0 << endl; // Резултат: inf
cout << -a / 0.0 << endl; // Резултат: -inf
cout << 0.0 / 0.0 << endl; // Резултат: -nan(Not a Number), т.е. резултатът
// от операцията не е валидна числена стойност
Може да тествате примера онлайн: https://repl.it/@vncpetrov/DivisionOperator3.
Съединяване на текст и число
Операторът +
освен за събиране на числа служи и за съединяване на текст (долепяне на два символни низа един след друг). В програмирането съединяване на текст с текст или с число наричаме "конкатенация". Ето как можем да съединяваме текст и число с оператора +
. Не забравяйте да добавите библиотеката <string>
:
string firstName = "Maria";
string lastName = "Ivanova";
string age = "19";
string str = firstName + " " + lastName + " @ " + age;
cout << str << endl; // Maria Ivanova @ 19
Може да тествате примера онлайн: https://repl.it/@vncpetrov/Concatenation.
Числата също могат да бъдат представяни като текст. Следователно, конкатенацията е възможна. Ето още един пример:
string a = "1.5";
string b = "2.5";
string concatenation = "The sum is: " + a + b;
cout << concatenation << endl; // The sum is: 1.52.5
Може да тествате примера онлайн: https://repl.it/@vncpetrov/Concatenation2.
Числени изрази
В програмирането можем да пресмятаме и числови изрази, например:
int expr = (3 + 5) * (4 – 2);
Може да тествате примера онлайн: https://repl.it/@vncpetrov/Expr.
В сила е стандартното правило за приоритетите на аритметичните операции: умножение и деление се извършват винаги преди събиране и изваждане. При наличие на израз в скоби, той се изчислява пръв, но ние знаем всичко това от училищната математика.
Пример: изчисляване на лице на трапец
Да напишем програма, която въвежда дължините на двете основи на трапец и неговата височина (по едно дробно число на ред) и пресмята лицето на трапеца по стандартната математическа формула:
Ако (b1 + b2) * h се дели без остатък на 2.0, десетичната точка и нула ще бъдат пренебрегнати и няма да бъдат изписани на конзолата. |
Ако стартираме програмата и въведем за страните съответно 3
, 4
и 5
, ще получим следния резултат:
3
4
5
Trapezoid area = 17.5
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#4.
Пример: периметър и лице на кръг
Нека напишем програма, която при въвеждане радиуса r на кръг изчислява лицето и периметъра на кръга / окръжността.
Формули:
- Лице = π * r * r
- Периметър = 2 * π * r
- π ≈ 3.14159265358979323846…
Нека изпробваме програмата с радиус r = 10
:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#5.
Пример: лице на правоъгълник в равнината
Правоъгълник е зададен с координатите на два от своите два срещуположни ъгъла. Да се пресметнат площта и периметъра му:
В тази задача трябва да съобразим, че ако от по-големия x
извадим по-малкия x
, ще получим дължината на правоъгълника. Аналогично, ако от по-големия y
извадим по-малкия y
, ще получим височината на правоъгълника. Остава да умножим двете страни. Ето примерна имплементация на описаната логика:
Използваме fabs(x2 - x1)
и fabs(y2 - y1)
, за да намерим абсолютната стойност на получената разлика, тъй като не знаем кое измежду двете числа е по-голямо. Тази функция се съдържа в библиотеката <cmath>
.
При стартиране на програмата със стойностите от координатната система в условието, получаваме следния резултат:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#6.
Какво научихме от тази глава?
Да резюмираме какво научихме от тази глава на книгата:
- Въвеждане на текст, цяло число и дробно число, чрез
cin
:cin >> age;
. - Извършване на пресмятания с числа и използване на съответните аритметични оператори [+, -, *, /, ()]:
int sum = 5 + 3;
. - Извеждане на единен текст, чрез
cout
:cout << "My names is" << firstName << " " << lastName << endl;
.
Упражнения: прости пресмятания
Нека затвърдим наученото в тази глава с няколко задачи.
Празно Visual Studio решение (Empty Project)
В настоящото практическо занимание ще използваме Solution с няколко проекта, за да организираме решенията на задачите от упражненията, т.е. всяка задача ще бъде в отделен проект, а всички проекти в общ VS Solution. Започваме, като създадем празен проект (Empty Project) във Visual Studio:
- Стартираме Visual Studio.
- Създаваме нов Empty Project: [File] -> [New] -> [Project…].
Избираме от диалоговия прозорец [Visual C++] -> [Empty Project] и даваме подходящо име на проекта, например "Simple-Calculations":
Сега имаме създаден празен Visual Studio Solution (с 0 проекта в него):
Задача: пресмятане на лице на квадрат
Първата задача от тази тема е следната: да се напише конзолна програма, която въвежда цяло число a и пресмята лицето на квадрат със страна a. Задачата е тривиална: прочитаме число от конзолата, умножаваме го само по себе си и отпечатваме получения резултат на конзолата.
Насоки и подсказки
Създаваме нов проект в съществуващото Visual Studio решение. В Solution Explorer кликваме с десен бутон на мишката върху Solution 'Simple-Calculations' и избераме [Add] -> [New Project…]:
Ще се отвори диалогов прозорец за избор на тип проект, който да бъде създаден. Избираме [Visual C++] -> [Empty Project] и му задаваме смислено име, например "Square-Area":
След това добавяме нов C++ файл (.cpp), който трябва да се казва Main.cpp (от [Source Files] -> [Add] -> [New Item…]):
Във файла няма нищо написано. Както знаем, на първия ред е необходимо да добавим библиотеката <iostream>
, а после включваме и именованото простраство std. След това пишем main()
функцията, чрез която работата на нашата програма е възможна:
Остава да напишем кода за решаване на задачата. За целта отиваме в тялото на main()
функцията и въвеждаме следния код:
Кодът въвежда цяло число със cin >> a;
, след това изчислява лицето на квадрата (area = a * a;
) и накрая печата стойността на променливата area
на конзолата. Стартираме програмата с [Ctrl + F5] и я тестваме дали работи коректно с различни входни стойности:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#0.
Трябва да получите 100 точки (напълно коректно решение):
Задача: от инчове към сантиметри
Да се напише програма, която чете от конзолата число (не непременно цяло) и преобразува числото от инчове в сантиметри. За целта умножава инчовете по 2.54 (защото 1 инч = 2.54 сантиметра).
Насоки и подсказки
Първо създаваме нов C++ проект в решението "Simple-Calculations". За целта кликаме с десен бутон на мишката върху решението в Solution Explorer и избираме [Add] -> [New Project…]. Избираме [Visual C++] -> [Empty Project] и задаваме име "Inches-to-Centimeters":
След това добавяме Main.cpp файла (от [Source Files] -> [Add] -> [New Item…]):
Следва да напишем кода на програмата:
Стартираме програмата с [Ctrl + F5]:
Изненада! Какво става? Програмата не работи правилно… Всъщност това не е ли предходната програма? Във Visual Studio текущият активен проект в един Solution е маркиран в получерно и може да се сменя. Както виждаме, маркираният проект е "Square-Area":
За да включим режим на автоматично преминаване към текущия проект, кликаме върху решението с десния бутон на мишката и избираме [Set StartUp Projects…]:
Ще се появи диалогов прозорец, от който трябва да се избере [Startup Project] -> [Current Selection]:
Сега отново стартираме програмата, както обикновено с [Ctrl + F5]. Този път ще се стартира текущата отворена програма, която преобразува инчове в сантиметри. Изглежда работи коректно:
Сега да превключим към преходната програма (лице на квадрат). Това става с двоен клик на мишката върху файла Main.cpp от предходния проект "Square-Area" в панела [Solution Explorer] на Visual Studio:
Натискаме пак [Ctrl + F5]. Този път трябва да се стартира другият проект:
Превключваме обратно към проекта "Inches-to-Centimeters" и го стартираме с [Ctrl + F5]:
Превключването между проектите е много лесно, нали? Просто избираме файла със сорс кода на програмата, кликваме го два пъти с мишката и при стартиране тръгва програмата от този файл.
Да тестваме с дробни числа, например с 2.5:
В зависимост от регионалните настройки на операционната система, е възможно вместо десетична точка (US настройки) да се използва десетична запетая (BG настройки). |
Ако програмата очаква десетична точка и бъде въведено число с десетична запетая или обратното (бъде въведена десетична точка, когато се очаква десетична запетая) е възможно да се получи грешка и тя да бъде изписана на конзолата. Затова е препоръчително да променим настройките на компютъра си, така че да се използва десетична точка:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#1.
Решението би трябвало да бъде прието като напълно коректно:
Задача: поздрав по име
Да се напише програма, която чете от конзолата име на човек и отпечатва Hello, <name>!
, където <name>
е въведеното преди това име.
Насоки и подсказки
Първо създаваме нов C++ проект с име "Greeting" в решението "Simple-Calculations":
Следва да напишем кода на програмата. Ако се затруднявате, може да ползвате примерния код по-долу:
Стартираме програмата с [Ctrl+F5] и я тестваме дали работи:
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#2.
Задача: съединяване на текст и числа
Напишете C++ програма, която прочита от конзолата име, фамилия, възраст и град и печата съобщение от следния вид: You are <firstName> <lastName>, a <age>-years old person from <town>
.
Насоки и подсказки
Добавяме към текущото Visual Studio решение още един C++ проект с име "Concatenate-Data". Пишем кода, който чете входните данни от конзолата:
Кодът, който отпечатва описаното в условието на задачата съобщение, е целенасочено замъглен и трябва да се допише от читателя:
Следва да тестваме решението локално с [Ctrl + F5] и примерни входни данни.
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#3.
Задача: лице на трапец
Напишете програма, която чете от конзолата три числа b1, b2 и h и пресмята лицето на трапец с основи b1 и b2 и височина h. Формулата за лице на трапец е (b1 + b2) * h / 2.
На фигурата по-долу е показан трапец със страни 8 и 13 и височина 7. Той има лице (8 + 13) * 7 / 2 = 73.5.
Насоки и подсказки
Отново трябва да добавим към текущото Visual Studio решение още един C++ проект с име "Trapezoid-Area" и да напишем кода, който чете входните данни от конзолата, пресмята лицето на трапеца и го отпечатва:
Кодът на картинката е нарочно размазан, за да помислите върху него и да го допишете сами.
Тествайте решението локално с [Ctrl + F5] и въвеждане на примерни данни.
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#4.
Задача: периметър и лице на кръг
Напишете програма, която чете от конзолата число r и пресмята и отпечатва лицето и периметъра на кръг/окръжност с радиус r.
Примерен вход и изход
Вход | Изход |
---|---|
3 | Area = 28.2743 Perimeter = 18.8496 |
4.5 | Area = 63.6173 Perimeter = 28.2743 |
Насоки и подсказки
За изчисленията можете да използвате следните формули:
Area = pi * r * r
.Perimeter = 2 * pi * r
.
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#5.
Задача: лице на правоъгълник в равнината
Правоъгълник е зададен с координатите на два от своите срещуположни ъгъла (x1, y1) – (x2, y2). Да се пресметнат площта и периметъра му. Входът се чете от конзолата. Числата x1, y1, x2 и y2 са дадени по едно на ред. Изходът се извежда на конзолата и трябва да съдържа два реда с по една число на всеки от тях – лицето и периметъра.
Примерен вход и изход
Вход | Изход |
---|---|
60 20 10 50 |
1500 160 |
30 40 70 -10 |
2000 180 |
600.25 500.75 100.50 -200.5 |
350449.6875 2402 |
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#6.
Задача: лице на триъгълник
Напишете програма, която чете от конзолата страна и височина на триъгълник и пресмята неговото лице. Използвайте формулата за лице на триъгълник: area = a * h / 2. Закръглете резултата до 2 цифри след десетичния знак използвайки fixed << setprecision(2)
, като включите библиотеката <iomanip>
).
Примерен вход и изход
Вход | Изход |
---|---|
20 30 |
Triangle area = 300 |
15 35 |
Triangle area = 262.5 |
7.75 8.45 |
Triangle area = 32.74 |
1.23456 4.56789 |
Triangle area = 2.82 |
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#7.
Задача: конзолен конвертор - от градуси °C към градуси °F
Напишете програма, която чете градуси по скалата на Целзий (°C) и ги преобразува до градуси по скалата на Фаренхайт (°F). Потърсете в Интернет подходяща формула, с която да извършите изчисленията. Закръглете резултата до 2 символа след десетичния знак. Ето няколко примера:
Примерен вход и изход
Вход | Изход |
---|---|
25 | 77 |
0 | 32 |
-5.5 | 22.1 |
32.3 | 90.14 |
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#8.
Задача: конзолен конвертор - от радиани в градуси
Напишете програма, която чете ъгъл в радиани (rad
) и го преобразува в градуси) (deg
). Потърсете в Интернет подходяща формула. Закръглете резултата до най-близкото цяло число използвайки функцията round(degree)
, която се намира в библиотеката <cmath>
.
Примерен вход и изход
Вход | Изход |
---|---|
3.1416 | 180 |
6.2832 | 360 |
0.7854 | 45 |
0.5236 | 30 |
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#9.
Задача: конзолен конвертор - USD към BGN
Напишете програма за конвертиране на щатски долари (USD) в български лева (BGN). Закръглете резултата до 2 цифри след десетичния знак. Използвайте фиксиран курс между долар и лев: 1 USD = 1.79549 BGN.
Примерен вход и изход
Вход | Изход |
---|---|
20 | 35.91 BGN |
100 | 179.55 BGN |
12.5 | 22.44 BGN |
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/1358#10.
Задача: * конзолен междувалутен конвертор
Напишете програма за конвертиране на парична сума от една валута в друга. Трябва да се поддържат следните валути: BGN, USD, EUR, GBP. Използвайте следните фиксирани валутни курсове:
Курс | USD | EUR | GBP |
---|---|---|---|
1 BGN | 1.79549 | 1.95583 | 2.53405 |
Входът e сума за конвертиране, входна валута и изходна валута. Изходът е едно число – преобразуваната сума по посочените по-горе курсове, закръглен до 2 цифри след десетичната точка.
Примерен вход и изход
Вход | Изход |
---|---|
20 USD BGN |
35.91 BGN |
100 BGN EUR |
51.13 EUR |
12.35 EUR GBP |
9.53 GBP |
150.35 USD EUR |
138.02 EUR |
Тестване в Judge системата
Тествайте решението си тук: https://judge.softuni.org/Contests/Practice/Index/504#11.