Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2012, 21:29   #1
Lers
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 33
Вопрос если дата m,d,y предшествует дате m1,d1,y1, иначе t=false. с++

Переменной t присвоить значение true , если дата m,d,y предшествует дате m1,d1,y1, иначе t=false. (m -месяц d-день y-год )
P.S. заранее спасибо
Lers вне форума Ответить с цитированием
Старый 13.12.2012, 00:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
t = ( (y<y1) || (y==y1) && (m<m1) ||  (y==y1) && (m==m1) && (d<d1) );
вот и всё!


p.s. || - это логическое "ИЛИ"( OR), && - логическое "И" (AND),
C++ я не знаю, поэтому надеюсь, что в синтаксисе я ничего не напутал..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 12:57   #3
Lers
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
t = ( (y<y1) || (y==y1) && (m<m1) ||  (y==y1) && (m==m1) && (d<d1) );
вот и всё!


p.s. || - это логическое "ИЛИ"( OR), && - логическое "И" (AND),
C++ я не знаю, поэтому надеюсь, что в синтаксисе я ничего не напутал..
спасибо сейчас протестирую
Lers вне форума Ответить с цитированием
Старый 13.12.2012, 13:08   #4
Lers
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 33
По умолчанию

Попробовал, на каждый тест у меня true какие бы дату я не ввел.

Например: 20.11.2011 и 13.01.2011 пишет тру
Lers вне форума Ответить с цитированием
Старый 13.12.2012, 13:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вводить нужно числа ПО ОТДЕЛЬНОСТИ!
Это раз.

во-вторых, у Вас в задании написано вводить m, d, y
т.е. сначала должно быть введён номер месяца, потом день, и только потом - год.
Вы об этом не забыли?!

И вообще, давайте сюда полностью код, где Вы вводите m, d, y и m1, d1, y1
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 14:42   #6
Lers
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 33
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>

void main()
{
 int m,d,y,m1,d1,y1;
 int t;
printf("\n Vvedite daty");
scanf("%d%d%d",m, d, y);
printf("\n Vvedite daty2");
scanf("%d%d%d",m1, d1, y1);

if ((y<y1) || ((y==y1) &&(m<m1)) || ((y==y1) && (m==m1) && (d<d1)))
 t=1;
 else t=0;

printf("%d",t);
getch();
}
Вот, t=1 (true) t=0(false)
Lers вне форума Ответить с цитированием
Старый 13.12.2012, 14:51   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

И оно не падает? Странно...
Это я к тому, что scanf работает немного не так.
Abstraction вне форума Ответить с цитированием
Старый 13.12.2012, 15:16   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вводите
Код:
11 20 2011 01 13 2011 
а вообще, перед выводом t поставьте вывод первой даты и второй даты,
чтобы увидеть, чему у Вас в программе равны m,d,y,m1,d1,y1 - думаю, что Вы будете удивлены..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 15:23   #9
Lers
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вводите
Код:
11 20 2011 01 13 2011 
а вообще, перед выводом t поставьте вывод первой даты и второй даты,
чтобы увидеть, чему у Вас в программе равны m,d,y,m1,d1,y1 - думаю, что Вы будете удивлены..
Действительно удивлен, т.к. выводит даты -29325 12803 12900 и т.д.
Lers вне форума Ответить с цитированием
Старый 13.12.2012, 15:30   #10
Lers
Пользователь
 
Регистрация: 12.12.2012
Сообщений: 33
По умолчанию

Нашел ошибку, забыл в scanf ("%d", &m) добавить &. Вывод теперь нормально, но все тесты не проходит, так как допустим если сравнить 1 января и 31 декабря, то пишет false а должно быть true
Lers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если А1 принадлежит диапазону D1:D100 то 1 иначе 0 PARTOS Microsoft Office Excel 1 16.10.2012 00:21
Если равно, то пустое иначе значение kzld Microsoft Office Excel 4 15.12.2010 10:21
если элементы k-й строки матрицы упорядочены по убыванию, иначе 0 nesss Помощь студентам 1 01.11.2010 15:41
если >30 тогда "да" иначе "нет"... DBgrid Daur БД в Delphi 4 30.05.2010 16:54
Сравнение строк, добавление если false Des Общие вопросы Delphi 6 20.08.2009 12:32