Московский Государственный институт электроники и математики
(Технический университет)
Кафедра Вычислительные системы и сети
Отчет о лабораторной работе №6
«Поиск максиминного и минимаксного значения в матрице c возможностью ввода исходных данных из файла на диске и сохранения результатов (вместе с исходными данными) в файл на диске»


по дисциплине «Программирование на ЯВУ»
Выполнил:
студент группы С-31
Гребенюк А.В.
Вариант 7
Москва, 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[4][5];
FILE *file;
printf("LR6\n");
printf("Grebenyuk Alexandr, 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[50];
scanf("%s",fname);
file=fopen(fname,"r");
if(file != 0 )
{
for (int k=0;k<=3;k++)
{
for (int z=0;z<=3;z++)
{
fscanf(file,"%d",&q);
arr[k][z]=q;
}
}
}
else
{
printf("File ne naiden!\n");
goto gg;
}
fclose(file);
break;
}
case 0:
{
arr[0][0]=3;
arr[0][1]=7;
arr[0][2]=-1;
arr[0][3]=3;
arr[1][0]=4;
arr[1][1]=8;
arr[1][2]=0;
arr[1][3]=-6;
arr[2][0]=6;
arr[2][1]=-9;
arr[2][2]=-2;
arr[2][3]=4;
arr[3][0]=0;
arr[3][1]=0;
arr[3][2]=0;
arr[3][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[3][j]=val;
}
maximin=arr[0][4];
for (int i=1;i<=2;i++)
{
if (arr[i][4]>maximin)
{
maximin=arr[i][4];
}
}
minimax=arr[3][0];
for (int i=1;i<=3;i++)
{
if (arr[3][i]<minimax)
{
minimax=arr[3][i];
}
}
printf("Matrica:\n");
for (int m=0;m<=2;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);
file=fopen(fname,"w");
for (int k=0;k<=2;k++)
{
for (int z=0;z<=3;z++)
{
fprintf(file,"%d ",arr[k][z]);
}
fprintf(file,"\n");
}
fprintf(file,"Minimax: %d\n",minimax);
fprintf(file,"Maximin: %d",maximin);
fclose(file);
}
case 0:
{
return 0;
}
default:
{
return 0;
}
}
}
2. Блок-схема главного алгоритма
программы








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

3. Листинг вывода программы

