МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Московский государственный институт электроники и математики (технический университет)
Кафедра «Вычислительная техника»
ОТЧЕТ
о лабораторной работе №5
Вариант: 22
Исполнитель:
студент группы С-31
Москва – 2009г.
Исходный код
#include <math.h>
#include <stdio.h>
void vivod (int a, int b)
{
printf("Minimax: %d\n",a);
printf("Maximin: %d\n\n",b);
if (a>b)
{
printf("Minimax>Maximin, igrovaya strategi9 optimal'na\n\n");
}
if (a==b)
{
printf("Minimax=Maximin, sedlova9 to4ka %d\n",a);
}
}
int main()
{
int val,maximin,minimax,q,r;
int arr[5][5];
FILE *file1;
printf("Opredelenie konkyrentosposobnosti s vozmozhnostyu vivoda iz faila.\n");
printf("Shilak E.M., C-31\n");
gg:
printf("Xotite li Vi vvesti icxodnie dannie iz faila? (1/0): ");
scanf("%d",&r);
switch (r)
{
case 1:
{
printf("Vvedite im9 faila: ");
char fname[100];
scanf("%s",fname);
file1=fopen(fname,"r");
if(file1 != 0 )
{
for (int k=0;k<=3;k++)
{
for (int z=0;z<=3;z++)
{
fscanf(file1,"%d",&q);
arr[k][z]=q;
}
}
}
else
{
printf("File ne naiden!\n");
goto gg;
}
fclose(file1);
break;
}
case 0:
{
arr[0][0]=0;
arr[0][1]=3;
arr[0][2]=10;
arr[0][3]=10;
arr[1][0]=3;
arr[1][1]=0;
arr[1][2]=0;
arr[1][3]=8;
arr[2][0]=16;
arr[2][1]=11;
arr[2][2]=4;
arr[2][3]=6;
arr[3][0]=25;
arr[3][1]=15;
arr[3][2]=11;
arr[3][3]=0;
arr[4][0]=0;
arr[4][1]=0;
arr[4][2]=0;
arr[4][3]=0;
break;
}
default:
{
printf("FAIL!\n");
getchar();
goto gg;
}
}
for (int i=0;i<=2;i++)
{
val=arr[i][0];
for (int j=1;j<=3;j++)
{
if (arr[i][j]<val)
{
val=arr[i][j];
}
}
arr[i][4]=val;
}
for (int j=0;j<=3;j++)
{
val=arr[0][j];
for (int i=1;i<=3;i++)
{
if (arr[i][j]>val)
{
val=arr[i][j];
}
}
arr[4][j]=val;
}
maximin=arr[0][4];
for (int i=1;i<=2;i++)
{
if (arr[i][4]>maximin)
{
maximin=arr[i][4];
}
}
minimax=arr[4][0];
for (int i=1;i<=3;i++)
{
if (arr[3][i]<minimax)
{
minimax=arr[4][i];
}
}
printf("Matrica:\n");
for (int m=0;m<=3;m++)
{
for (int n=0;n<=3;n++)
{
printf("%d ",arr [m][n]);
}
printf("\n");
}
vivod (minimax,maximin);
printf("Xotite li Vi soxranit' icxodnie dannie i rezultati v fail? (1/0): ");
scanf("%d",&r);
switch (r)
{
case 1:
{
printf("Vvedite im9 faila: ");
char fname[50];
scanf("%s",fname);
file1=fopen(fname,"w");
for (int k=0;k<=2;k++)
{
for (int z=0;z<=3;z++)
{
fprintf(file1,"%d ",arr[k][z]);
}
fprintf(file1,"\n");
}
fprintf(file1,"Minimax: %d\n",minimax);
fprintf(file1,"Maximin: %d",maximin);
fclose(file1);
}
case 0:
{
return 0;
}
default:
{
return 0;
}
}
}
Блок-схема главного алгоритма программы








Блок-схема функции vivod (вывода минимаксного и максиминного значений)

Внешняя спецификация.

