Хід виконання роботи
Для успішного виконання поставленої задачі необхідно попередньо виконати наступні підзадачі:
Ознайомитись з типом даних double.
Задано число z дійсного типу double. Вивести значення цього числа, застосовуючи ширину поля виведення числа.
#include <stdio.h>
int main()
{
double z=345.876;
printf("\n z= %12.6lf ", z);
return 0;
}
Задано два дійсних числа. Знайти цілі та дробові частини введених чисел.
#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;
}
Написати умовний оператор, що відповідає таким вимогам
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;
Вивести значення функції, що задана у попередньому прикладі, а також вивести відкореговане значення цієї функції (в даному випадку слід домножити значення функції на коефіцієнт 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);
Обчислити значення функції 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; }