@hell0_w0rld

Как считать строку из файла и записать числа в массив?

Мне дан файл input.txt, в котором находится строка, где через пробел указаны числа (их число неизвестно). Требуется узнать их сумму.
Мне не понятен алгоритм.
Предложу свой
0. Считываем данные, но для того, чтобы считать, вроде бы, нужно знать длину строки (Сейчас пришла гениальная идея - узнать размер файла и поделить на 2)
1. Берем si элемент массива.
2. Проверяем на пробел
3. Если пробел, то переходим к метке num2arr. (В этой метке создаем цикл с di итерациями (i = от 0 до di-1). вытаскиваем из стека символ-цифру, переводим символ в цифру (bx), производим такую операцию - ax = (i*10)+bx и так далее до конца цикла. Потом пишем ax в массив (там еще одна переменная нужна))
4. Если цифра, то кладем в стек. Прибавляем еще какую нибудь переменную, к примеру, di

Но мне кажется, что тут всё запутано и можно легче. Подскажите как.
  • Вопрос задан
  • 313 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Мне дан файл input.txt, в котором находится строка, где через пробел указаны числа (их число неизвестно). Требуется узнать их сумму.
...
мне кажется, что тут всё запутано и можно легче. Подскажите как.

не заводить промежуточных массивов, считать всё на лету:
0) нужно держать текущую сумму (S), инициализировать её нулём
1) нужно держать значение прочитанного на данный момент числа (V), инициализировать его нулём
2) читать из файла посимвольно
-- если прочитанный символ -- цифра (d), добавить её к текущему числу: V = V * 10 + d
-- если прочитанный символ -- не-цифра или конец файла, добавить текущее число к сумме и занулить текущее число: S = S + V; V = 0
3) если конец файла, то вывести S и закончить работу, иначе продолжить с п. 2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Kalombyr
@Kalombyr
Длину строки знать не обязательно.
В помощь: https://ru.cppreference.com/w/cpp/string/basic_str...
и оператор >> (пропускает пробел по умолчанию, так что можно сразу цифры получать).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы