#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <map>
#include <vector>
FILE *in = fopen("input.txt","r");
FILE *out = fopen("output.txt","w");
/*
FILE *in = stdin;
FILE *out = stdout;
*/
int n,m;
int main()
{
int i,j,k;
int cnt=0;
double h,m,s,v=0;
int hh=0,mm=0,ss=0;
char dummy;
double dis=0;
int flag=0;
for(;;)
{
if(fscanf(in,"%lf:%lf:%lf",&h,&m,&s)==EOF) break;
if(fscanf(in,"%c",&dummy)==EOF) break;
if(dummy==EOF)
{
break;
}
if(dummy=='\n')
{
dis+=(h-hh)*v+(m-mm)*v/60+(s-ss)*v/3600;
if((int)h/10==0)
{
fprintf(out,"0");
}
fprintf(out,"%d:",(int)h);
if((int)m/10==0)
{
fprintf(out,"0");
}
fprintf(out,"%d:",(int)m);
if((int)s/10==0)
{
fprintf(out,"0");
}
fprintf(out,"%d",(int)s);
fprintf(out," %.2lf km\n",dis);
}
else
{
if(dis!=0)dis+=(h-hh)*v+(m-mm)*v/60+(s-ss)*v/3600;
fscanf(in,"%lf",&v);
}
flag=1;
hh=h;mm=m;ss=s;
}
return 0;
}
저에게 안되는 예제를 던져주시죠 은기선밴님>_<뿌잉꾸잉 데헿
상당히 저도 어이가없지만지금.. dummy가 문제에요..
scanf("%c",&dummy); 해서 \n인지, 아닌지 확인하지말고,
getchar을 사용해서 공백이면 속도 입력받고 아니면 받지 않고 하니까 되네요..
그리구 다른거로는 h,m,s는 정수입니다. double 형 말구 int 형을 사용하셔야 되구여,
dis+=(h-hh)*v+(m-mm)*v/60+(s-ss)*v/3600 에서 dis가 double형을 요구하기 때문에 계산식에서 v/60같은 경우 (int)/(int)이므로 double 형이아닙니다. 따라서
dis+=(h-hh)*v+(m-mm)*v/60.0+(s-ss)*v/3600.0 으로 해주셔야 double형으로 들어갑니다.