Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
NillK
 Аватар для NillK
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 11
#1

Почему цикл с условием EOF читает последний символ 2 раза? - C++

26.09.2013, 15:48. Просмотров 1115. Ответов 3
Метки нет (Все метки)

Данная программа читает двоичную строку и выводит длину самой продолжительной цепочки нулей.
Почему мой цикл читает 2 раза последнее число?
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>
#include <stdio.h>
using namespace std;
int main (){
char a;
int i1,i2;
i1 = 0;
i2 = 0;
ofstream out("output.txt");
ifstream in ("input.txt");
while(!in.eof())
{
    in>>a;
    if(a=='0')
    i1++;
    else i1 = 0;
    if(i1>i2)
    i2=i1;
 
}
out<<i2;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 15:48     Почему цикл с условием EOF читает последний символ 2 раза?
Посмотрите здесь:

C++ Возможно ли записать в последний символ EOF?
Цикл с параметром и цикл с условием C++
цикл с условием C++
cin.getline() не читает 1 символ C++
While-цикл с условием. C++
Считать последний символ файла. Записать символ в конец файла C++
Последний элемент из файла выводится 2 раза C++
C++ Бесконечный цикл и EOF в VS 2013
Почему не срабатывает EOF C++
Каждый символ строки заменить на следующий за ним, а последний символ строки заменяеть первым C++
C++ Почему при чтении файла последний символ выводится 2 раза?
C++ Почему если в консоли ввести вместо числа любой символ, программа впадает в бесконечный цикл?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HedgehogLu
 Аватар для HedgehogLu
147 / 68 / 1
Регистрация: 04.09.2013
Сообщений: 254
26.09.2013, 16:03     Почему цикл с условием EOF читает последний символ 2 раза? #2
а с чего вы взяли что оно такое делает?
NillK
 Аватар для NillK
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 11
26.09.2013, 16:09  [ТС]     Почему цикл с условием EOF читает последний символ 2 раза? #3
HedgehogLu, вставил после 19 строчки проверку, которая выводила i1, i2 и a.
Проверка показала, что последний символ читается 2 раза.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.09.2013, 16:15     Почему цикл с условием EOF читает последний символ 2 раза? #4
Цитата Сообщение от NillK Посмотреть сообщение
Почему мой цикл читает 2 раза последнее число?
Он не читает два раза, а выводит два раза:
Вот так сделайте:
C++
1
while(cin >> a)
Добавлено через 1 минуту
Или вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
while(true)
{
    in>>a;
    if (in.eof()) break;
    if(a=='0')
    i1++;
    else i1 = 0;
    if(i1>i2)
    i2=i1;
 
}
Yandex
Объявления
26.09.2013, 16:15     Почему цикл с условием EOF читает последний символ 2 раза?
Ответ Создать тему
Опции темы

Текущее время: 20:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru