• 締切済み

c言語初心者なんですけど

至急プログラムを組まなきゃいけないので質問させてもらいます。 c言語(環境的にcしか使えない)を用いて、とあるファイルから 列の計算をしたいのですが、どのようにくんだらいいのでしょうか!? とあるファイルとは 1 2 2 3 3 4 4 5 6 6 7 8 . . . というような二列複数行のファイルです。 行いたい作業は1列目で合計を出し、2列目で合計をだして最後に一列目一行と二列目一行をかけたものを最後の行まで足し合わせたものを作りたいのですが、1列目や2列目の合計の計算方法からしてわかりません。 わかる人お願いします。

みんなの回答

回答No.6

1列目をiti、 二列目をni。 do~while文でループ。 中の処理は、 int iti=0,ni=0; int n=0,m=0; int i=0,j=0; long goukei=0; do{ printf("一列目の数字を入力してください"); scanf("%d",&n); iti+=n; printf("まだ足す:1\n2列目:2"); scanf("%d",&i); }while(i!=2); do{ printf("二列目の数字を入力してください"); scanf("%d",&m); ni+=m; printf("まだ足す:1\n終了:2"); scanf("%d",&j); }while(j!=2); goukei=iti*ni; printf("一列目と二列目をかけた数は%dです。",goukei); >最後に一列目一行と二列目一行をかけたものを最後の行まで足し合わせたもの がイマイチわからんので、 とりあえずやってみてください。

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

>行いたい作業は1列目で合計を出し、2列目で合計をだして最後に一列目一行と二列目一行をかけたものを最後の行まで足し合わせたものを作りたい >1列目や2列目の合計の計算方法からしてわかりません。 アスキーデータファイルからの読み込みは scanf() または fscanf() を使います。 読み込みは書式フォーマットにしたがって指定変数に読み込まれますので、その読み込んだ値を加算し続ければ、合計値を求めることができます。 平均値は、読み込んだデータ数がわからなければ求めることはできないので、読み込む毎に1つカウントを増やします。ファイルをすべて読み終えたカウント数で合計値を割れば平均がでます。 プログラムは、scanf()でメモリアドレスを指定しないと値を格納できませんので &を変数の前に付けてアドレスを指定します。これが最初の難所です。 まあ、後はいろいろありますが、まずはプログラムを動かしてから、もう一度ソースを見て考えてみてください。 回答例は、UNIX的な使い方でリダイレクトを使います。 データファイルが仮に data.txt であったとすると ○○○.exe < data.txt として実行します。 なお、リダイレクトについては、ググってください。 /* リダイレクトを使う ○○○.exe < data.txt また Linuxなどは ./a.out < data.txt */ #include <stdio.h> int main(void){ int a, b, count=0; int sum_a, sum_b, sum_ab; sum_a = sum_b = sum_ab = 0; fscanf(stdin, "%d %d", &a, &b); //変数a と b に値を読み込む while(!feof(stdin)){ //ファイルが終わりでないか? sum_a += a; //1列目で合計 sum_b += b; //2列目で合計 sum_ab += a * b; //1列目と2列目を掛けたものの合計 count++; //カウントする fscanf(stdin, "%d %d", &a, &b); //変数a と b に値を読み込む } printf("count= %d\n", count); printf("Σa= %d, 平均a= %.3f\n", sum_a, (float)sum_a/count); printf("Σb= %d, 平均b= %.3f\n", sum_b, (float)sum_b/count); printf("Σ(a*b)= %d, 平均(a*b)= %.3f\n", sum_ab, (float)sum_ab/count); return 0; }

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

一列なら、ファイルから読み込んで計算できるということなので、そのプログラムを示すと良いかもしれません。 一列でも二列でもほとんど変わりませんから。 どんな方法でファイルから読み込みしているかがちょっと気になるくらいで。

全文を見る
すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.3

>Excelでは行が足りないため、作業ができません。 とのことですが、Excel 2007という古いバージョンでも、 最大1048576行のデータを処理できます。 質問者さんが扱いたいファイルの行数は、いくつですか?

全文を見る
すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

ところで、環境的に Excel は使えませんか? 使えるんなら、わざわざ C でプログラム書かなくてもすみますね。

mirukukku
質問者

補足

Excelでは行が足りないため、作業ができません。

全文を見る
すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

質問者さんの、C言語の習熟度を教えてください。 また、そのプログラムは、どうしても質問者さんご自身が書かなくてはならないのでしょうか? 職場あるいは学校(またはその他の環境)の、身近な人にお願いすることはできないのでしょうか?

mirukukku
質問者

補足

