У меня проблема с моим кодом здесь. Программа должна считать секунды / год. Мне удалось исправить високосный год, но не смог исправить нормальный год. Надеюсь, кто-нибудь сможет это исправить. (это функция, которая вызывается для main)
Заметка
#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;
}
}
if(y=true)
Это всегда true
так как он будет оценен до присвоенного значения.
Должно быть:
if(y)
На самом деле это очень хорошая причина, чтобы понять, почему мы не пишем == true
при сравнении boolean
s. Вы можете легко ошибиться один =
вызывая назначение вместо сравнения.
Кроме того, что именно cin>>y||n;
?
Совет, который спасает жизни: как уже упоминалось @FredLarson, включите предупреждения (-Wall
) и вы получите предупреждение об этом.
Других решений пока нет …