|
Вопрос # 4 629/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Изучаю С++, ветвления.
Программа является решением задачи (не важно какой).
Выполняется 1-е условие, независимо от введенных данных.
Например: y=2009, m=2, d=2.
Должен вывести 26, выводит 29 (опять срабатывает 1-е условие, хотя должно сработать 3-е).
Приложение: Переключить в обычный режим- #include <iostream>
- using namespace std;
- int main()
- {
- int y,m,d,c;
- cin>>y>>m>>d;
- c=y%4;
- if(m=1)cout<<31-d;
- else
- if((m=2)&&(c=0))cout<<29-d;
- else
- if((m=2)&&(c>0))cout<<28-d;
- else
- if(m=3)cout<<31-d;
- else
- if(m=4)cout<<30-d;
- else
- if(m=5)cout<<31-d;
- else
- if(m=6)cout<<30-d;
- else
- if(m=7)cout<<31-d;
- else
- if(m=8)cout<<31-d;
- else
- if(m=9)cout<<30-d;
- else
- if(m=10)cout<<31-d;
- else
- if(m=11)cout<<30-d;
- else
- if(m=12)cout<<31-d;
- return 0;
- }
Примечание #1 (1 октября 2010, 22:52): Заданные условия не работают.
В чем дело?
Помогите пожалуйста!
 |
Вопрос задал: prog-mer (статус: Посетитель)
Вопрос отправлен: 1 октября 2010, 22:49
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, prog-mer!
посмотрите на мою версию кода и найдите отличия
#include <iostream>
using namespace std;
int main()
{
int y,m,d,c;
cin>>y>>m>>d;
c=y%4;
if(m==1)cout<<31-d;
else if((m==2)&&(c==0))cout<<29-d;
else if((m==2)&&(c>0))cout<<28-d;
else if(m==3)cout<<31-d;
else if(m==4)cout<<30-d;
else if(m==5)cout<<31-d;
else if(m==6)cout<<30-d;
else if(m==7)cout<<31-d;
else if(m==8)cout<<31-d;
else if(m==9)cout<<30-d;
else if(m==10)cout<<31-d;
else if(m==11)cout<<30-d;
else if(m==12)cout<<31-d;
else cout << "Ops!";
return 0;
}
прочитайте ещё раз разницу между == и =
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 1 октября 2010, 23:43
Оценка за ответ: 5
Комментарий к оценке: Спасибо! Я тупанул, забыл, что на С++ = знак присваивания, а не равно, как на Pascal!
|
Ответ #2. Отвечает эксперт: min@y™
Ветвления изучаешь, говоришь?
Посмотри на мою версию кода и найди совпадения. :))
int main()
{
int y, m, d;
cin >> y >> m >> d;
if ((m > 0) && (m < 13))
switch (m)
{
case 4: case 6: case 9: case 11:
cout << 30 - d;
break;
case 2:
if (y % 4) cout << 28 - d;
else cout << 29 - d;
break;
default: cout << 31 - d;
}
else cout << "Ops!";
return 0;
}
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 2 октября 2010, 09:33
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 2 октября 2010, 19:24; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 2 октября 2010, 17:29 [#1]:
а кто после default двоеточие поставит? Вердикт - не скомпилируется
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 2 октября 2010, 19:24 [#2]:
Цитата (Вадим К):
а кто после default двоеточие поставит? Вердикт - не скомпилируется 
УЯ! Ошибся! Расстрелять меня!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|