Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба6 2й семестр

.docx
Скачиваний:
3
Добавлен:
15.05.2017
Размер:
55.33 Кб
Скачать

Ст. Новичонок М.С. Гр. ІНФ-15-1

Лабораторная работа №2

Тема: «Файловые потоки языка С»

Вариант 6

Дана целочисленная прямоугольная матрица. Определить:

1) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;

2) номера строк и столбцов всех седловых точек матрицы.

#include <stdio.h>

#include <stdlib.h>

int main()

{

printf("%s","Nachalo program\n");

FILE *fin(NULL),*fout(NULL);

char namef[40];

puts("Vvedite imja file\n");

gets(namef);//считываем строку с клавиатуры

fin=fopen(namef,"r");//открываем текстовый файл для чтения

if (!fin)

{

printf("Can not open file\n");

return 1;

}

fout=fopen("f2.txt","w");//открываем текстовый файл для записи

int n,m;//резмер массива n на m

fscanf(fin,"%d%d",&n,&m);//считываем два числа которые

int **mas=new int*[n];

int i,a;

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

mas[i]=new int[m];

//считываем данные из файла

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

for(int j=0;j<m;j++)

fscanf(fin,"%d",&mas[i][j]);

//выводим информацию на экран в форматированном виде

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

{

for(int j=0;j<m;j++)

{

printf("%5d",mas[i][j]);//ширина поля вывода занимает 5 знакомест

}

printf("%c",'\n');

}

fclose(fin);

//выводим информацию в текстовый файл

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

{

for(int j=0;j<m;j++)

{

fprintf(fout,"%5d",mas[i][j]);//ширина поля вывода занимает 5 знакомест

}

fprintf(fout,"%c",'\n');

}

fclose(fout);

//выводим информацию в бинарный файл

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

{

for(int j=0;j<m;j++)

{

fprintf(fout,"%5d",mas[i][j]);//ширина поля вывода занимает 5 знакомест

}

fprintf(fout,"%c",'\n');

}

fout=fopen("f3.txt","wb");//открываем бинарный файл для записи

//записываем информацию в бинарный файл построчно

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

{

fwrite(mas[i],sizeof(int)*m,1, fout);

}

fclose(fout);

int **mas2=new int*[n];

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

{

mas2[i]=new int[m];

}

fin=fopen("f3.txt","rb");//открываем бинарный файл для чтения

//считываем информацию из бинарного файла построчно

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

{

fread(mas2[i],sizeof(int)*m,1, fin);

}

printf("%c",'\n');

//выводим информацию на экран в форматированном виде для

//проверки правильности полученной информации

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

{

for(int j=0;j<m;j++)

{

printf("%5d",mas2[i][j]);//ширина поля вывода занимает 5 знакомест

}

printf("%c",'\n');

}

fclose(fout);

//поиск суммы элементов в строках с отрицательным элементом

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

{

int summ(0);

bool isPrint = false;

for (int j = 0; j < m; ++j)

{

summ += mas[i][j];

if (mas[i][j] < 0)

{

isPrint = true;

}

}

if (isPrint)

{

fout=fopen("f2.txt","a+");

printf("%s%d","\tsumm row ",i);

fprintf(fout,"%s%d","\tsumm row ",i);

printf("%s%d"," = ", summ );

fprintf(fout,"%s%d"," = ", summ );

}

}

//поиск седловых точек

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

{

int min(0);

bool isPrint = true;

for (int j = 0; j < m; ++j)

{

if (mas[i][min] > mas[i][j])

{

min = j;}

}

for (int z = 0; (z < n) && isPrint; ++z)

{

if (mas[i][min] < mas[z][min])

{

isPrint = false;

}

}

if (isPrint)

{

fout=fopen("f2.txt","a+");

//printf("%s%d","\nsaddle points:");

printf("%s%d","\ncolumn:",min);

printf("%s%d","row:",i );

fprintf(fout,"%s%d","\tcolumn ",min);

fprintf(fout,"%s%d","row ",i);

}

/*if(!isPrint)

{

fout=fopen("f2.txt","a+");

printf("%s%d","\nno saddle points");

fprintf(fout,"%s%d","\tno saddle points");

break;

}*/

}

puts("\nFINISH\n");

getchar();

return 0;

}