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

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

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

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

Q&A

1回答

5722閲覧

作成したプログラムに条件を追加したい

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

0グッド

1クリップ

投稿2021/07/04 12:09

以前ボートの貸し出し状況を集計するプログラムを作成した。その日に貸し出した全ボートの貸出時間の総計を算出し、その結果を出力するプログラムである。
このプログラムに貸出のあった各ボートごとの貸出時間の総計も加えたい。
ボート屋はボートを5隻所有しているとし,各ボート名は大文字アルファベット1文字で「A」,「B」,「C」,「D」,「E」であるとする。
また、「O」:貸出、「I」:返却である。
データファイルの例として
A O 09:10
C O 09:25
A I 09:50
C I 10:05
D O 10:15
D I 10:55
A O 11:30
C O 12:00
A I 12:45
C I 13:15
D O 13:20
A O 13:30
D I 14:05
A I 14:15
D O 14:55
D I 15:40
の場合、
A 2:30
B 2:30
C 4:10
D 2:50
E 2:20
14:20
と出力したい。

下記プログラムは以前のプログラムに
//各ボートの総計時間を表示
printf( "%c %d:%02d\n",b, tm / 60, tm % 60 );
を追加しており、
この現状のプログラムでは
A 14:20
14:20
と出力されてしまう。
解決方法を教えてください。

C言語

1#include <stdio.h> 2#include <stdlib.h> 3#define LINESIZE (256) 4 5int main( int argc, char* argv[] ) 6 7{ 8 FILE* fp = NULL; 9 char line[LINESIZE]; 10 char b, io; 11 int h, m, tm; 12 13 14// ファイルオープン 15 if ( (fp= fopen ( argv[1], "r" ) ) == NULL ) { 16 17 printf( "Can't open the file.\n" ); 18 19 return 1; 20 } 21 22// ファイルからデータを読み込み 23 tm = 0; 24 25 while ( fgets( line, LINESIZE, fp ) != NULL ) { 26 27 sscanf(line, "%c %c %d:%d", &b, &io, &h, &m); 28 29// ボートの貸出時間を計算する 30 31 switch ( io ) { 32 33 case 'I': tm += 60 * h + m; break; 34 35 case 'O': tm -= 60 * h + m; break; 36 37 default: break; 38 } 39 } 40 41 fclose( fp ); 42 43//各ボートの総計時間を表示 44 printf( "%c %d:%02d\n",b, tm / 60, tm % 60 ); 45 46// 貸出時間の総計を表示 47 printf( "%d:%02d\n", tm / 60, tm % 60 ); 48 49 return 0; 50 51}

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

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

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

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

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

BeatStar

2021/07/04 12:16

課題は自分でやりましょう。 他人が課題をするのは違いますよ。 努力すらしたくないなら白紙で出しましょう。 なんで自分は努力せずに他人がやるのが当たり前なのでしょうか。 プログラマやSEは『考える事』と『調べる事』が仕事です。
pepperleaf

2021/07/04 12:26

「A」,「B」,「C」,「D」,「E」での分類が全くされてませんね。 まず、分類をどうするか考えてみましょう。 まずは、それから。
episteme

2021/07/04 12:47

半年前の問題をまだやってたか。
guest

回答1

0

C

1//各ボートの総計時間を表示 2 printf( "%c %d:%02d\n",b, tm / 60, tm % 60 );

この一行で全ボートの出力が得られるわけないっしょ?
てか、ボートが5つあるんだから、各ボートごとに計算せんと。

って、https://teratail.com/questions/313033 で言わなかったっけ?

投稿2021/07/04 12:41

編集2021/07/05 01:34
episteme

総合スコア16614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問