Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 9

Что делать с чтением последвательности неизвестной длины?

06.09.2016, 00:48. Показов 559. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файл записана последовательность какой-то длины.
Допустим, надо найти сумму всех элементов, не используя массива.
Как вообще организовать чтение элементов до конца файла? Каким образом дают понять, что все прочтено?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2016, 00:48
Ответы с готовыми решениями:

Ввод строки неизвестной длины
Собственно на вход подается строка неизвестной длины, ввод которой оканчивается переходом на новую строку. Знаю, что есть функция fgets,...

Реверс массива неизвестной длины
Здравствуйте,помогите пожалуйста написать программу.Напишите программу, которая выполняет реверс массива целых чисел, то есть переставляет...

Ввод массива неизвестной длины
Добрый день! Уважаемые знатоки, вопрос скорее всего тривиальный, но тем не менее решения у меня нет. Нужно задать вектор через пробелы...

6
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2016, 01:15
Ler123,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    fstream file("array.txt");
    int sum=0, n;
    if (!file.is_open())
    {
        cout << "Error!\n";
    }
    else
    {
        while (!file.eof()) //вот здесь проверка
        {
            file >> n;
            sum+=n;
        }
    }
    cout << sum;
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
06.09.2016, 08:11
Даценд, Есть нюанс.
Конец файла наступает при чтении за последними данными.
поэтому
C++
1
2
3
4
5
6
7
while (true) 
{
      file >> n;
      if(file.eof())  //вот здесь проверка
          break;
      sum+=n;
}
а лучше
C++
1
2
3
4
while (file >> n) //вот здесь проверка
{
     sum+=n;
}
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2016, 10:27
zss,
со вторым вариантом согласен, а первый не прибавит последнее прочитанное значение
1
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
06.09.2016, 15:23
Цитата Сообщение от Даценд Посмотреть сообщение
а первый не прибавит последнее прочитанное значение
В Вашем варианте прибавит. При чтении за концом файла в n останется прежнее значение, и т.о. оно просуммируется дважды.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2016, 16:45
Цитата Сообщение от zss Посмотреть сообщение
оно просуммируется дважды
только если после последнего числа в файле есть пробел, перевод каретки и т.п.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
06.09.2016, 18:01
Цитата Сообщение от zss Посмотреть сообщение
Даценд, Есть нюанс.
zss, есть ещё один нюанс. Если идёт форматированное чтение чисел, и за последним числом сразу конец файла, то, после чтения этого числа, установится флаг eof.

Добавлено через 46 минут
Это насчёт первого варианта. Лучше использовать второй вариант, он более универсален, будет правильно работать и в случае если за последним числом сразу конец файла, и если за последним числом какие-нибудь пробельные символы, за которыми конец файла (там проверка не eof флага, а fail).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.09.2016, 18:01
Помогаю со студенческими работами здесь

Массив символов неизвестной длины
Добрый утро/день/вечер. Дело такое: вводится строка состоящая из слов и чисел(целых), разделяют все это безобразие разнообразные символы:...

Сортировка массива неизвестной длины
Напишите программу, которая сортирует массив ненулевых целых чисел в порядке возрастания (неубывания). Размер массива заранее неизвестен....

Сортировка массива неизвестной длины - 2
Здравствуйте,помогите пожалуйста написать программу. Напишите программу, которая сортирует массив ненулевых целых чисел в порядке...

Сортировка массива неизвестной длины
Ограничение по времени, сек 2 Ограничение по памяти, мегабайт 64 PascalABC 3.1.0.1198 Напишите программу, которая сортирует...

Считать строку неизвестной длины
Как на си считать строку неизвестной длины?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru