ЛАБОРАТОРНА РОБОТА 4. ЛОГІЧНИЙ ТИП ДАНИХ І РОЗГАЛУЖЕННЯ У ПРОГРАМАХ. . звіт з Лабораторної роботи №4. Лабораторна робота логічний тип даних і розгалуження у програмах
Скачать 30.66 Kb.
|
Лабораторна робота 4. ЛОГІЧНИЙ ТИП ДАНИХ І РОЗГАЛУЖЕННЯ У ПРОГРАМАХМета роботиВ процесі виконання лабораторної роботи студенти мають отримати такі знання та навички: Ознайомитися з операціями над даними логічного типу. Навчитися записувати та обчислювати логічні вирази. Ознайомитися з операторами if … else та switch. Створити проект, що реалізує алгоритми з розгалуженнями. Завдання на лабораторну роботуПід час підготовки до роботи опрацювати розділі 1 та 2 підручника [1] і дати відповіді на питання для самоперевірки з розділу 1. Під час виконання лабораторній роботі виконати такі завдання: -Створити проект для реалізації завдання 11 розділу 6 підручника -РЕАЛІЗАЦІЯ ПРОЕКТУ «IF_SWITCH» Результати виконання роботиВиконання завдання 11 з підручникаУ лістингу 1.1 представлено код для знаходження мінімального, середнього та максимального значення. Код програми #include #include #include #include using namespace std; float MAX (float a, float b, float c) { float m1= max (a, b); float m2= max (b, c); return(max (m1, m2)); } float MIN (float a, float b, float c) { float n1= min (a, b); float n2= min (b, c); return(min (n1, n2)); } float MID (float a, float b, float c) { if(MAX(a,b,c) != a && MIN(a,b,c) != a) { return a; } if(MAX(a,b,c) != b && MIN(a,b,c) != b) { return b; } if(MAX(a,b,c) != c && MIN(a,b,c) != c) return c; } int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); cout << " Crated by Kuzmenko N.O. PI-223" << endl; cout<< "Enter 3 numbers: "<< endl; float x1, x2, x3; float z1; cout<<"z1- "; cin>> z1 ; float z2; cout<<"z2- "; cin>> z2 ; float z3; cout<<"z3- "; cin>> z3 ; x1= z1; x2= z2; x3= z3; z1= MIN(x1, x2, x3); z2= MID(x1, x2, x3); z3= MAX(x1, x2, x3); cout << "Minimum = "<< z1 << endl << "Middle = " << z2 << endl << "Maximum = " << z3 << endl; return app.exec(); На рисунку 1.1 наведено результат виконання простої програми. Рисунок 1.1 – результат виконання програми Реалізація алгоритму розв’язання квадратного рівнянняУ лістингу 1.2 представлено код програми Код програми #include #include #include #include using namespace std; void testCoef(double a, double b, double c); void printLinEqResult(double b, double c); double calcLinRoot(double b, double c); void printSqrEqResult(double a, double b, double c); int calcSqrData(double a, double b, double c, double &re, double &im); /*якщо а не дорівнює 0 то вирішується квадратне рівняння, інакше вирішується лінійне*/ void testCoef(double a, double b, double c){ if (a != 0){ printSqrEqResult (a, b, c); } else { printLinEqResult(b, c); } /*Якщо b не дорівнює нулю то вирішення за формулою x=(-b)/c якщо с = нулю то будь-який розвязок, інакше немає розвязку*/ } void printLinEqResult(double b, double c){ if(b !=0){ double x = calcLinRoot(c, b); cout << "x =" << x << endl; } else if(c == 0){ cout << "Any solution"< } else{ cout << "No solution"< } } //повертає значення кореня double calcLinRoot(double b, double c){ return -b/c; } //вирішення і виведення розязків квадратного рівняння void printSqrEqResult(double a, double b, double c){ double im, re; if(calcSqrData(a, b, c, re, im)) printf("x1 = %f, x2 = %f\n",re + im, re - im); printf("x1 = %f + %fi, x2 = %f - %fi\n",re,im,re,im); } /*формула для вирішення дискримінанта а також розвязків рівняння*/ int calcSqrData(double a, double b, double c, double &re, double &im){ double d = b*b - 4*a*c; re = -b/(2*a); im = sqrt(fabs(d))/(2*a); return d >= 0; } int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); float a,b,c; cout << " << endl; cout << "\n Equation 5*x^2 - 25 + 30 = 0\n"; testCoef(5, -25, 30); cout << "\n Equation 2*x^2 + 10x + 0 = 0\n"; testCoef(2, 10, 0); cout << "\n Equation 4*x^2 + 0x - 16 = 0\n"; testCoef(4, 0, -16); cout << "\n Equation 1*x^2 + 2x + 5 = 0\n"; testCoef(1, 2, 5); cout << "\n Equation 0*x^2 + 2x + 3 = 0\n"; testCoef(0, 2, 3); cout << "\n Equation 0*x^2 + 0x + 3 = 0\n"; testCoef(0, 0, 3); cout << "\n Equation 0*x^2 + 0x + 0 = 0\n"; testCoef(0, 0, 0); while(true){ cout << "Write coefitients\n"; cout <<"a ="; cin >> a ; cout <<"b ="; cin >> b ; cout <<"c ="; cin >> c ; testCoef(a, b, c); } return app.exec(); } На рисунках 1.2 та 1.3 наведено результати виконання простої програми. Рисунок 1.2 – результат виконання програми Рисунок 1.3 – результат виконання програми 1.4 Висновки За результатами виконання лабораторної роботи можна зробити наступні висновки. Ознайомилися з операціями над даними логічного типу. Навчилися записувати та обчислювати логічні вирази. Ознайомилися з операторами if … else та swith. Створили проект, що реалізує алгоритми з розгалуженнями. |