Преподаватель: Лексаченко. Е.В

Отчет

По лабораторной работе №5

По предмету «Моделирование процессов и систем»

Тема:

Студент: Иванов. С. А

Преподаватель: Лексаченко. Е.В

2012

Цель работы:формирование навыков составления алгоритма вычисления рекуррентных соотношений и на его основе программы на языке высокого уровня.


 

Блок – схема:


Текст программы:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<math.h>

#include<graphics.h>

void Initialize();

 

void main()

{clrscr();

FILE*ms;

FILE*ms2;

float x[10];

float y[10];

float lx[10];

float ly[10];

float xk;

float yk;

float Z,a,b,c,n=10,s1x,s2x,skvx,skvx2,s1y,skvy1,skvy2,spxy,razn1,razn2,skvy2n,pr;

int i,s;

 

if((ms=fopen("x.txt","rt"))==NULL) //Открытие файла ms

{printf("Невозможно открыть файл!");

}

for(i=0;i<10;i++)

{fscanf(ms,"%f",&x[i]);//Считывание массива x[i]

}

 

printf("Xi:");

for(i=0;i<10;i++)

printf(" %2.2f ",x[i]);//Вывод массива x[i]

 

if((ms2=fopen("y.txt","rt"))==NULL)

{printf("Невозможно открыть файл”);

}

 

for(i=0;i<10;i++)

{fscanf(ms2,"%f",&y[i]); //Считывание массива y[i]

}

printf("\nYi:");

for(i=0;i<10;i++)

{printf(" %2.2f ",y[i]);//Вывод массива y[i]

}

 

s1x=0;

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

s1x=s1x+pow(x[i],2); //Сумма степей элементов массива x[i]

s2x=s1x*n;//Сумма степеней * n

skvx=0;

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

{skvx=skvx+x[i];//Сумма элементов массива x[i]

}

 

skvx2=pow(skvx,2); //Степень суммы элементов массива x[i]

 

Z=s2x-skvx2;//Разность суммы степеней*n и степени суммы x[i]

printf("\nZ = %.2f",Z);

s1y=0;

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

{ s1y=s1y+y[i];//Сумма элементов y[i]

}

skvy1=s1y*s1x; //Произведение суммы элементов y[i ] и суммы степеней x[i]

skvy2=0;

for(i=0;i<10;i++)

{skvy2=skvy2+(y[i]*x[i]); //Сумма произведений x[i] и y[i]

}

spxy=skvy2*skvx;//Произведение суммы произведений x[i]y[i] и суммы x[i]

 

razn1=skvy1-spxy; //Разность суммы пр-й x[i] *y[i] с пр-м суммы произведений x[i] y[i] и суммы x[i]

a=razn1/Z;//A

skvy2n=n*skvy2;//Сумма произведений x[i] и y[i] умноженная на n

printf("\nA=%.1f",a);

 

pr=s1y*skvx;//Произведение суммы y[i] и суммы x[i] с суммой элементов x[i]

razn2=skvy2n-pr;

 

b=razn2/Z;//B

 

printf("\nB=%.1f",b);

printf("\nЗначения функции y=%.1f+%.1f*x:",a,b);

printf("\nX:");

c=0;

for(i=0;i<2;i++)//Значения x

{lx[i]=c;

c=c+1;

printf(" %.0f",lx[i]);

}

printf("\nY:");

for(i=0;i<2;i++)

{ly[i]=a+b*lx[i];//Значения y

printf(" %.f",ly[i]);

}

 

 

printf("\nПостроить график:\n");

printf("1.Да\n");

printf("2.Нет\n");

scanf("%d",&s);

 

if(s==1){Initialize();

setcolor(15); //Построение графика

line(0,25,0,480);

line(0,400,300,400);

outtextxy(2,440,"-1");

outtextxy(2,402,"0");

outtextxy(40,402,"1");

outtextxy(80,402,"2");

outtextxy(120,402,"3");

outtextxy(2,360,"1");

outtextxy(2,320,"2");

outtextxy(2,280,"3");

outtextxy(2,240,"4");

outtextxy(2,200,"5");

outtextxy(2,160,"6");

outtextxy(2,120,"7");

outtextxy(2,80,"8");

outtextxy(2,40,"9");

outtextxy(310,400,"x");

outtextxy(2,10,"y");

setcolor(10);

for(i=0;i<2;i++)

{

if(i==0){moveto(0,440);

continue;

}

xk=lx[i]*40;

yk=(400-ly[i]*40);

lineto(xk,yk);

}

}

getch();

}

void Initialize()

{int dr=DETECT,mod;

initgraph(&dr,&mod,"C:\\bc\\bgi");

}

Результат работы программы: