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

if/else if коряво работает - C++

Восстановить пароль Регистрация
 
mster-doc
 Аватар для mster-doc
14 / 14 / 4
Регистрация: 10.11.2012
Сообщений: 239
28.11.2012, 16:27     if/else if коряво работает #1
Здарвствуйте, что-то неправило работает программа.
думалось, что если времмы в формате hh:mm:ss введено корректно пишетса что правелон
а если там какието заоблочные цифры, то выдаёт что неверный формат, а у меня всегда правильно пишет.
C++
1
2
3
4
5
6
7
8
9
10
11
...
     if(00 <= hh <= 23 && 00 <= mm <= 59 && 00 <= ss <= 59)
      {
            cout << " Correct " << endl;
      }
      
      else if( 23 < hh < 00 && 59 < mm < 00 && 59 < ss < 00 )
      {
           cout << " not true format "<< endl;
      }
 ...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
28.11.2012, 16:33     if/else if коряво работает #2
C++
1
if(00 <= hh <= 23)
- это неправильная запись. Надо:
C++
1
if(hh >= 0 && hh <= 23)
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.11.2012, 16:33     if/else if коряво работает #3
Цитата Сообщение от mster-doc Посмотреть сообщение
00 <= hh <= 23
Фигасе =)))) Что такое 00? почему 00? И перепиши каждое условие, через &&
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.11.2012, 16:36     if/else if коряво работает #4
Цитата Сообщение от mster-doc Посмотреть сообщение
00 <= hh <= 23
Так писать нельзя. Это логическая ошибка. Сначала сравнивается 0 c hh, если hh больше или равно нулю, то результат равен 1, и эта единица сравнивается с 23. Это условие всегда истинно, так как результат первой операции может быть равен только единице ( true ) или 0 ( false ). А 0 и 1 меньше 23.
C++
1
0 <= hh && hh <= 23
Точно так же исправьте в остальных частях.
mster-doc
 Аватар для mster-doc
14 / 14 / 4
Регистрация: 10.11.2012
Сообщений: 239
28.11.2012, 16:47  [ТС]     if/else if коряво работает #5
а как тогда сделать что бы компьютер различал 2:2:2 от 2:02:02

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
      if(00 <= hh && hh <= 23 && 00 <= mm && mm <= 59 && 00 <= ss && ss <= 59)
      {
            cout << " Correct " << endl;
      }
      
      else if( 23 < hh && hh < 00 && 59 < mm && mm < 00 && 59 < ss && ss < 00 )
      {
           cout << " not true format "<< endl;
      }
теперь она не нишет ничего (ни правильно, ни неправильно) если я ставлю например 99 часов
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.11.2012, 16:51     if/else if коряво работает #6
Зачем тебе else if? Если хотя бы одно из первых условий не выполнится - данные уже не валидны, нафига еще какие-то проверки делать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2012, 16:51     if/else if коряво работает
Еще ссылки по теме:

Русификация.Работает-супер! Обьяснитте, как это работает? C++
Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает C++
Multimap STL - работает только запись в файл, поиск в файле не работает C++

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

Или воспользуйтесь поиском по форуму:
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
28.11.2012, 16:51     if/else if коряво работает #7
C++
1
2
3
4
if(hh >= 0 && hh <= 23 && mm >= 0 && mm <= 59 && ss >= 0 && ss <= 59)
    cout << " Correct " << endl;
else 
    cout << " not true format " << endl;
Yandex
Объявления
28.11.2012, 16:51     if/else if коряво работает
Ответ Создать тему
Опции темы

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