Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВ_Прог_1курс_2n1часть.doc
Скачиваний:
11
Добавлен:
13.04.2015
Размер:
735.74 Кб
Скачать

3.7 Контрольний приклад

/*

Исходные данные для двумерного массива хранятся в текстовом файле, причем

первые числа соответствуют количеству строк и столбцов. Необходимо считать

информацию сохранить ее в тесктовый файл "f2.txt" и бинарный файл "f3.txt",

а также вывести на экран в форматированном виде.

Считать данные из бинарного файла и поместить их в новый массив

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

результат в конец файла "f2.txt". Для ввода и вывода использовать только

средства языка С.

Пример исходного файла "f1.txt"

3 4

5 4 7 4

-8 9 -9 -3

4 -5 6 5

*/

#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);

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

int otr(0);

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

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

if(mas[i][j]<0) otr++;

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

printf("%s%d","\nkoli4estvo otricat elementov= ",otr);

fprintf(fout,"%s%d","\nkoli4estvo otricat elementov= ",otr);

puts("\nKonec\n");

getchar();

return 0;

}

//---------------------------------------------------------------------------

/*

Содержимое файла после выполнения программы "f2.txt"

5 4 7 4

-8 9 -9 -3

4 -5 6 5

koli4estvo otricat elementov= 4

*/