解決済み

解けません!

  • 困ってます
  • 質問No.4683141
  • 閲覧数35
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 25% (16/63)

http://www.pref.fukushima.jp/pc-concours/2008/03/pdf/2007honsen.pdf
この問題03の宅配料金の問題が解けません!!
書かれている入力例と出力例はあっているのですが、
学校のジャッジシステムが受けつけてくれません。
どなたか僕のプログラムの不備を見つけて下さい。
お願いします。

#include <stdio.h>
int ryoukin(int x, int y, int h, int w)
{
int i,t,c;
i = x + y + h;

if (i <= 60)
t = 600;
else if (i <= 80)
t = 800;
else if (i <= 100)
t = 1000;
else if (i <= 120)
t = 1200;
else if (i <= 140)
t = 1400;
else if (i <= 160)
t = 1600;
else
t = 0;

if (w <= 2)
c = 600;
else if (w <= 5)
c = 800;
else if (w <= 10)
c = 1000;
else if (w <= 15)
c = 1200;
else if (w <= 20)
c = 1400;
else if (w <= 25)
c = 1600;
else
c = 0;

if (t == 0)
return 0;
else if (c == 0)
return 0;
else if (t < c)
return c;
else
return t;

}

int main(void) {

int x,y,h,w,n,i,sum;

sum = 0;
while(n != 0){
scanf("%d",&n);
if(n != 0){
for(i = 0; i < n; i++){
scanf("%d %d %d %d", &x, &y, &h, &w);
sum = sum + ryoukin(x,y,h,w);
}
printf("%d\n",sum);
sum = 0;
}
}

return (0);
}

質問者が選んだベストアンサー

  • 回答No.1

ベストアンサー率 27% (292/1049)

とりあえずざっと見た感じで。
・main()のif(n != 0)はなくても動く
・「荷物の個数 n は1以上1000000以下とし」のチェックがない
 (↑に関連して、intのサイズは? intはシステム依存だから2byteなら65535までしか使用できない)
・「入力される縦の長さ(cm)x、横の長さ(cm)y、高
さ(cm)h、重さ(kg) w はそれぞれ1以上200以下の整数とします。」
 のチェックがない。

この問題って、超過時の扱いが何もないけど、どうするのが正しいのやら?
(少なくとも、超過しているから0円というのはないはず)
補足コメント
nyandafull

お礼率 25% (16/63)

http://borealis.u-aizu.ac.jp/pck/trial2008/9505/index.html
のサイトを参考に0円にしてみました。
先生に「 n は1以上1000000以下、入力される縦の長さ(cm)x、横の長さ(cm)y、高さ(cm)h、重さ(kg) w はそれぞれ1以上200以下」はどういうことかとメールしたところ、その値が入力されると仮定していいということでした。
たぶんintの65535までしか使用できないというのが可能性として考えられます。
作り直してみます。
投稿日時 - 2009-02-02 17:34:31
お礼コメント
nyandafull

お礼率 25% (16/63)

解けました!!!!!!!!!
mainのi,nをlongで宣言したら通りました!
ありがとうございました。
投稿日時 - 2009-02-02 18:00:48
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