Код — помогите високосному

У меня проблема с моим кодом здесь. Программа должна считать секунды / год. Мне удалось исправить високосный год, но не смог исправить нормальный год. Надеюсь, кто-нибудь сможет это исправить. (это функция, которая вызывается для main)

Заметка

  • ч = часы
  • д = день
  • вы = год
  • м = месяц
  • с = секунды
  • t = общее количество секунд
  • t2 = високосный год

#include <iostream>
using namespace std;

void max_s()
{
unsigned long long s=1;

int h=s*60;

int d=h*24;
int m=30;
int ye=12;
long long t=s*h*d*m*ye;
long long t2=t+86400;
bool y,n;
y=true;
n=false;
cout<<"leapyear? 'y' for yes 'n' for no "<<endl;
cin>>y||n;
if(y=true)
{
cout<<"leapyear:"<<t2<<endl;
}
else
{
n=false;
cout<<t;
cout<<"seconds/year "<<endl;
}
}

0

Решение

if(y=true) Это всегда true так как он будет оценен до присвоенного значения.

Должно быть:

if(y)

На самом деле это очень хорошая причина, чтобы понять, почему мы не пишем == true при сравнении booleans. Вы можете легко ошибиться один = вызывая назначение вместо сравнения.

Кроме того, что именно cin>>y||n;?

Совет, который спасает жизни: как уже упоминалось @FredLarson, включите предупреждения (-Wall) и вы получите предупреждение об этом.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]