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

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

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

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

Q&A

解決済

2回答

2116閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

0グッド

0クリップ

投稿2021/05/23 22:51

以下のようにプログラムを作成しました。現状のプログラムは
各行に3個の整数値が記述さてているテキストファイルがあり、このテキストファイルをコマンドライン入力すると各行の3個のデータの合計値が1行に1個ずつ出力されます。
(例)
ファイル名 dat_01.txt
10 20 30
5 15 3
21 30 40
7 10 11
550 100 200

出力
60
23
91
28
850

この現状のプログラムに”最後に合計値の最大値を出力する”条件を加えたいと考えています。
出力
60
23
91
28
850
850
解決方法を教えていただけたらと思います。```c言語
コード

#define SIZE 256 int main(int argc, char *argv[]) { FILE *fp; int a, b, c, sum; if ((fp = fopen(argv[1], "r")) == NULL) { printf("Can't open the file.\n"); return 1; } while (fscanf(fp, "%d %d %d", &a, &b ,&c) == 3) { sum = a + b + c; printf("%d\n", sum); } fclose(fp); return 0; }

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

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

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

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

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

guest

回答2

0

ベストアンサー

C

1#include <stdio.h> 2#include <stdbool.h> 3 4int main(int argc, char* argv[]) { 5 FILE* fp; 6 int a, b, c, max; 7 bool at_first = true; 8 9 if ((fp = fopen("dat_01.txt", "r")) == NULL) { 10 printf("Can't open the file.\n"); 11 return 1; 12 } 13 14 while (fscanf(fp, "%d %d %d", &a, &b, &c) == 3) { 15 int sum = a + b + c; 16 printf("%d\n", sum); 17 if ( at_first ) { // 初回 18 at_first = false; 19 max = sum; 20 } else { // 2回目以降 21 // 最大値の更新 22 if ( max < sum ) { 23 max = sum; 24 } 25 } 26 } 27 fclose(fp); 28 printf("max = %d\n", max); 29 return 0; 30 31}

投稿2021/05/23 23:26

episteme

総合スコア16614

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

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

退会済みユーザー

退会済みユーザー

2021/05/24 00:41

ありがとうございます。 コンパイラは成功しましたとなりますが、実行時エラーが発生したと表示されCan't open the file.となります。 int a, b, c, max; を  int a, b, c, max, sum;に変更して行ってみましたが、 コンパイラ時に警告が出て、やはりCan't open the file.となります。 お手数おかけしますが、引き続き解決方法を教えていただけたらと思います。
episteme

2021/05/24 01:05

僕のコードではファイル名: dat_01.txt 決め打ちになってます。 argv[1] に取り替え、適切なファイル名をコマンドラインで指定してください。
guest

0

まず、その最大値入れる変数を定義しておきます。
そして、if文で、その変数に最大値を入れるようにしましょう

投稿2021/05/23 22:59

y_waiwai

総合スコア87800

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

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

退会済みユーザー

退会済みユーザー

2021/05/23 23:15

ありがとうございます。 初歩的な質問ですみません。仮に最大値を入れる変数をmaxと定義したとし、その後のif文の作成方法で行き詰まっています。例として5行のファイルを出しましたが、行数が決まっていません。この場合のif文の作成方法がわかりません。 引き続きお願いいたします。
y_waiwai

2021/05/23 23:30

最初にそのmaxに0をいれといて、 データの合計値を出したときに、その値とmaxを比較して、そいつが大きければ、maxにその値を代入すればいいのです
fana

2021/05/24 01:01

「今から何個かの数値を言いますから,その最大値を覚えてください」とか言われた場合,自分ならどうするのか? とか考えてみればよい. この例でも個数は不明だけども,そのことで特段困るようなことは無いハズ.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問