Untitled

 avatar
unknown
plain_text
4 years ago
2.8 kB
5
Indexable
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void out(int** mas, int n, int m, int sums, int e, FILE* pf)
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			fprintf(pf, "%5d", mas[i][j]);
		}
		fprintf(pf, "%c", '\n');
	}
	fprintf(pf, "Number of columns with zeros =  %d\n", sums);
	fprintf(pf, "Index str with the longest sequence identical elements =  %d\n", e);
}

int main()
{
	FILE* fin(NULL);
	fin = fopen("text1.txt", "r");
	if (!fin)
	{
		printf("Can not open file\n");
		return 1;
	}
	int n, m;
	fscanf(fin, "%d%d", &n, &m);
	int** mas = new int* [n];
	for (int i = 0; i < n; i++)
		mas[i] = new int[m];

	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			fscanf(fin, "%d", &mas[i][j]);
	fclose(fin);


	int sums = 0;   // suns = sum of colums
	for (int j = 0; j < m; j++)
	{
		int sum = 0;
		for (int i = 0; i < n; i++)
		{
			if (mas[i][j] == 0)
				++sum;
		}

		if (sum > 0)
			++sums;
	}

	int maxce = 0;   //maxce = max count identical elements
	int e;
	int ce = 0;      //ce = count identical elements
	for (int i = 0; i < n; i++)
	{

		for (int j = 0; j < m; j++)
		{
			for (int k = j + 1; k < m; k++)
			{
				if (mas[i][j] == mas[i][k])
					++ce;
				else
					ce = 0;
			}
		}
		if (ce > maxce)
		{
			maxce = ce;
			e = i;
		}

	}
	FILE* fout = fopen("f2.txt", "w");
	out(mas, n, m, sums, e, fout);
	out(mas, n, m, sums, e, stdout);
	fclose(fout);
	//---------------------------------------------------------------------


	fout = fopen("f3.txt", "wb");
	for (int i = 0; i < n; i++)
	{
		fwrite(mas[i], sizeof(int) * m, 1, fout);
	}
	fwrite((char*)&e, sizeof(e), 1, fout);
	fwrite((char*)&sums, sizeof(sums), 1, fout);
	fclose(fout);

	int** mas2 = new int* [n];
	for (int i = 0; i < n; i++)
	{
		mas2[i] = new int[m];
	}
	//ПЕРЕВІРКА ПРАВИЛЬНОСТІ ЗАПИСУ ДО БІН. ФАЙЛУ
	fout = fopen("f3.b", "rb");
	for (int i = 0; i < n; i++)
	{
		fread(mas2[i], sizeof(int) * m, 1, fout);
	}
	printf("%c", '\n');
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			printf("%5d", mas2[i][j]);
		}
		printf("%c", '\n');
	}
	printf("%c", '\n');

	fread((char*)&e, sizeof(e), 1, fout);
	printf("Sum of columns with zeros =  %d\n", sums);


	fread((char*)&sums, sizeof(sums), 1, fout);
	printf("Index str with the longest sequence identical elements =  %d\n", e);

	fclose(fin);
	//---------------------------------------------------------------------



	for (int i = 0; i < n; i++)
	{
		delete[]mas[i];
		delete[]mas2[i];
	}

	delete[]mas;
	delete[]mas2;
	puts("\nFinish\n");
	system("pause");
	return 0;
}
Editor is loading...