Из файла 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
→ Ссылка
По условию файл может содержать 255 символов, поэтому
char line[256]Каждый раз вы инициализируете массив новой строкой ( 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. Иначе просто записать в массив(файл)
.