2 / 2 / 2
Регистрация: 25.10.2014
Сообщений: 48

Неправильная работа цикла

08.11.2014, 14:31. Показов 706. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два цикла:
C++
1
2
3
4
while (infile){
        infile >> dist1;
        cout << dist1 << endl;
    }
C++
1
2
3
4
5
6
while (1){
        infile >> dist1;                  
        if (infile.eof())            
            break;
        cout << dist1 << endl;  
    }
Первый работает неправильно, второй правильно. Неправильность первого в том, что он выводит на экран последнюю величину, записанную в файл, дважды. Не могу почему так происходит. По моей логике цикл работает так: извлекает из файла данные и кладёт их в dist, выводит на монитор dist, потом проверяется условие цикла (если EOF, тогда дальше цикл не выполнять). Почему он дважды выводит последнее значение?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2014, 14:31
Ответы с готовыми решениями:

Условие цикла if, неправильная работа if
cin.getline(str1,N); //getline-запись данных в строку str1,размерность N; cout&lt;&lt;&quot;Enter second string -&gt; &quot;&lt;&lt;endl;...

Неправильная работа
Почему на неправильно работает? #include&lt;iostream&gt; using namespace std; int main() { int b; for (int i=0; i&lt;=14;...

Неправильная работа scanf_s
Ув. программисты, Есть такой код: #include &lt;stdio.h&gt; #include &lt;iostream&gt; int main() { char name;

1
9 / 9 / 13
Регистрация: 25.10.2014
Сообщений: 52
08.11.2014, 15:56
Цитата Сообщение от kroak Посмотреть сообщение
Почему он дважды выводит последнее значение?
Потому что на последней итерации, когда последний символ(текст) записан из потока в переменную dist1, конец файла еще не найден (то есть infile.eof() != true) , и цикл повторится, и тогда при записи в переменную из потока произойдет изменение состояния (ingile.eof() == true). переменная dist1 останется без изменения и будет выведена на экран второй раз. Во втором цикле, вы успешно выходите из этой ситуации используя условие if (infile.eof()).

Например , можно записать ваш цикл вот так:
C++
1
while(infile >> dist1) cout << dist1 << endl;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2014, 15:56
Помогаю со студенческими работами здесь

Неправильная работа деструктора
При выполнении деструктора вылетает ошибка //Врачебный контроль физиологического состояния спортсмена #include &lt;iostream&gt; ...

Неправильная работа кода
я уже обращалась с этим вопросом. у меня код написан без ошибок. работать он должен: я задаю ему номер задачи, а он должен выдавать...

Неправильная работа исключений
Сделал в программе исключения, если пользователь направльно ввводит значения: // englerr.cpp // контроль ввода данных для класса...

Неправильная работа с файлами
#include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;windows.h&gt; #include &lt;string&gt; struct student { char name; char...

Неправильная работа программы
была программа, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв. вот она) ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru