Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
28 / 20 / 6
Регистрация: 19.11.2017
Сообщений: 91

Не срабатывает условие

19.11.2017, 15:48. Показов 1181. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Ребята, сразу скажу, обучаюсь на программиста, но еще в этом я полнейший нуль! Могу путать элементарные понятия, и поэтому прошу не кидаться в меня помидорами. В универе задали задачку. Условие: Введите в формате H1:M1:S1, H2:M2:S2 две тройки целых чисел, каждая из которых представляет собой время (H1, H2 – часы 00..23, M1, M2 – минуты 00..59, S1, S2 – секунды 00..59). Выведите то время, которое является наименьшим, в таком же формате H:M:S.

Я написал такой код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <windows.h>
 
int main()
 
{
int H1, M1, S1, H2, M2, S2;
scanf("%02d:%02d:%02d", &H1, &M1, &S1);
scanf("%02d:%02d:%02d", &H2, &M2, &S2);
if ((0 < H1 < 23) && (0 < H2 < 23) && (0 < M1 < 59) && (0 < M2 < 59) && (0 < S1 < 59) && (0 < S2 < 59))
{
if (H1 > H2) {
printf("%02d:%02d:%02d", H2, M2, S2);
}
else if (H2 > H1) {
printf("%02d:%02d:%02d", H1, M1, S1);
}
else if (M1 > M2) {
printf("%02d:%02d:%02d", H2, M2, S2);
}
else if (M2 > M1) {
printf("%02d:%02d:%02d", H1, M1, S1);
}
else if (S1 > S2) {
printf("%02d:%02d:%02d", H2, M2, S2);
}
else if (S2 > S1) {
printf("%02d:%02d:%02d", H1, M1, S1);
}
else {
printf("Time equal!\n");
}
}
else {
printf("Time incorrect!\n");
}
system("pause");
 
return 0;
}
Функция
C
1
2
3
4
if ((0 < H1 < 23) && (0 < H2 < 23) && (0 < M1 < 59) && (0 < M2 < 59) && (0 < S1 < 59) && (0 < S2 < 59))
else {
printf("Time incorrect!\n");
}
по моему мнению должна выводить на экран сообщение Time incorrect, если введется некорректное время, типа : 88:14:13 и 17:13:18. Но это не работает. Подскажите, в чем может быть ошибка, так как этот код никак на это не реагирует и выдает мне по условию задачи меньшее время, даже если оно некорректно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2017, 15:48
Ответы с готовыми решениями:

Не срабатывает условие
Добрый день. В input ввожу текст и по нажатию на кнопку должно происходить это: $ttt=array(&quot;мокрый&quot;, &quot;сухой&quot;); ...

Не срабатывает условие в while
Добрый день Есть задача определить победителя в игре который быстрее всех играков наберет 125 очков(число играков n) Данные храним...

Не срабатывает условие
Здарова. Не срабатывает условие: if k &lt;&gt; Automate(x, y) then form1.close; Пояснение: при запуске программы, в переменную...

3
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
19.11.2017, 16:41
int check(int H, int M, int S)
{
if (H <0 || H>23 || M<0 || M>59 || S<0 || S>50) return -1;
return 3600*H + 60*M + S;
}
Попробуй все сделать с помощью вот этой простой функции...
0
28 / 20 / 6
Регистрация: 19.11.2017
Сообщений: 91
19.11.2017, 22:22  [ТС]
Спасибо, но все оказалось намного проще!
Вместо
C
1
if ((0 < H1 < 23) && (0 < H2 < 23) && (0 < M1 < 59) && (0 < M2 < 59) && (0 < S1 < 59) && (0 < S2 < 59))
нужно вписать
C
1
    if ((0 <= H1) && (H1 <= 23) && (0 <= H2) && (H2 <= 23) && (0 <= M1) && (M2 <= 59) && (0 <= M2) && (M2 <= 59) && (0 <= S1) && (S1 <= 59) && (0 <= S2) && (S2 <= 59))
так как двойные неравенства нельзя использовать.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
19.11.2017, 23:44
Цитата Сообщение от Andymit Посмотреть сообщение
так как двойные неравенства нельзя использовать.
Да, конечно! А я и не заметил. То есть, можно, синтаксис это позволяет, но имеют совсем, совсем другой смысл!
Вина в моих двух специальностях. Я - немножко математик, немножко программист. И если математически эти записи имеют один, вполне определенный, смысл, то программистки имеют смысл совсем другой.
Но все-таки обратите внимание на предложенную функцию check. Ее использование позволит сделать код намного короче, и, что главнее - понятнее. Более того, эта функция при соответствующей модификации позволит сравнивать не только время, но и даты.
Но если вас интересует только эта конкретная задача, только ответ на этот вопрос, и нет цели научиться немножко программизму, можете на все мои советы внимания не обращать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2017, 23:44
Помогаю со студенческими работами здесь

Не срабатывает условие
Доброго времени суток. Есть php скрипт: while($i&lt;=$numpri){ $teklogus=mysql_query(&quot;select * from...

Не срабатывает условие
IIf( = &quot;Арефьева&quot;;&quot;4&quot;;IIf( = &quot;Бондаренко&quot;;&quot;3&quot;)) Синтаксическая ошибка в выражении. Что не так?

не срабатывает условие
не срабатывает условие? foreach ( DataGridViewRow x in dataGridView1.Rows) { if...

Не срабатывает условие
На форме имеется stringgrid edit и кнопка. Так вот по кнопке дробавляется в stringgrid, нужно сделать что бы проверялось на дубли и...

Не срабатывает условие
Здравствуйте! Помогите найти ошибку. Почему то не срабатывает условие в IIf(даже если условие не выполняется -&gt;=#6/27/2006# все равно...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru