Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 1.doc
Скачиваний:
2
Добавлен:
08.08.2019
Размер:
116.74 Кб
Скачать

Хід виконання роботи

Для успішного виконання поставленої задачі необхідно попередньо виконати наступні підзадачі:

  1. Ознайомитись з типом даних double.

Задано число z дійсного типу double. Вивести значення цього числа, застосовуючи ширину поля виведення числа.

#include <stdio.h>

int main()

{

double z=345.876;

printf("\n z= %12.6lf ", z);

return 0;

}

  1. Задано два дійсних числа. Знайти цілі та дробові частини введених чисел.

#include <math.h>

#include <stdio.h>

int main()

{

double fraction_a, integer_a;

double fraction_b, integer_b;

double a = 314.12304;

double b = -28.9503;

fraction_a = modf(a, &integer_a);

printf("The whole and fractional parts of %lf are %lf and %lf\n",

a, integer_a, fraction_a);

fraction_b = modf(b, &integer_b);

printf("The whole and fractional parts of %lf are %lf and %lf\n",

b, integer_b, fraction_b);

return 0;

}

  1. Написати умовний оператор, що відповідає таким вимогам

if((x<0)&&(b!=0)) F=a*x*x+b;

else if((x>0)&& (b=0)) F=(x-a)/(x-c);

else F=x/c;

  1. Вивести значення функції, що задана у попередньому прикладі, а також вивести відкореговане значення цієї функції (в даному випадку слід домножити значення функції на коефіцієнт koef).

if((x<0)&&(b!=0)) F=a*x*x+b;

else if((x>0)&& (b=0)) F=(x-a)/(x-c);

else F=x/c;

printf("\n x=%12.3lf F=%12.3lf F*koef=%12.3lf",x,F,F*koef);

  1. Обчислити значення функції F на інтервалі від X_start до X_end з кроком DX та визначити сумарне значення функції на цьому інтервалі.

for(x=X_start;x<=X_end;x+=DX)

{

if((x<0)&&(b!=0)) F=a*x*x+b;

else if((x>0)&& (b=0)) F=(x-a)/(x-c);

else F=x/c;

printf("\n x=%12.3lf F=%12.3lf F*koef=%12.3lf",x,F,F*koef);

S+=F;

}

Завдання до виконання:

Виконати програму у вигляді блок-схеми та навести відповідну програмну реалізацію..

1. Обчислити та вивести на екран у вигляді таблиці значення функції F на інтервалі від X_start до X_end з кроком DX, при цьому вважається, що крок змінюється в діапазоні від 0.1 до 0.5 через 0.1, якщо вважати a,b,c дійсними числами.

2. Одночасно необхідно вивести на екран скореговане значення функції F на відповідний масштабний коефіцієнт, що становить 1.5, якщо виконується умова (a2+b2)<(c2+7) та 1.2 в іншому випадку. Через а2, b2 та с2 позначені цілі частини значень a,b,c. Значення a,b,c, X_start, X_end та DX необхідно ввести з клавіатури.

3. Обчислити середнє значення функції F на проміжку від X_start до X_end з кроком DX.

Значення цілих частин чисел a,b,c необхідно визначати із заcтосуванням функції modf бібліотеки <math.h>. Приклад застосування взятий із довідника за командою меню Help.

#include <math.h>

#include <stdio.h>

int main(void)

{

double fraction, integer;

double number = 100000.567;

fraction = modf(number, &integer);

printf("The whole and fractional parts of %lf are %lf and %lf\n",

number, integer, fraction);

return 0;

}

Вимоги до розробленої програми та деякі уточнення:

  • При введенні чисел звертати увагу на те, що кількість цифр в дробовій частині числа не повинна бути меншою ніж 5 .

  • При виведенні результатів застосувати коефіцієнти ширини виведення (наприклад, %12.3lf).

  • Програму обов’язково супроводжувати коментарями.

  • Надати змінним імена, що застосовується в постановці задачі.

  • Для значень a,b,c, X_start, X_end та DX застосувати тип double (специфікатор введення для цього типу %lf).

Варіанти індивідуальних завдань:

Умова

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

#include <math.h>

#include <stdio.h>

#include <conio.h>

int main(int argc, char* argv[])

{

double a,b,c,x,F,S=0;

double a1,b1,c1; // Дробові частини

double a2,b2,c2; // Цілі частини

int i=0;

double X_start, X_end, DX;

double koef=0;

/*

printf("\n a= "); scanf("%lf",&a);

printf("\n b= "); scanf("%lf",&b);

printf("\n c= "); scanf("%lf",&c); */

a=3.50674;

b=11.73421;

c=9.3498765;

a1=modf(a,&a2);

b1=modf(b,&b2);

c1=modf(c,&c2);

printf("\n Cili chastini :\n");

printf("\na : %lf",a2);

printf("\nb : %lf",b2);

printf("\nc : %lf",c2);

if((a2+b2)<(c2+7)) koef=1.5; else koef=1.2;

printf("\n koef=%lf\n",koef);

printf("\n X_start : ");

scanf("%lf",&X_start);

printf("\n X_end : ");

scanf("%lf",&X_end);

/*printf("\n DX : ");

scanf("%lf",&DX);*/

for(DX=0.1;DX<=0.5;DX+=0.1)

{

S=0;i=0;

printf("\n DX=%lf",DX);

for(x=X_start;x<=X_end;x+=DX)

{

if((x<0)&&(b!=0)) F=a*x*x+b;

else if((x>0)&& (b=0)) F=(x-a)/(x-c);

else F=x/c;

printf("\n x=%12.3lf F=%12.5lf F*koef=%12.5lf",x,F,F*koef);

S+=F;

i++;

}

printf("\n Seredne znachennhia funkcii :%lf for DX=%f",S/i,DX);

}

getch();

return 0; }