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

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

1 0

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

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

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

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

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

  1. Постановка задачі.

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

Вхідні дані :

дві швидкості: перша в кілометрах в годину, друга – в метрах в секунду - змінні типу з плаваючою точкою - double v1, double v2;

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

кінцевий результат швидкостей - змінних типу з плаваючою точкою - double v1, double v2;

  1. Схема алгоритму рішення задачі.

Овал 39Прямая соединительная линия 41Параллелограмм 40

v2 = (v2*3600)/1000

Ромб 48Прямая соединительная линия 52Прямая со стрелкой 541 0

Овал 45Параллелограмм 56Параллелограмм 57Прямая соединительная линия 60Овал 63Прямая соединительная линия 42

Рис. 7 Схема алгоритму задачі 3.2.1

  1. Лістинг програми.

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double v1,v2;

cout<<"Введите первую скорость в км/ч: ";

cin>>v1;

cout<<"Введите вторую скорость м/с: ";

cin>>v2;

v2=(v2*3600)/1000;

if(v1>v2) cout<<"Первая скорость больше второй"<<endl;

else cout<<"Вторая скорость больше первой"<<endl;

system("pause");

}

  1. Тестування програми.

Рис.8 Результат тестування задачі 3.2.1

Задача 3.2.2

  1. Постановка задачі.

Дано чотиризначне число. Визначити :

А) чи дорівнює сума двох перших його цифр сумі двох його останніх цифр ;

Б) чи входять в нього цифри 2, 6 або 7.

Вхідні дані :

чотиризначне число цілого типу - int n;

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

кінцевий результат у вигляді зміненої змінної цілого типу - int n.

  1. Схема алгоритму рішення задачі.

Рис. 9 Схема алгоритму задачі 3.2.2

  1. Лістинг програми.

#include <iostream>

#include<iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int n;

cout<<"ВВести четырехзначное число:";

cin>>n;

if(n/1000+n/100%10==n/10%10+n%10)

cout<<"сумма двух первых цыфр = сумме двух последних цыфр "<<endl;

else cout<<"сумма двух первых цыфр не = сумме двух последних цыфр"<<endl;

if(n/1000==2||n/1000==6||n/1000==7||n/100%10==2||n/100%10==6||n/100%10==7||n/10%10==2||n/10%10==6||n/10%10==7||n%10==2||n%10==6||n%10==7)

cout<<"Входят цыфры 2 или 6 или 7"<<endl;

else cout<<"Не входит цыфры 2 или 6 или 7 "<<endl;

system("pause");

}

  1. Тестування програми.

Рис. 10 Результат тестування задачі 3.2.2

Задача 3.2.3

  1. Постановка задачі.

Обчислити у при різних значеннях х :

y = a = 1.5,

Вхідні дані :

задане значення а - змінна типу з плаваючою точкою - double a, значення х, яке вводиться з клавіатури - змінна типу з плаваючою точкою - double x;

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

значення у при значенні х - зміннa типу з плаваючою точкою – double y;

  1. Схема алгоритму рішення задачі.

Овал 39

Прямая соединительная линия 41Параллелограмм 40

a = 1.5

Ромб 481 0

Прямая соединительная линия 52Прямая со стрелкой 54

Прямая соединительная линия 60Прямая соединительная линия 42

y= a*x-log10(a*x)

0

Овал 45

y= 1

1

Овал 63

y=a*x+log10(a*x)

Рис. 11 Схема алгоритму задачі 3.2.3

  1. Лістинг програми.

#include<math.h>

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double a, x, y;

a=1.5;

cout<<"Введите х : ";

cin>>x;

if(a*x<1) y= a*x-log10(a*x);

else if ( a*x==1) y= 1;

else y=a*x+log10(a*x);

cout<<"Результат равен "<<y<<endl;

system("pause");

}

  1. Тестування програми.

Рис. 12 Результат тестування задачі 3.2.3

Задача 3.2.4

  1. Постановка задачі.

Дано два дійсні додатні числа х та у . Арифметичні дії над числами пронумеровані ( 1 – складання, 2 – віднімання, 3 – множення, 4 – ділення ). Скласти програму, яка по введеному номеру виконує ту або іншу дію над числами.

Вхідні дані :

два дійсні додатні числа типу з плаваючою точкою: float х, у; номер дії над числами - змінна цілого типу - int res.

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

результат введеної дії над заданими числами – змінна типу з плаваючою точкою float s.

  1. Схема алгоритму рішення задачі.

Rectangle 399

Рис. 13 Схема алгоритму задачі 3.2.4

  1. Лістинг програми.

#include <iostream>

#include<iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

float x, y, s ; int res;

cout<<"Введите х : ";

cin>>x;

cout<<"Введите у : ";

cin>>y;

cout<<"Введите номер действия над числами : ";

cin>>res;

switch (res)

{

case 1 :

s=x+y;

break;

case 2 :

s=x-y;

break;

case 3 :

s=x*y;

break;

case 4 :

s=x/y;

break;

default : cout<<"Неправильный номер действия";

}

cout<<s<<endl;

system("pause");

}

  1. Тестування програми.

Рис.14 Результат тестування задачі 3.2.4

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