Преподаватель: Лексаченко. Е.В
Отчет
По лабораторной работе №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");
}
Результат работы программы: