Из файла input.txt считайте строку символов S. Число символов, входящих в строку S, не более 255.Результаты вычислений запишите в файл output.txt

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main()
{
ifstream in("input.txt");
ofstream out;
out.open("output.txt");
char line[255];//Буферная переменная
int s;
if (!in.is_open()) // если файл не открыт
cout « "Файл не найден!\n"; // сообщить об этом
else
{
while (in.getline(line, 255)) // считали строку
{
for (s = 0; s < strlen(line); s++)
if (line[s] == 255)
line[s] = 0;
else
line[s] = line[s] + 1;
out « line « endl;
}
out.close();
}
}

Для считанной строки S определите сумму входящих в эту строку целых чисел Это надо добавить но я не знаю куда и что вводить.Помогите плиз


Ответы (1 шт):

Автор решения: AR Hovsepyan
  1. По условию файл может содержать 255 символов, поэтому char line[256]

  2. Каждый раз вы инициализируете массив новой строкой ( while (in.getline(line, 255))), а надо весь файл читать в массив. Поэтому нужно добавить в массив вновь прочитанную строку. В данном случаи, когда мы точно знаем, что количество прочитанных символов не превышает размер массива можно, например, так:

    char* p = line;
    while (in.getline(p, 255))
        p = line + strlen(line);
    

Но вам нужно еще и анализировать содержимое файла _ найти числа, поэтому лучше прочитать по символу.

  • Если этот символ - или +, то смотреть следующий символ(in.peek()) является числом? Если да, то выполнить read_add_write( читать из файла число, добавить к sum, (где int sum = 0 заранее объявлен) с учетом знака и записать строковое представление числа в массив(не знаю зачем в массив, если можно сразу в файл)).
  • Если прочитанный символ уже число, тогда положить обратно в буфер ( in.unget()) и выполнить read_add_write. Иначе просто записать в массив(файл)

.

→ Ссылка