Программирование на C++

Работа с файлами в языке программирования С++

Работа с файлами в языке программирования С++

Ниже представлен пример по работе с файлами на языке программирования С++.

Задание для выполнения:

В первой строке текстового файла IN.TXT записано количество чисел (не более 10000).Далее в нескольких строках записаны одно или несколько натуральных чисел, разделенных пробелами. Для каждого числа определить цифру, которая чаще всего встречается в его записи. Если таких цифр несколько, то найти все. Результаты записать в текстовый файл OUT.TXT в виде: число, знак двоеточия, искомая цифра или цифры, разделенные запятой(для каждого исходного числа должна быть создана одна строчка в выходном файле, для повторяющихся чисел должна быть одна строка).
Выполнить проверку на существование и пустоту входного файла.

Код программы:

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
	setlocale(LC_ALL, "rus");
	int shet = 0; //счётчик, считает количество цифр
	char mas[50]; // массив
	int one = 0; // здесь и ниже. количество на считаныф цифр
	int two = 0;
	int there = 0;
	int four = 0;
	int five = 0;
	int six = 0;
	int seven = 0;
	int eight = 0;
	int nine = 0;
	int zero = 0;
	ifstream read("in.txt");  // для чтения и считывания чисел
	ofstream write("out.txt"); // для записи цифр
	char ch;
	while (read.get(ch))
	{
		if (!(ch == 32)) // если не пробел
		{
			write << ch;  // записываем цифру в файл
			shet++;			// счётчик +1
		}
	}
	read.close();
	write.close();
	/*int *uk_mas = &shet;
	 mas = *uk_mas;*/			//попытка выделить память
	ifstream pol_mas("out.txt");  //для записи всех цифр в массив
	for (int i = 0; i < shet; i++) // пошагово записываем
	{
		pol_mas.get(ch);
		mas[i] = ch;
	}
	pol_mas.close();
	for (int i = 0; i < shet; i++) // сичтаем кол каждого числа
	{
		if (mas[i] == '1')
			one++;
		else if (mas[i] == '2')
			two++;
		else if (mas[i] == '3')
			there++;
		else if (mas[i] == '4')
			four++;
		else if (mas[i] == '5')
			five++;
		else if (mas[i] == '6')
			six++;
		else if (mas[i] == '7')
			seven++;
		else if (mas[i] == '8')
			eight++;
		else if (mas[i] == '9')
			nine++;
		else
			zero++;
 
	}
	int max = 0;  // макс кол повторений
	char max_ch;  // цифра которая повторялась больше других
	// ниже находим цифру с наибольшей частатой появления
	if (one > max)
	{
		max = one;
		max_ch = '1';
	}
	else if (two > max)
	{
		max = two;
		max_ch = '2';
	}
	else if (there > max)
	{
		max = there;
		max_ch = '3';
	}
	else if (four > max)
	{
		max = four;
		max_ch = '4';
	}
	else if (five > max)
	{
		max = five;
		max_ch = '5';
	}
	else if (six > max)
	{
		max = six;
		max_ch = '6';
	}
	else if (seven > max)
	{
		max = seven;
		max_ch = '7';
	}
	else if (eight > max)
	{
		max = eight;
		max_ch = '8';
	}
	else if (nine > max)
	{
		max = nine;
		max_ch = '9';
	}
	else
	{
		max = zero;
		max_ch = '0';
	}
	ofstream otvet("out.txt"); // записываем  ответ
	otvet << max_ch <<" : " << max;
	system("pause");
	return 0;
}

Скриншот кода программы:
-CbskNll-DU

Содержание вспомогательных файлов:
Файл in.txt

1 2 3 4 5 6 7 8 9 10 11 12 13

файл out.txt

1 : 6