-3

課題3:アクメ旅行代理店

問題文

Acme Cryptography Divisionの世界で最も困難な暗号化の問題をすべて解決することに成功した後、あなたは世界を見たいと決心しました。これが、AcmeTravelAgencyで働くための転勤をリクエストした理由です。

Acme Travel Agencyは航空会社の旅行を専門としており、品質保証の経験により、さまざまなフライトプランの品質を分析するように割り当てられています。フライトプランは、Nの乗り継ぎ便で構成されています。最後のフライトを除く各フライトの後に、乗客が次のフライトを待たなければならない乗り継ぎ期間があります。目的地の時刻(タイムゾーンの変更を考慮せずに)と、飛行計画の品質を計算する必要があります。

乗客が飛行している合計時間が乗り継ぎ時間の少なくとも2倍である場合、飛行計画は効率的であると見なされます。そうでなければ、飛行計画は非効率的であると見なされます。

目的地の時間を計算するには、合計旅行時間(すべてのフライトの乗り継ぎ時間の合計)を出発時間に追加し、24時間形式で対応する時間を計算します。フライトプランは一晩続く場合もあれば、1日を超える場合もあることに注意してください。たとえば、フライトプランが09:30に出発し、2000分間続いた場合(これは長いフライトプランです!)、目的地の時刻は翌日の18:50になります。そのため、宛先時間として18:50を報告します。

入力仕様

入力は、単一の整数N(1

出力仕様

プログラムは、到着時間とフライトの品質を出力する必要があります。これは、次のようにフォーマットする必要があります。

この飛行計画はSであり、HH:MMで終了します。

ここで、Sは文字列です。問題ステートメントで定義されているフライトの品質に応じて、「効率的」または「非効率的」のいずれかになります。HH:MMは、問題ステートメントで定義されている宛先の24時間制です。

サンプルI/O

入力:

1 7 45 75

出力:

この飛行計画は効率的で、09:00に終了します。

入力:

2 13 30 75180 85

出力:

この飛行計画は非効率的で、19:10に終了します。

入力:

3 12 27500300600400300

出力:

この飛行計画は効率的で、23:27に終了します。

成果物

提出する場合は、ソースコードを含む単一のファイルをwebcourses2に提出してください。採点ガイドラインについては、「採点ルーブリック」というラベルの付いたセクションを参照してください。

この課題は、2013年2月21日午後11時59分にwebcourses2で予定されています。

ヒントとして、1440(1日の分数)を法として、1日の分を追跡することで時間を処理するのが最も簡単です。次に、時刻を出力する場合、時間はその日の分を60で割ったものであり、分は60を法とする日の分です。

ルーブリックの採点

このプログラムは20点満点です。

コーディングスタイル(9)ポイント(1)プログラムに完全なヘッダーコメント(名前、日付、簡単な要約)が含まれている(1)プログラムに意味のある内部コメントが含まれている(1)プログラムが空白の合理的な使用を維持している(1)プログラムが明確で説明的な変数を使用している名前(1)プログラムはすべての値を整数として読み込みます(1)プログラムにはN(またはNの関数)のループが含まれています(1)プログラムはユーザーに入力を求めません(1)プログラムにはフライトを比較するためのifステートメントが含まれています時間とレイオーバー時間。(1)プログラムはprintfパーセントコードを正しく使用して時刻を出力します(%02d)

出力の正確さ(11)ポイント(部分的なクレジットが可能)(10)5つのテストケース、(2)ケースごとのポイント(1)プログラムは正しい効率評価(効率的、非効率的)を出力します(1)プログラムは正しい宛先時間を出力しますフォーマットに関係なく(1)テキストは正確に指定された形式です。

私のコード:

// Included libraries
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

// Integer declaration
int N, hours, mins, i, flight, layover, finflight, flighttot=0, layovertot=0;

// N, hours, mins input scan
scanf("%d", &N);
scanf("%d %d", &hours, &mins);

// N loop, flight and layover input
for(i=0; i<N-1; i++) {
scanf("%d %d", &flight, &layover);
flighttot += flight;
layovertot += layover;
}

// Final flight input scan
scanf("%d", &finflight);
flighttot += finflight;

// Equations
mins += (hours*60)+flighttot+layovertot;
hours == mins/60;
hours %= 24;
mins %= 60;

// Output
if(flighttot >= 2*layovertot)
printf("The flight plan is efficient, and will conclude at %d:%d",&hours, &mins);

else
printf("The flight plan is inefficient, and will conclude at %d:%d",&hours, &mins);

return 0;
}

私のプログラムを修正する助けがあれば大歓迎です!

4

1 に答える 1

2
hours == mins/60;

これは間違っています(あなたのプログラムでは)。

==は等式演算子ですが、代入演算子を探しています=

hours = mins/60;

それで:

printf("The flight plan is efficient, and will conclude at %d:%d",&hours, &mins)

これは間違っています。&ここで演算子を使用する意味はありません。必要なのは次のとおりです。

printf("The flight plan is efficient, and will conclude at %d:%d",hours, mins)

printf(他の呼び出しについても同じです)。

コンパイラで警告を有効にして、すべての警告を修正してください。

于 2013-02-21T22:38:32.103 に答える