/*  Виталий Д митриевич Новичков.
    Студент МГТУ ГА, Группа ЭВМ-1-2,

    Декабрь 2010-го года

    Для лабораторной работы #4 по дисциплине:
    "Программирование на языке высокого уровня"
*/
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <iomanip.h>
#include <dos.h>
#include <stdio.h>
#include <string.h>
const int m=5, n=6;
ifstream fin;
ofstream fout;
char header[6][81];
int i, j;

// Включение файла определяющего функцию prnborder(x, y) для вывода строки x
// в рамочке, выровненной по центру и покрашенный в указанный цвец y
// Написана самим автором данной работы в качестве укрошающей добавки.
#include "prnbrdr.c"

//Опреденение Функции enter()
#include "enter.c"

// Определение функции p()
#include "p.c"

/*
Определение функции prcdr() - функции формирования массива b
Первые два параметра - это параметры-массивы для передачи в функцию
массива с исходными данными и сформированного массива параметры A и B
определяют границы интервала нужных значений элементов
*/
#include "prcdr.c"


void main()
{
// Небольшое весёлое ЦвЕтНоЕ вступлениеце автора... :)
// Писалось для третьей лабораторной работы...
#include "nvds.c"
// Титульная заставка прогарммы.
// не обызательная часть прогарммы, легко может быть
// удалена не повредив основной текст программы

clrscr();
fin.open("function.dat");
if (!(fin))
{
prnborder("Ошибка при открытии файла данных function.dat", 4);
sleep(2);
exit(1);
}
fout.open("floatmas.txt");
if(!(fout))
{
prnborder("Ошибка при открытии файла результатов floatmas.txt", 4);
sleep(2);
exit(1);
}
float a[m][n]; //Определение числового массива для хранения исходных данных
float b[2][m]; //Определение формируемого массива (выделение памяти).

void enter(float a[m][n]);       // прототип функции enter()
void p(float a[m][n]);           // прототип функции p()
// прототип функции prcdr();
void prcdr(float a[m][n], float b[2][m], int, int);

//Вызовы функций:
enter(a);
p(a);
prcdr(a, b, 1, 5); // 2 5 - границы интервала значений нужных элементов...


//Вывод в файл результатов, сформированных в функции prcdr(), в floatmas.txt
fout<<"\n\n\nNewArray:\n";
for(i=0;i<3;i++)
   {
   fout<<'\n';
   for(j=0; j<m; j++)
      fout<<setw(12)  /*
		      setw(int a) - манипулятор вывода с параметром
		      для установки поля вывода выводимого значения,
		      прототипы манипуляторов находятся в файле iomanip.h
		      */
      << b[i][j];
   }
// Вывод результатов, сформулированных в функции prcdr(), в floatmas.txt
//
fout<<"\n\n\nПосле обмена местами значений столбцов, \
содержащих макс и мин-знач:\n";

float max=b[2][0], min=b[2][0];
int maxi=0, mini=0;

for(i=0;i<m;i++)
 {
 if (max <= b[2][i])
  {
  max=b[2][i];
  maxi=i;
  }
 if (min >= b[2][i])
  {
  min=b[2][i];
  mini=i;
  }
}


for(i=0;i<3;i++)
{
   fout<<'\n';
   for(j=0; j<m; j++)
	{
		if(j==maxi) fout<<setw(12)<<b[i][mini];
		else
		if(j==mini) fout<<setw(12)<<b[i][maxi];
		else
		fout<<setw(12)<<b[i][j];
	}
}

   fout.close();
   printf("\n\n\n\n");
   prnborder("Работа с файлом завершена! Результаты в файле floamas.txt", 2);
   sleep(1);
}
