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

Оператори циклу використовуються для організації багаторазово повторюваних обчислень. Будь-який цикл складається з тіла циклу, тобто тих операторів, які виконуються декілька разів, початкових установок, модифікації параметра циклу і перевірки умови продовження виконання циклу. Один прохід циклу називається ітерацією. Перевірка умови виконується на кожній ітерації або до тіла циклу (тоді говорять про цикл з передумовою), або після тіла циклу (цикл з постусловіем). Різниця між ними полягає в тому, що тіло циклу з постусловіем завжди виконується хоча б один раз, після чого перевіряється, чи треба його виконувати ще раз. Перевірка необхідності виконання циклу з передумовою робиться до тіла циклу, тому можливо, що він не виконається жодного разу.Змінні, що змінюються в тілі циклу і використовувані при перевірці умови продовження, називаються параметрами циклу. Цілочисельні параметри циклу, змінюються з постійним кроком на кожній ітерації, називаються лічильниками циклу.

Цикл з передумовою: while(вираз)оператор

Вираз визначає умова повторення тіла циклу, представленого простимілі складовим оператором. Виконання оператора починається з ви числення виразу.

Якщо воно істинне (не дорівнює false) виконується оператор циклу. Якщо при першій перевірці вираз дорівнює false, цикл не виконається ні разу. Тип виразу повинен бути арифметичним або процитованими до нього. Вираз обчислюється перед кожною ітерацією циклу.

Цикл з післяумовою: do оператор while вираз:

Спочатку виконується простий або складений оператор, що становить тіло циклу, а потім обчислюється вираз. Якщо воно істинне (не дорівнює fаlse), тіло ціклавиполняется ще раз. Цикл завершується, коли вираз стане рівним false або в тілі циклу буде виконаний небудь оператор передачі керування.

Задача 3.3.1

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

Побудувати таблицю відповідностей між мірами. Початкове значення міри ( galon), крок зміни цього значення (krok) та кількість рядків у таблиці (kil) задати самостійно.

1 галон (брит.)=1.2 галон (США)=4.546 л.

Вхідні дані :

початкове значення міри - змінна типу з плаваючою точкою - double galon , змінене значення міри - змінна типу з плаваючою точкою - double galons; крок зміни заданого значення міри - змінна цілого типу - int krok, кількість рядків у таблиці - змінна цілого типу int kil;

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

кінцеві результати значень міри - змінні типу з плаваючою точкою - double galon,double galons,double litr;

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

Овал 39Параллелограмм 40Овал 63

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

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

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

const int N = 20;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double galon , galons, litr;

int krok, kil;

cout<<"Ввести количество галонов : ";

cin>>galon;

cout<<"Ввести шаг изменения : ";

cin>>krok;

cout<<"Ввести количество строк таблицы : ";

cin>>kil;

for(int i=1 ; i<=kil; i++)

{

galons=galon*1.2;

litr=galon*4.546;

cout<<setw(N)<<"Количество галонов "<<setw(N)<<"Количесвто галонов ( США ) "<<setw(N)<<"Количество литров"<<endl;

cout<<setw(N-5)<<galon<<setw(N)<<galons<<setw(N)<<litr<<endl;

galon+=krok;

}

system("pause");

}

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

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

Задача 3.3.2

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

Розрахувати суму перших 10 членів ряду :

S = 1

Вхідні дані :

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

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

кінцевий результат суми перших 10 членів ряду - зміннa типу з плаваючою точкою - double s;

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

d=-1,s=1,c=1,a=3,b=2,xs=x

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

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

#include<math.h>

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int d=-1;

double s=1,c=1,x,a=3,b=2,xs;

cout<<"Введите значение х : ";

cin>>x;

xs=x;

for(int i=1;i<=10;i++)

{

s+=d+a/b*xs*c;

c*=a/b;

a+=2;

b+=2;

d*=-1;

xs*=x;

}

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

system("pause");

}

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

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

Задача 3.3.3

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

Скласти алгоритм і програму обчислення значення функції при зміні аргументу х у вказаному діапазоні і з заданим кроком ∆х.

У=

a=1.65, x, ∆х=0.2

Вхідні дані : змінна типу з плаваючою точкою –double xp, що означає початок діапазону х;

Зміна типу з плаваючою точкою - double xk, шо позначає кінець діапазону х;

Зміна типу з плаваючою точкою - double dx, що позначає крок зміни х ;

Вихідні дані : результат у вигляді змінної типу з плаваючою точкою – double у, що підраховує значення у ;

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

Group 393Ромб 48

y=x*x*pi-(7/(x*x))

y=a*x*x*x+(8/sqrt(x))

y= log (x+9*sqrt(abs(x+a)))

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

a=1.65, x=xp, pi=3.14

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

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

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

#include<math.h>

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

const double pi=3.14;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double x,y,a=1.65,dx,xp,xk;

cout<<"Введите начальное значение х : ";

cin>>xp;

cout<<"Введите конечное значение х : ";

cin>>xk;

cout<<"Введите шаг изменения х : ";

cin>>dx;

for(x=xp;x<=xk+dx;x+=dx)

{

if(x<1.4) y=x*x*pi-(7/(x*x));

else if ( x==1.4) y=a*x*x*x+(8/sqrt(x));

else y= log (x+9*sqrt(abs(x+a)));

cout<<"Значение х "<<x<<'\t'<<"Результат "<<y<<endl;

}

system("pause");

}

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

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

Задача 3.3.4

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

Підрахувати суму членів ряду, які обчислюються за формулою, з точністю до e=0.000001 (||>e).

Визначити кількість доданків .

S=≈1 ++++… |x|<1

Вхідні дані :

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

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

Кінцевий результат суми членів ряду - змінна типу з плаваючою точкою – double s, кількість доданків - змінна цілого типу – int i;

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

Овал 64Прямая соединительная линия 66Параллелограмм 65

s=1, k=1, i = 1, f=1

k*=x

f*=i

s+=1./(f*k)

i++

Прямая соединительная линия 107Прямая соединительная линия 109Прямая соединительная линия 110Прямая соединительная линия 111Прямая соединительная линия 112Прямая соединительная линия 118Прямая со стрелкой 119Овал 120

Прямая соединительная линия 113Шестиугольник 1161 0

Овал 85Прямая соединительная линия 117Прямая соединительная линия 121Прямая соединительная линия 122Прямая соединительная линия 123Прямая со стрелкой 124Параллелограмм 125Прямая соединительная линия 126

Рис. 21 Схема алгоритму задачі 3.3.4Овал 77

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

#include <iostream> #include<math.h> #include<windows.h> using namespace std; void main () { SetConsoleCP(1251); SetConsoleOutputCP(1251); double s=1, e, x,k=1; cout«"Введите точность e : "; cin»e; cout«"Введите х : "; cin»x; int i = 1, f=1; do{ k*=x; f*=i; s+=1./(f*k); i++; } while ( 1./(f*k)>e); cout«"Сумма ряда = "«s«endl; cout«"количество слогаемых = "«i«endl; system("pause"); }

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

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

Задача 3.3.5.

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

Відомі дані про масу (у кг ) ш об'єм (у см3) 30-ти тіл, виготовлених з різних матеріалів. Визначити максимальну щільність матеріалу.

Вхідні дані :

змінні типу з плаваючою точкою – double m - що позначає масу тіла,v- що позначає об'єм тіла ;

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

змінні типу з плаваючою точкою – double max – максимальна щільність матеріалу;

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

ma x=m/v

1

0

max=m/v

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

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

#include<math.h>

#include <iostream>

#include <iomanip>

#include<windows.h>

using namespace std;

void main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double m,v,max;

cout<<"Ведите массу 1го тела: ";

cin>>m;

cout<<"Введите объём 1го тела: ";

cin>>v;

max=m/v;

for(int i=2;i<=30;i++)

{

cout<<"Ведите массу "<<i<<"го тела: ";

cin>>m;

cout<<"Введите объём "<<i<<"го тела: ";

cin>>v;

if(m/v>max) max=m/v;

}

cout<<"Максимальная плотность материала = "<<max<<endl;

system("pause");

}

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

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

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