微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我正在学习编程,我想知道是否有任何方法可以让这段代码只接受整数

如何解决我正在学习编程,我想知道是否有任何方法可以让这段代码只接受整数

我想知道是否有办法让这个代码只接受整数,如果你输入一个带有小数的数字,这是错误代码

      if (anio % 4 == 0) {
        std::cout << "El anio "<<anio<<" es un anio biciesto" << '\n';
        return 0;
      }
      else if (anio % 100 == 0) {
        std::cout << "El anio "<<anio<<" no es un anio biciesto" << '\n';
        return 0;
      }
      else if (anio % 100 == 0 && anio % 400 == 0) {
        std::cout << "El anio "<<anio<<" es un anio biciesto" << '\n';
        return 0;
      }
      else{
        std::cout << "El anio "<<anio<<" no es un anio biciesto" << '\n';
        return 0;
      }
    }
    std::cout << "El anio que digito no es valido para el programa,debe ser un digito menor o igual a 500" << '\n';
    std::cout << "Quiere digitar otro anio? Digite 1 para volver a intentar o digite cualquier numero para salir del programa" << '\n';
    std::cin >> opcion;
    system("cls");
  } while(opcion==1);
  getchar();

  return 0;
}

解决方法

您可以使 anio 成为 float 并使用 std::modf 来检测它是否为整数。

#include <cmath>
#include <iostream>
#include <stdexcept>

int main(int argc,char *argv[]) {
    float anio;

    std::cin >> anio;

    if (std::modf(anio,&anio) != 0f)
        throw std::invalid_argument("El año debe ser un número entero");

    // do stuff
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。