Поиск предложения с максимальным количеством знаков пунктуации

Написать программу, которая считывает текст из файла и выводит на экран предложение, содержащие максимальное количество знаков пунктуации.

Решение на C++:
#include <iostream>
#include <fstream>
 
int main()
{
	// input stream
	std::ifstream fin("input.txt", std::ios::in | std::ios::binary);
 
	if (!fin) {
		std::cout << "Error opening input.txt" << std::endl;
		return 0;
	}
 
	// get file size
	fin.seekg(0, std::ios_base::end);
	int file_size = fin.tellg();
	fin.seekg(0, std::ios_base::beg);
 
	// read file
	char *buf = new char [file_size + 1];
	int punct_max = 0, punct_current = 0, current_start = 0, pos_start = 0, pos_end = 0;
 
	for (int i = 0; (buf[i] = fin.get()) != EOF; i++) {
		switch (buf[i]) {
			case '\n':
				buf[i] = ' ';
				break;
			case ',':
				punct_current++;
				break;
			case '.': case '?': case '!':
				if (punct_current > punct_max) {
					punct_max = punct_current;
 
					pos_start = current_start;
					pos_end = i;
				}
 
				punct_current = 0;
				current_start = i + 1;
				break;
		}
	}
 
	// print sentence
	bool is_trimmed = false;
	for (int i = pos_start; i <= pos_end; i++) {
		if (!is_trimmed) {
			if (buf[i] == ' ') {
				continue;
			} else {
				is_trimmed = true;
			}
		}
 
		std::cout << buf[i];
	}
 
	std::cout << std::endl;
	return 0;
}
Входной файл input.txt:
The first sentence. Second, huh? Third! Four, three, two, one. The sentence,
ending on the second line.
Результат выполнения программы:
Four, three, two, one.
Перейти к верхней панели