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

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

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

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

Q&A

0回答

365閲覧

c言語 データを数えかた

Giruba

総合スコア5

C

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

0グッド

0クリップ

投稿2021/05/17 05:45

編集2021/05/17 06:19

前提・実現したいこと

1000行10列の実数値が入ったファイルを読み込み、一列ごとの正のデータがいくつあるか個数を計算してコンソール画面に表示する

もしわかる方いらっしゃいましたら、教えていただきたいです。

発生している問題・エラーメッセージ

ファイルを読み込むコードはかけたが、列ごとに正の数を数えてコンソール画面に表示させる方法がわかりません。

該当のソースコード

C

1 2#include<stdio.h> 3 4int main(){ 5 int i,j; 6 float x[1000][10]; 7 FILE *fp; 8 9 fp=fopen("input6_3.txt","r"); 10 for(i=0;i<1000;i++){ 11 for(j=0;j<10;j++){ 12 fscanf(fp,"%f",&x[i][j]); 13 } 14 } 15 fclose(fp); 16 17 return 0; 18}

試したこと

Googleで調べたりYahoo知恵袋を使って似たような問題を探して書き換えてみたりしました。

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

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

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

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

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

K_3578

2021/05/17 05:47

teratailではソースコードはMarkDownでコードブロック化してご提示ください。 ```言語名←CならCと置き換える ソースコード ``` って感じです
fiveHundred

2021/05/17 05:48

普通にprintf()を使えばよいですが、違いますか?
fiveHundred

2021/05/17 05:52

ああ、列ごとの計算が分からないのか。 でも、「各列の変数(=配列)を用意(値は0)して、正の値であれば対象を+1する」で済むと思います。
Giruba

2021/05/17 05:56

ifを使いますか?
fiveHundred

2021/05/17 05:58

> ifを使いますか? 使います
K_3578

2021/05/17 06:00

因みにコードブロックの言語名を書くのは ```C言語 ソース ``` ではなく、 ```C ソース ``` となります。 Cだし大学の課題か何かでしょうかね・・・。
Giruba

2021/05/17 06:17

dodox86さんとfiveHundredさんのアドバイスを元にかなり解答の近いところまでできたのですが、あと一歩のところでわかりません。 #include<stdio.h> int main(){ int i,j,y[10]; float x[1000][10]; FILE *fp; fp=fopen("input6_3.txt","r"); for(i=0;i<1000;i++){ for(j=0;j<10;j++){ fscanf(fp,"%f",&x[i][j]); y[j]=0; if(x[i][j]>0){ y[j]=y[j]+1; } } } printf("%d列目の正の数は%d個",j,y[j]); fclose(fp); return 0; } こうしてみたのですが、 10行目の正の数しか表示されません。 アドバイスいただきたいです。
Giruba

2021/05/17 06:18

K_3578さん、教えていただきありがとうございます。 訂正しておきます。
fiveHundred

2021/05/17 06:27

「y[j]=0;」をループの中に書いてしまうと、毎回0にリセットされるので値は増えません。 また、printf()はこのままだと1回しか呼ばれないので、各列ごとに表示させる必要があります。 いずれも、個別のループを作ったほうがやりやすいです。 (ちなみにteratailでは課題の質問は非推奨なので、もしそうであれば先生に聞くのがよろしいかと思います)
Giruba

2021/05/17 06:45

epistemeさん 申し訳ございません、私の理解力では理解できない部分がありました。 fiveHundredさん 無事解決することができました。 そうだったのですね、大学の課題ですのでこれ以降は質問しないようにします。 ありがとうございました。
K_3578

2021/05/17 06:48

解決されたのなら自己解決でいいのでクローズを。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問