Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
02.05.2014
Размер:
45.06 Кб
Скачать

Лабораторная работа № 2

(вариант № 10 )

Программирование алгоритмов циклической структуры и обработка статических массивов.

 

Задание 1. Составьте 3 варианта программ циклической структуры типа for , while, do…while и сравните полученные результаты.

Варианты задания 1

10. .

//Lab 2_1

#include <STDIO.h>

#include <MATH.h>

#include <CONIO.h>

main()

{ int i, N; float x, S1, S2, S3;

clrscr ();

printf("\n Vvedite N i x: "); scanf("%d %f", &N, &x);

S1=0; S2=0; S3=0;

for (i=1; i<=N; i++) S1+=(x*x+1)/i;

i=0;

while (i<N)

{i++; S2+=(x*x+1)/i;}

i=0;

do

{i++; S3+=(x*x+1)/i;}

while (i<N);

printf ("\nS1=%f \nS2=%f \nS3=%f", S1, S2, S3);

getch (); return 0;

}

Пояснение: Все варианты написал в одной программе. Разница в видах циклов: цикл с параметром, цикл с предусловием и постусловием. И если при N=0 – S1 и S2 будут равно 0, а S3≠0 из-за того, что цикл с постусловием выполниться хотя бы один раз.

Задание 2. Даны вещественные числа a, b. Значения функции (согласно вариантам) записать в массив. Вычислить значение интеграла, используя:

1) Формулу трапеций

I1=h*[f(a)/2+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(b)/2]

2) Формулу Симпсона

I2=h/3*(f(a)+f(b)+4*(f(a+h)+f(a+3h)+…+f(a+(n-1)h))+

2*(f(a+2h)+f(a+4h)+…+f(a+(n-2)h)))

h=(b-a)/n, n=100.

Варианты задания 2

10. f(x)=√(2+x)3/x2; a=0.2; b=10;

//Lab 2_2_1

//Integral po formule Tropecii

#include <STDIO.h>

#include <MATH.h>

#include <CONIO.h>

#define n 100

int i;

float a, b, h, x, s, sn, f[n];

main()

{

clrscr ();

a=0.2; b=10;

h=(b-a)/n;

f[1]=sqrt(pow((2+a),3))/(a*a);

f[100]=sqrt(pow((2+b),3))/(b*b);

for(i=1; i<n; i++)

{

x=(a+i*h);

f[i]=sqrt(pow((2+x),3))/(x*x);

sn+=f[i];

}

s=(h/2)*(f[1]+f[100]+2*sn);

printf ("\nZnachenie integrala s=%f", s);

getch ();

}

//Lab 2_2_2

//Integral po formule Simpsona

#include <STDIO.h>

#include <MATH.h>

#include <CONIO.h>

#define n 100

int i;

float a, b, h, x, s, s1, s2, f[n];

main()

{

clrscr ();

a=0.2; b=10;

h=(b-a)/n;

f[1]=sqrt(pow((2+a), 3))/(a*a);

f[100]=sqrt(pow((2+b), 3))/(b*b);

for(i=1; i<n-1; i++)

{

x=(a+i*h);

if (i%2==0)

{

f[i]=sqrt(pow((2+x),3))/(x*x);

s1+=f[i];

}

else

{

f[i]=sqrt(pow((2+x), 3))/(x*x);

s2+=f[i];

}

}

s=(h/3)*(f[1]+f[100]+(2*s1)+(4*s2));

printf ("\nZnachenie integrala s=%f", s);

getch ();

}

Пояснение: Значение интеграла подсчитал с помощью формулы трапеции и Симпсона. Для этого каждую формулу разделил на 3 составляющие и рассчитал их, одну из составляющей с помощью цикла, потом сложил. Значение функций, при расчете формул, записал в массив.

Соседние файлы в папке Лабораторная работа 2