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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2011, 20:27   #1
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию Программа

Код:
#include <iostream>

using namespace std;

int main()
{
   int y;
   int day,month,year;
   cout<<"day, month, year \n";
   cin>>day>>month>>year;
   switch (month)
   {
         
         case 4:
              if (day = 30)
              month++;
              day = 1;
              cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
              break;         
              if( day > 30)
              cout<<"Error";
              break;
              if (day < 30 || day > 0)
              ++day;
              cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
              break;
         case 6:
         case 9:
         case 11:
              if(day > 30)
              cout<<"Error";
              break;
         case 1:
Вот код, где текст выделенный красным там if (day = 30). Почему даже когда day != 30 выполняется if (day = 30).
Что делать подскажите пожалуйста
ZoomHz вне форума Ответить с цитированием
Старый 13.07.2011, 20:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Потому что = - это ПРИСВАИВАНИЕ, а СРАВНЕНИЕ - ==
p51x вне форума Ответить с цитированием
Старый 13.07.2011, 20:44   #3
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что = - это ПРИСВАИВАНИЕ, а СРАВНЕНИЕ - ==
Исправил. Все равно когда пишу 32 4 1999 преобразовывается на 1 4 1999
ZoomHz вне форума Ответить с цитированием
Старый 13.07.2011, 21:00   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

косяк с условиями:
Код:
if (day = 30)
month++;
day = 1;
cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
break;         
if( day > 30)
до второго if не дойдет выполнение по-любому.
Carbon вне форума Ответить с цитированием
Старый 13.07.2011, 21:06   #5
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Carbon Посмотреть сообщение
косяк с условиями:
Код:
if (day = 30)
month++;
day = 1;
cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
break;         
if( day > 30)
до второго if не дойдет выполнение по-любому.
if (day == 30) поправка
ну а что сделать что бы дошло??
ZoomHz вне форума Ответить с цитированием
Старый 13.07.2011, 21:17   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) а как задача стоит? Ввести день, месяц и год и выдать следующую за введённой дату?

2) А Вы не в курсе, что в разных месяцах разное число дней, а в одном месяце число дней ещё и от года зависит?
(рекомендую использовать или функцию DaysInMonth или массив с автокорректировкой февраля по году.

3) при вводе некорректной даты выдавать "Error" и завершать выполнение?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.07.2011, 21:18   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вот так устроит?
Код:
if (day == 30)
{
  month++;
  day = 1;
  cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
  break;
}         
if( day > 30)
{          
  cout<<"Error";break;
}
if (day < 30 || day > 0)
{
  ++day;
  cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
  break;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 13.07.2011 в 21:23.
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.07.2011, 21:21   #8
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Вот так устроит?
Код:
if (day == 30)
}
  month++;
  day = 1;
  cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
  break;
}         
if( day > 30)
{          
  cout<<"Error";break;
}
if (day < 30 || day > 0)
{
  ++day;
  cout<<day<< "."; cout<<month<< "."; cout<<year<< ".";
  break;
}
Спасибо, глупая ошибка
ZoomHz вне форума Ответить с цитированием
Старый 13.07.2011, 22:57   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так я и не понял, что же за задача решалась таким кодом..


а если ввести 30 12 2010 - всё нормально выдаст в качестве результата?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.07.2011, 15:49   #10
ZoomHz
Пользователь
 
Аватар для ZoomHz
 
Регистрация: 25.06.2011
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так я и не понял, что же за задача решалась таким кодом..


а если ввести 30 12 2010 - всё нормально выдаст в качестве результата?
задача определить следующий день
если ввести 30 12 2010 >tomorrow 31 12 2010 >tomorrow 01 01 2011
ZoomHz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56