Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
___звіт___1.doc
Скачиваний:
16
Добавлен:
08.02.2016
Размер:
239.1 Кб
Скачать
    1. Програмна реалізація алгоритмів розгалужених структур

Умовний оператор if використовується для розгалуження процесу обчислень на два напрямки.

1 0

Блок операторів 1

Блок операторів 2

рис.5 алгоритмічна конструкція розгалуження

Формат оператора:

if (вираз) оператор_1; [else оператор_2;]

Спочатку обчислюється вираз, який може мати арифметичний тип або тип покажчика. Якщо воно не дорівнює нулю (має значення true), виконується перший оператор, інакше - другий. Після цього управління передається на оператор, наступний за умовним. Одна з гілок може бути відсутнім, логічніше опускати Друга гілка разом з ключовим словом еlse. Якщо у якої гілки потрібно виконати кілька операторів, їх необхідно укласти в блок, інакше компілятор не зможе зрозуміти, де закінчується розгалуження. Блок може містити будь-які оператори, в тому числі опису та інші умовні оператори (але не може складатися з одних описів). Необхідно враховувати, що змінна, описана в блоці, поза блоком не існує. Поширена помилка при записі умовних операторів - використання у виразах замість перевірки на рівність ('== ^ простого присвоєння (='), наприклад, 1f (a=l) b=0;

Синтаксичної помилки немає, так як операція присвоювання формує результат, який оцінюється на рівність / нерівність нулю. У даному прикладі присвоювання змінної b буде виконано незалежно від значення змінної а. Тому у виразах перевірки змінної на рівність константі константу рекомендується записувати зліва від операції порівняння: if (1 == а) b = 0;. Друга помилка - невірний запис перевірки на приналежність діапазону. Наприклад, щоб перевірити умову 0 <х <1, можна записати його в умовному операторі безпосередньо ,так як буде виконано спочатку порівняння 0 <х, а йогорезультат(true або false,перетворене в int) буде порівнюватися з 1. Правильний спосіб запису: 1f (0 <x && x <1) .

Задача 3.2.1

Відомо дві швидкості: одна в кілометрах за годину, інша — в метрах за секунду. Яка зі швидкостей більша?

Вхідні дані: v1, v2.

Вихідні дані: більша зі швидкостей.

#include<iostream.h>

int main()

{

int v1, v2;

cout<<”Введіть швидкості: v1 (км/год), v2(м/с) “;

cin>>v1>>v2;

v1 = v1*1000/3600;

if (v1>v2)

cout<<”v1>v2”<<endl;

else

cout<<”v1<v2”<<endl;

return0;

}

1 0

рис.6 блок-схема до задачі 3.2.1

Задача 3.2.2

Обчислити y при різних значеннях x.

Вхідні дані: x

Вихідні дані: y

include<iostream.h>

include<math.h>

int main()

{

double x, y;

const float a = 1.8;

const float pi = 3.14;

cout<<” x = “;

cin>>x;

if(x<=0)

y = 0;

else

if(x<=1)

y = x*x – x/a;

else

y = pow(x, 3) – sin(x*x*pi)-1;

cout<<”y = “<<y<<endl;

return 0;

}

1 0

1 0

рис.7 блок-схема до задачі 3.2.2

Задача 3.2.3

Нехай елементами круга є радіус(перший елемент), діаметр(другий елемент) і довжина кола(третій елемент). Скласти програму, яка по номеру елемента запрошувала б його відповідне значення і обчислювала б площу круга.

Вхідні дані: радіус, діаметр, довжина кола.

Вихідні дані: площа круга.

#include<iostream.h>

int main()

{

int s;

float r, d, l;

constfloatp= 3.14;

cout<<”Введіть номер елемента круга(1, 2, 3)”;

cin>>s;

switch(s)

{

case 1: cout<<”r = “;

cin>>r;

s = p*r*r;

cout<<”Площа круга:»<<s<<endl;break;

case 2: cout<<”d = “;

cin>>d;

s = p*(d/2)*(d/2);

cout<<”Площа круга:»<<s<<endl;break;

case 3: cout<<”l = “;

cin>>l;

r =l/(2*p);

s = p*r*r;

cout<<”Площа круга:»<<s<<endl;break;

default:cout<<”Помилка введення!”<<endl;

}

return 0;

}

0

1

0

1

0

1

0

рис.8 блок-схема до задачі 3.2.3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]