| 
| 
 | Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |