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

0

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

Заметка

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

#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;
    }
}
  • 2
    Что вы ожидаете, cin>>y||n; сделать?
  • 0
    предполагается, что пользователь вводит эти данные в y (да) или n (нет) в течение високосного года
Теги:
leap-year

1 ответ

2
Лучший ответ

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

Должно быть:

if(y)

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

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

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

  • 1
    Добавление -Wall компиляции -Wall (или аналога для компиляторов, отличных от g ++) также должно предупреждать о случайном присваивании.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню