Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Здравствуйте, не могу написать программу в С++, помогите пожалуйста.

Казаков Евгений Знаток (448), закрыт 1 год назад
Условие может и очень простое, но я в программировании овощ.

Создать файл, содержащий произвольные текстовые строки. Подсчитать количество строк, начинающихся с буквы 'Я'. Создать Блок-схему работы файла.

Заранее большое спасибо!
Лучший ответ
Саня Литвинский Профи (986) 1 год назад
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
string filename = "text.txt"; // имя файла
string line; // переменная для хранения строки из файла
int count = 0; // счетчик строк, начинающихся с буквы '

ifstream myfile(filename); // открыть файл для чтения

if (myfile.is_open()) // если файл успешно открыт
{
while (getline(myfile, line)) // читать строки из файла, пока не достигнут конец
{
if (line[0] == 'Я') // если первая буква строки - 'Я'
{
count++; // увеличить счетчик строк
}
}
myfile.close(); // закрыть файл
}
else // если файл не удалось открыть
{
cout << "Unable to open file." << endl;
return 1;
}

cout << "Number of lines starting with 'Я': " << count << endl; // вывести количество строк

return 0;
}



Блок-схема работы программы примерно следующая:
Начало программы
Открыть файл для чтения
Если файл не удалось открыть, вывести сообщение об ошибке и завершить программу
Для каждой строки в файле:
Если первый символ строки - 'Я', увеличить счетчик
Закрыть файл
Вывести количество строк, начинающихся с буквы 'Я'
Конец программы
Казаков ЕвгенийЗнаток (448) 1 год назад
спасибо большое
D PМудрец (11137) 1 год назад
Кто вам сказал, что буква "я" занимает один байт данных?
 if (line[0] == 'Я') // если первая буква строки - 'Я' 
{
count++; // увеличить счетчик строк
}
Вот так делать нельзя.
В ТЗ ничего не сказано о кодировке, поэтому она может быть любой. При этом, учитывая текущие тенденции, в реальной системе она, с высокой долей вероятности, будет UTF-8. А в у UTF-8 один символ может иметь длину несколько байт. конкретно буква "я" из русского языка имеет 2 байта длины.
Кроме того, в ТЗ указано "Подсчитать количество строк, начинающихся с буквы 'Я'". И вот тут кроется неоднозначность. С точки зрения человека, строки
" Яблоко и груша" и "\tякорная цепь" также начинаются с буквы "Я", хотя на самом деле они начинаются с пустых символов. По хорошему, эту ситуацию тоже надо обрабатывать.
Саня Литвинский Профи (986) D P, спасибо!
Остальные ответы
Андрей Абидов Искусственный Интеллект (144422) 1 год назад
Тогда ты не будешь автором
Казаков ЕвгенийЗнаток (448) 1 год назад
мне главное сам код, это единственное что мне надо.
Санжар Нурмухамедов Ученик (108) 1 год назад
зайди в ChatGPT там будет ответ на любой твой вопрос, даже построят код программы главное напиши что тебе надо в C++
Казаков ЕвгенийЗнаток (448) 1 год назад
спасибо за идею, открыл новые возможности
D P Мудрец (11137) Казаков Евгений, Это не новые возможности, это тупик.
Ярослав Стерхов Ученик (171) 1 год назад
using namespace std; в глобале - приглашение кучи проблем и минус балл на собеседовании.
Похожие вопросы