24h購物| | PChome| 登入
2009-01-18 18:15:13| 人氣671| 回應0 | 上一篇 | 下一篇

ACM 587 There’s treasure everywhere!

推薦 0 收藏 0 轉貼0 訂閱站台

我的right(水平)up(垂直)

當我這兩個變數都用double之時,right=-0.000 up=0.000

當我這兩個變數都用float之時,right=0.000 up=-0.000

一整個就是3條線,所以混用唄。

應該我對型態還不是很熟,暫時先這樣吧!

/*************************************************************/

  1. #include<stdio.h>      
  2. #include<stdlib.h>      
  3. #include<string.h>      
  4. #include<math.h>      
  5. main()      
  6. {      
  7.  char n[201],END[4]="END";      
  8.  int temp,a,b,c,time=1;      
  9.  float right;      
  10.  double up;      
  11.  while(gets(n)!=0&&strcmp(n,END)!=0)      
  12.   {      
  13.    right=0.0;up=0.0;temp=0;      
  14.    for(a=0;a<strlen(n);a++)      
  15.     {      
  16.      if(n[a]<=57&&n[a]>=48)      
  17.       temp=temp*10+n[a]-48;      
  18.      else if(n[a]=='N'||n[a]=='E'||n[a]=='W'||n[a]=='S')      
  19.       {      
  20.        switch(n[a])      
  21.         {      
  22.          case 'N':{      
  23.                    if(n[a+1]=='E')      
  24.                     {      
  25.                     a++;      
  26.                     up=up+sqrt(temp*temp/2.0);      
  27.                     right=right+sqrt(temp*temp/2.0);      
  28.                     }      
  29.                    else if(n[a+1]=='W')      
  30.                     {      
  31.                     a++;      
  32.                     up=up+sqrt(temp*temp/2.0);      
  33.                     right=right-sqrt(temp*temp/2.0);      
  34.                     }      
  35.                    else     
  36.                     {      
  37.                     up=up+temp;      
  38.                     }        
  39.                    temp=0;      
  40.                    break;      
  41.                    }      
  42.          case 'E':{      
  43.                    right=right+temp;      
  44.                    temp=0;      
  45.                    break;      
  46.                    }      
  47.          case 'W':{      
  48.                    right=right-temp;      
  49.                    temp=0;      
  50.                    break;      
  51.                    }      
  52.          case 'S':{      
  53.                    if(n[a+1]=='E')      
  54.                     {      
  55.                     a++;      
  56.                     up=up-sqrt(temp*temp/2.0);      
  57.                     right=right+sqrt(temp*temp/2.0);      
  58.                     }      
  59.                    else if(n[a+1]=='W')      
  60.                     {      
  61.                     a++;      
  62.                     up=up-sqrt(temp*temp/2.0);      
  63.                     right=right-sqrt(temp*temp/2.0);      
  64.                     }      
  65.                    else     
  66.                     {      
  67.                     up=up-temp;      
  68.                     }        
  69.                    temp=0;      
  70.                    break;      
  71.                   }      
  72.         }      
  73.       }       
  74.     }      
  75.     if(right-0==0) right=0;      
  76.     if(up-0==0) up=0;      
  77.     printf("Map #%d\n",time);      
  78.     printf("The treasure is located at (%.3f,%.3lf).\n",right,up);      
  79.     printf("The distance to the treasure is %.3f.\n",sqrt(right*right+up*up));      
  80.     time++;      
  81.   }      
  82.  return 0;      

台長: 來源不明
人氣(671) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 10110 10110 - Light, more light
此分類上一篇:ACM 576 Haiku Review

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文