C言語の習熟度は一列だけのファイルならば合計値等の計算はできます。ただ、二列になるととたんにわからなくなってしまいます。 c言語ができる方が身近にいないため、教えてもらうこともできない状態です。 いいサイトや参考書等があれば、そちらも教えてもらいたいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語初心者過ぎてわからないです

    エクセルのCSVデータなんですが 1行目のデータを 1行目から5行目まで同じデータ 6行目のデータを 6行目から10行目まで同じデータ 10行目のデータを 10行目から15行目まで同じデータ 以上のような作業を繰り返し元のCSVのデータをすべて5行(つまりデータの量は5倍)にしたいのですが C言語でこのような作業を行うファイルをつくるにはC言語ではどのようなプログラムになるでしょうか

  • 卒業研究でプログラムを組むことになりましたが、C++初心者のため戸惑っ

    卒業研究でプログラムを組むことになりましたが、C++初心者のため戸惑っています。 現在困っていることは、CSVファイルのデータ(縦一列)を1行目を読み込み計算、2行目を読み込み計算、3行目を読み込み計算…といった作業をデータの数だけ繰り返し、最終的にCSVファイルに出力するプログラムを組みたいと考えています。 私も引き続きC++を勉強しながら回答お待ちしています。 どうぞよろしくお願いします。

  • C言語のアルゴリズムについて

    C言語で「標準入力から英語の文章を読み込んで,文字列Ilmorが出現した行をその行番号とともに表示するプログラムを作りなさい.」とプログラムを作りたいのですが、文字列を発見するところまでは分かるのですが、その行どうやって表示すればいいのか分かりません。また、文章を読み込むのもすごくややこしく最後にエンターを二回押すなどの制限があります。(scanf) 参考になるプログラムを書いていただける方いませんか?できればC言語のアルゴリズムについて詳しく書いた本やサイトがあれば教えていただきたいです。 レベルは超入門的な本を2,3冊読んだ程度です。アルゴリズムなどにはまったく触れてなかったし、ライブラリー関数も少ししか載ってなかったので関数の本もあれば教えていただきたいです。

  • c言語の課題について

    (1)3行3列の行列の和を求めて表示するプログラムを作成しなさい。 (行列の要素はあとで適当な値を打ち込むこととする) (2)2行3列の行列と3行2列の行列の積を求めて表示するプログラムを作成しなさい。 (行列の要素はあとで適当な値を打ち込むこととする) プログラム言語を最近習いはじめたんで、あんまり難しいことは しないと思うんですが、全くわからなくて苦労しています。 わかる人がいたら至急教えてください。お願いします。

  • C言語でのファイル読み込み

    C言語でのファイル読み込みに関してお尋ねしたいことがございます。 たとえば、「test1.dat」というような数字が複数行記載されたデータファイルがあり、 それを配列に読み込んで作業をしたのちに、 同じ作業を「test2.dat」「test3.dat」・・・というようなデータファイル (これらも、test1とは異なる数字が複数行記載されたデータファイル)にも 施したい場合、どのようなループ処理をすればよいのでしょうか? perlの場合ですと比較的簡単にできたのですが、 Cの場合はどうしたらいいかわかりません。 どうぞよろしくお願いいたします。

  • 初心者のC言語

    私は、昨日からC言語を勉強し始めました。 大学の教授から2週間以内に50行程度のCプログラムを書けるようになって こいと指示を受けましたが、C言語をやったことが無いので、どのような勉強を すればいいのか分かりません。 初心者にも分かりやすいC言語のテキストやサイトを知っている方がいれば 教えてください。 お願いします。

  • C言語についてです。

    C言語についてです。 次のようなテキストファイルがあるとします。 ------------------------------------- Sample.txt ------------------------------------- 項目一  項目二  項目三 1      2     1 2      1     3 3      3     1 ------------------------------------- 一行目が文字列、2行目以降が整数というファイルです。 このファイルを読み込み、1行目の文字列を表示し、2行目以降を読み込んでn行3列の配列に入れ更に表示したいのですが、どのように書けばいいのでしょうか? 宜しくお願いします。

  • C言語です。

    C言語です。 2次元配列を用いて、2つの2行3列の行列 A=[ 1 2 3 4 5 6 ] B=[ 6 3 4 5 1 2 ] の和を表示するプログラムを教えてください。 コンパイル結果 7 5 7 9 6 8

  • C言語

    課題なんですが、C言語で 「文字列と正数nをキーボードから入力して、1行n文字で改行するプログラム」 をつくりたいのですが、わかりません。どうすればよいのですか?

  • C言語・ファイルから読み込んだものを使用する

    現在C言語のある課題に取り組んでいるのですが、 ファイルから単語をいくつか読み込む、という作業がうまくいきません。 ファイルから読み込んだ単語は「s[i]」という文字列構造体にひとつずつ入れていくのですが、ファイルに入れた単語が10個に対し、 その作成しようとしているプログラムは1000個まで読み込めるものにしているため、printfで読み込んだ単語を画面に出力すると 11個目以降が訳のわからない文字になってしまいます。 どうやったら、scanfを読み込むファイルの最後でとめることができるか、誰か教えてください!