Читайте также:
|
|
Приклад 2.1.
Обчислити значення функції y (b, c, x):
//ex2_1.cpp. Вкладені розгалуження
#include<iostream> //файл для операцій введення та виведення
#include<math.h> //заголовний файл для математичних функцій
using namespace std; //простір стандартних імен
int main() //ex3_1 обчислення функції
{
float y,b,c,x; //змінні для результату та вхідних даних
cout<<"define y: "<<endl; //умова задачі
cout<<"y=b*x+c, if x<=-4"<<endl;
cout<<"y=b*sqr(x), if (x<4)and(x>-4)"<<endl;
cout<<"y=b*x/c, if (x>-4)and(c<>0)"<<endl;
cout<<"y=1, if(c=0)and(x>4)"<<endl;
cout<<"input variables b,c,x: ";
cin>>b>>c>>x; //увести дані для розрахунків
if (x<=-4) y=b*x+c; //обчислити перший вираз
else if (x<4 && x>-4) y=b*pow(x,2); //обчислити третій вираз
else if (c!=0) y=b*x/c; //обчислити другий вираз
else y=1;
cout<<" b= "<<b<< " c= "<<c<<" x ="<<x<<endl;
cout<<"rezult: y= "<<y<<endl; //вивести результат
} //кінець програми
Рис.2.3. Результати роботи програми ex2_1.
Вкладені розгалуження
Приклад 2.2
Знайти розв’язки квадратного рівняння ax 2 + bx + c = 0, коефіцієнти якого є дійсними числами, що їх вводить користувач. Залежно від значень коефіцієнтів a, b, c та дискримінанта d = b 2 - 4 ac можливі такі результати: всі дійсні числа є коренями (a = 0, b = 0, c = 0), коренів немає (a = 0, b = 0, c ¹ 0), є один корінь (a = 0, b ¹ 0), є два різних дійсних корені (a ¹ 0, d > 0), два дійсних корені збігаються (a ¹ 0, d = 0) або існує два комплексно-спряжених корені (a ¹ 0, d < 0).
//ex2_2.cpp. Розв’язати квадратне рівняння
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float a,b,c,d; //коефіцієнти квадратного рівняння та дискримінант
float x1,x2; //корені квадратного рівняння
cout<<"solution of quadratic equation"<<endl;
cout<<"enter koefficients: a,b,c"<<endl;
cin>>a>>b>>c; //ввести значення коефіцієнтів
if (a!=0)
{
d=pow(b,2)-4*a*c; //обчислити дискримінант
if (d>0)
{
x1=(-b+sqrt(d))/(2*a); //розрахувати корені рівняння
x2=(-b-sqrt(d))/(2*a);
cout<<"x1= "<<x1<<" x2= "<<x2<<endl;
}
else
if (d==0)
cout<<"roots are equal: x= "<<-b/(2*a)<<endl;
else
cout<<"complex roots"<<endl; //дискримінант < 0
} //кінець гілки a!=0
else //а==0
if (b!=0)
cout<<"x= "<<-c/b<<endl; //лінійне рівняння
else
if (c!=0) //рівняння типу "ненульове число = 0"
cout<<"no roots"<<endl;
else cout<<"аll real numbers are the roots"<<endl;
//рівняння типу 0 = 0
} //кінець програми
Рис. 2.4. Результати роботи програми ex2_2.
Приклад 2.3
Запрограмуємо калькулятор, що виконує чотири арифметичні дії над дійсними числами. Користувач вводить із клавіатури символ операції та значення операндів, а програма повинна обчислити результат арифметичної дії.
//ex3_3.cpp. Калькулятор
#include<iostream>
#include<math.h>
using namespace std;
int main(){
char operation; //cимвол арифметичної операції
float result,operand1,operand2; //результат операції, операнди
bool flag; //ознака некоректного символу операції
cout<<"calculator "<<endl; //введення даних
cout<<"enter operand1: "; cin>>operand1;
cout<<"enter operation + - * /: "; cin>>operation;
cout<<"enter operand2: "; cin>>operand2;
flag=true;
switch (operation) //aналіз символу арифметичної операції
{ //виконання арифметичних дій
case '*': result=operand1*operand2; break;
case '+': result=operand1+operand2; break;
case '-': result=operand1-operand2; break;
case '/': if (operand2!=0) //запобігання діленню на нуль
result=operand1/operand2;
else{
cout<<"division by zero"<<endl;
flag=false; //ознака помилки
}
break;
default:
flag=false; //уведено помилковий символ операції
cout<<"invalid operation"<<endl;
break;
} //кінець оператора switch
//виведення результату
if (flag!=false) cout<<"result= "<<result<<endl;
else cout<<"result not defined"<<endl;
} //кінець програми
Рис. 2.5. Результати роботи програми ex2_3.
Калькулятор
2.3. Варіанти завдань
1. | 13. |
2. | 14. |
3. | 15. |
4. | 16. |
5. | 17. |
6. | 18. |
7. | 19. |
8. | 20. |
9. | 21. |
10. | 22. |
11. | 23. Визначити умови взаємного розташування двох прямих, що задаються коефіцієнтами рівнянь вигляду ax + by + c = 0 (паралельні, перпендикулярні, перетиняються, збігаються) |
12. | 24. Визначити тип трикутника за значеннями уведених його сторін (рівнобедрений, рівнобокій, прямокутний, різнобокій, не існує). |
2.4 Контрольні запитання
1. Як формується складена умова, що об’єднує декілька простих умов?
2. Наведіть синтаксис оператора одноальтернативного розгалуження.
3. До яких типів даних не може належати значення виразу-селектора в операторі вибору?
4. Яка структура працює ефективніше: вкладені оператори if...else чи серія операторів if? Відповідь обґрунтуйте.
5. Чи можна перервати роботу програми за допомогою оператора break?
6. Чому в гілках оператора switch слід використовувати оператор break?
7. Що таке умовний вираз і як він записується?
8. Що працює ефективніше: умовний вираз чи оператор if...else?
Циклічні обчислювальні процеси
Лабораторна робота 3
Мета роботи.
– вивчити особливості циклічних обчислювальних процесів
– опанувати технологію використання операторів циклів
– навчитися розробляти алгоритми та програми циклічних процесів
3.1 Теоретичні відомості
Алгоритмічна конструкція, що дозволяє виконавцеві алгоритму повторювати певну послідовність дій задану кількість разів, називається конструкцією повторення або циклічною. Кожне виконання операторів тіла циклу супроводжується перевіркою умови повторення циклу і називається його ітерацією. Якщо умова повторення істинна, то тіло циклу виконується ще раз, якщо хибна, то виконання циклу припиняється і здійснюється перехід до виконання наступного за циклом оператора. Змінні, значення яких модифікуються в тілі циклу і впливають на істинність умови повторення, називаються параметрами циклу. Виконанню будь-якого циклу має передувати ініціалізація його параметрів. У мовах С/С++ є три різновиди операторів циклу: оператор циклу з передумовою, оператор циклу з постумовою та оператор циклу з лічильником
3.1.1. Цикл із передумовою
У циклі з передумовою перша перевірка умови продовження циклу відбувається ще до першого виконання його тіла. Це означає, що за деяких значень параметрів циклу його тіло може не виконатися жодного разу. Цей тип циклу застосовують лише у тому випадку, коли кількість повторень є невідомою до початку виконання циклу Синтаксис оператора циклу з передумовою:
while (<умова продовження циклу>)
<оператор>;
Тут while (<умова продовження циклу>) є заголовком циклу, <оператор> — його тілом. Тіло циклу може бути операторним блоком і містити в собі будь-які оператори: циклу, вибору, присвоєння тощо. Умова продовження циклу повинна бути виразом булевого типу.
3.1.2. Цикл із постумовою
Як і цикл із передумовою, цикл із постумовою застосовують тоді, коли кількість ітерацій циклу є невідомою до початку його виконання. Умова продовження циклу з постумовою записується після тіла циклу та вперше перевіряється після виконання операторів тіла. Цикл з постумовою за будь-яких обставин буде виконано принаймні один раз. Синтаксис оператора циклу з постумовою такий:
do { <оператор1;>... <операторN;> } while (<умова повторення циклу>);
Тут do, while — зарезервовані слова, <оператор1>;...<операторN>; — тіло циклу; <умова повторення циклу> — деякий булів вираз.
3.1.3. Цикл із лічильником
Відстежити істинність умови повторення циклу дозволяє спеціальний різновид параметра циклу, лічильник ітераці й. Лічильник — це змінна, що під час кожного повторення збільшується на одиницю. В операторі циклу з лічильником облік числа виконаних ітерацій вказується у заголовку, і тому цей оператор є зручною формою запису циклів із наперед визначеною кількістю повторень. Синтаксис оператора циклу з лічильником такий.
for ([<вираз1>]; [<вираз2>];[<вираз3>])
<оператор;>
Тут for — зарезервоване слово («для»); <вираз1> ініціалізує лічильник та виконується один раз на початку циклу; <вираз2> — деякий булів вираз, котрий визначає умову повторення циклу; <вираз3> змінює значення лічильника циклу, найчастіше це просто операція інкремента чи декремента; <оператор> — простий або складений оператор, що є тілом циклу. Фраза for() є заголовком циклу, а зазначений після круглих дужок оператор — тілом циклу. Найчастіше <вираз1> записують у вигляді <лічильник>=<початкове значення>; <вираз2> є виразом відношення (<, >, <=, >=,!=, ==), в якому порівнюються поточне та кінцеве значення лічильника. Початкове та кінцеве значення лічильника — це вирази того самого перелічуваного типу; лічильник — це змінна перелічуваного типу, що є узгодженим за присвоюванням з типом початкового та кінцевого значення.
Дата добавления: 2015-08-27; просмотров: 146 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Операторний блок | | | Приклад алгоритму та програми |