0
I am getting segmentation fault while running my cpp program?What can be the reason?
#include <iostream> bool leapyear(int year) { if(year%4==0) { return true; }else if(year%4!=0) { return false; } } int main() { int y = 2016; //std::cin >> year; if(leapyear(y)==true) { std::cout<<y+" is leap year" << std::endl; }else if(leapyear(y)==false) { std::cout <<y+" is not a leap year" << std::endl; } return 0; } why i am getting segfault ?i don't think i am overwriting any file i am not allowed to ?
2 Respostas
+ 7
I think the error is due to the statements
cout<< y + "is leap year";
and cout<<y + "is not a leap year"; ,
as we cannot add strings and integers in C++ directly...
As a correction, try the following function - std::to_string(int); // C++11 only...
Or, convert 'y' to a string using stringstream using the following function :
std::string to_str(int a)
{
stringstream ss;
ss<<a;
return ss.str();
}
Here is the code, corrected , using std::to_string.
#include <iostream>
#include <string>
bool leapyear(int year) {
if(year%4==0) {
return true;
}else if(year%4!=0) {
return false;
}
}
int main()
{
int y = 2016;
//std::cin >> year;
if(leapyear(y)==true)
{
std::cout<<std::to_string(y)+" is leap year" << std::endl;
}else if(leapyear(y)==false) {
std::cout <<std::to_string(y) +" is not a leap year" << std::endl;
}
return 0;
}
+ 4
or
#include <iostream>
bool leapyear(int year) {
if(year%4==0) {
return true;
}else if(year%4!=0) {
return false;
}
}
int main() {
int y = 2016;
//std::cin >> year;
if(leapyear(y)==true) {
std::cout<<y << " is leap year" << std::endl;
}else if(leapyear(y)==false) {
std::cout <<y << " is not a leap year" << std::endl;
}
return 0;
}
without conversion