質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Q&A

解決済

1回答

2914閲覧

プログラムの実行時に「標準入力」欄にボートの名前(アルファベット1文字:A, B, C, ...)を入力して実行すると,そのボートの貸出時間の総計を算出するプログラムを作成してください。

moka_mokakaka

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

0グッド

0クリップ

投稿2020/07/21 08:41

編集2020/07/21 09:34

プログラムの実行時に「標準入力」欄にボートの名前(アルファベット1文字:A, B, C, ...)を入力して実行すると,そのボートの貸出時間の総計を算出するプログラムを作成してください。

仕様は下記になります。

**・**ボートは15隻所有している(A,B,C,…)
**・**営業時間は09:00~18:00である
**・**ボートの貸し出し・返却時に以下を記録している
―ボート名、貸出/返却、時刻(10分単位)

よろしくお願いいたします。

追記

1日の全体の総計を算出できるプログラムまでは作成できたのですが、ボートごとの総計を算出するプログラムが作成できません。下記に作成できたプログラムは載せておきます。

#include <stdio.h> #define LINESIZE 256 int main(int argc, char *argv[]) { FILE *fp; char line[LINESIZE]; char b, io; int h, m, tm; if ((fp=fopen(argv[1],"r"))== NULL){ printf("Can't open the file.\n"); return 1; } tm=0; for(; fgets(line, LINESIZE, fp)!=NULL;){ sscanf(line,"%c %c %d:%d",&b,&io,&h,&m); switch(io){ case'I': tm += 60*h+m; break; case'O': tm -= 60*h+m; break; } } printf("%d:%02d\n",tm/60,tm%60); fclose(fp); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/07/21 08:42

どこまで作成してみましたか?
moka_mokakaka

2020/07/21 08:45

1日の全体の総計を算出できるプログラムまでは作成できたのですが、ボートごとの総計を算出するプログラムが作成できません。下記に作成できたプログラムは載せておきます。 #include <stdio.h> #define LINESIZE 256 int main(int argc, char *argv[]) { FILE *fp; char line[LINESIZE]; char b, io; int h, m, tm; if ((fp=fopen(argv[1],"r"))== NULL){ printf("Can't open the file.\n"); return 1; } tm=0; for(; fgets(line, LINESIZE, fp)!=NULL;){ sscanf(line,"%c %c %d:%d",&b,&io,&h,&m); switch(io){ case'I': tm += 60*h+m; break; case'O': tm -= 60*h+m; break; } } printf("%d:%02d\n",tm/60,tm%60); fclose(fp); return 0; }
bboydaisuke

2020/07/21 09:30

ここ(質問への追記・修正の依頼)に書いてもデフォルト非表示だから、あまり見てもらえませんよ。
bboydaisuke

2020/07/21 09:42

インデントの重要性について勉強しておくとよいと思います。
guest

回答1

0

ベストアンサー

以下は基本的な考えです。あとはボート毎に変数を用意してやればよいです。

C++

1貸出時間 = 0; 2返却時刻 = 0; 3for( 時刻, 時刻の遅い順に){ 4 if( 返却){ 5 返却時刻 = 時刻; 6 } 7 else if( 貸出){ 8 貸出時間 += 返却時刻 - 時刻; 9 } 10}

投稿2020/07/21 11:25

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問