안녕에 퍼즐을 해결하기 위해 노력 도움말 - 나는 C++로를 작성하고 메신저 매우 성가신 결과를 얻고있다 http://www.spotify.com/uk/jobs/tech/best-before/C++ 나는 스포티 파이 웹 사이트에 퍼즐을 해결하기 위해 노력하고있는 스포티 파이
. 쓸모가없고 아무것도하지 않는 pause
이라는 int가 있습니다.하지만 삭제하면 프로그램이 잘못된 결과를 반환하는 것처럼 보입니다.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int Year;
int Month;
int Day;
int pause; // <--- My useless INT which when Deleted my code returns wrong output
stringstream ss;
string input;
string in;
bool loop=true;
int date[3];
bool DateFound=false;
void Check_date();
void Check_date()
{
if(DateFound==false)
{
//Check if valid Year
if (date[1]<2999 && date[1]>0 && date[2]>0 && date[3]>0)
{ //check months & days are valid
if(date[2]==1 || date[2]==3 || date[2]==5 || date[2]==7 || date[2]==8 || date[2]==10 || date[2]==12){if(date[3]<=31){DateFound=true;}}
if(date[2]==4 || date[2]==6 || date[2]==9 || date[2]==11){if(date[3]<=30){DateFound=true;}}
//Check For Leap Year
if (date[2]==2)
{ if(date[3]<28)DateFound=true;
if(date[1]%4==0 && date[3]<=29)DateFound=true;
if(date[1]%100==0 && date[1]%400!=0 && date[3]>28)DateFound=false;
}
if(DateFound==true){Year=date[1]; Month=date[2]; Day=date[3];}
}
}
}
void SwitchDate(){int temp; temp=date[2]; date[2]=date[3]; date[3]=temp;
Check_date();};
void ShiftDate(int places)
{ if(places==1)
{
int temp; temp=date[3]; date[3]=date[2]; date[2]=temp; temp=date[1]; date[1]=date[2]; date[2]=temp; Check_date();
}
if(places==2)
{
int temp; temp=date[1]; date[1]=date[2]; date[2]=temp; temp=date[2]; date[2]=date[3]; date[3]=temp; Check_date();
}
};
int main()
{
while(loop==true)
{
cin >> input;
for (int x=0, y=1; y<4; y++, x++)
{
while (input[x] !='/' && x !=input.length()) ss<<input[x++];
ss>> date[y];
ss.clear();
}
//order small medium large
for (int x=3, temp; x!=0; x--)
{
if (date[x] < date[x-1])
{ temp=date[x-1];
date[x-1]=date[x];
date[x]=temp;
}
if (x==1 && (date[2] > date[3]))
{
temp=date[3];
date[3]=date[2];
date[2]=temp;
}
}
Check_date();//return true
SwitchDate();
ShiftDate(1);
SwitchDate();
ShiftDate(2);
SwitchDate();
//PRINT
cout <<Year; cout<< endl;
cout <<Month; cout<< endl;
cout <<Day; cout<< endl;
// 13/12/5
cout <<"Again? 'Y' or 'N' \n";
cin >>in;
if(in=="y" || in=="Y"){loop=true;}
if(in=="n" || in=="N"){loop=false;}
}
return 0;
}
내 시간에 형식이 잘못된 코드를 보았습니다. 그러나 이것은 최악의 경우입니다! 죄송합니다 ... 문제가있는 곳을보기 위해 읽을 수 없습니다. – Johnsyweb
http://codegolf.stackexchange.com/에 가장 적합합니다. – jweyrich