• ベストアンサー

配列の使い方分かりません

//整数型の配列を10個準備する。 //ループ文を用いてキーボードから値を10個入力する。(for文を用いる) //入力した値を出力する。 //ループ文を用いて入力値の合計と平均値を求める。(while文を用いる) 以上の課題が出されました。 配列の使い方が分からないので上手くできません。 説明付だとうれしいです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#119918
noname#119918
回答No.3

stdafx.hは不明でしたので無視します。 関数に分割していた機能をmain関数に集約すると下記の通りです。 (main関数に詰め込み過ぎな気もしますが。) #include <stdio.h> #define SIZE 10 int main(void) { int sum; int array[SIZE]; int i; for(i=0 ; i<SIZE ; i++) { printf("input number > "); scanf("%d" , &array[i]); } for(i=0 ; i<SIZE ; i++) { printf("%d " , array[i]); } printf("\n"); i = 0; sum = 0; while(i < SIZE) { sum += array[i]; i++; } printf("sum : %d\n" , sum); printf("ave : %d\n" , sum / SIZE); return 0; }

iw-tomoya
質問者

お礼

ありがとうございます!! こんな感じになるんですね♪ ガッコでは配列を int a[10] 見たいな感じに置いてるんですが、これはどう使えばいいんでしょう? #define SIZE 10 を使わない場合はどうなりますか? 次々に申し訳ないです。。。

その他の回答 (3)

noname#119918
noname#119918
回答No.4

>ガッコでは配列を >int a[10] >見たいな感じに置いてるんですが、これはどう使えばいいんでしょう? >#define SIZE 10 >を使わない場合はどうなりますか? #define SIZE 10 はマクロですから、単に文中のSIZEを10に置き換えるだけです。 マクロを使いたくないならば、文中のSIZEを全て10に書き換えれば 同じ動作をします。 ただ、例えば配列のサイズを10から5に変更したくなった場合、 文中の10を全て5に書き換えなければならなくなります。 その手間の軽減、及び書き換え忘れによるバグの回避のために、 SIZEというマクロを使っています。 マクロを使っていれば、単に #define SIZE 5 に書き換えれば良いわけです。

iw-tomoya
質問者

お礼

なるほど!これは便利ですね♪ いい学習になりました。今後こうしていきたいと思います どうもありがとうございました↑↑

noname#119918
noname#119918
回答No.2

#include <stdio.h> #define SIZE 10 // 整数を入力し、配列に格納 void input_num(int* array , int size) { int i; for(i=0 ; i<size ; i++) { printf("input number > "); scanf("%d" , &array[i]); } return; } // 配列に格納された値を出力 void output_num(int* array , int size) { int i; for(i=0 ; i<size ; i++) { printf("%d " , array[i]); } printf("\n"); return; } // 配列に格納された値の合計と平均を計算 void sum_ave(int* array , int size) { int sum = 0; int i = 0; while(i < size) // for文の方が自然ですが… { sum += array[i]; i++; } printf("sum : %d\n" , sum); printf("ave : %d\n" , sum / size); return; } int main(void) { int array[SIZE]; input_num(array , SIZE); output_num(array , SIZE); sum_ave(array , SIZE); return 0; }

iw-tomoya
質問者

お礼

具体例的に回答ありがとうございます。 #include "stdafx.h" #include <stdio.h> int main(void) { int i,a,sum=0,ave; for(i=1;i<=10;i++){ printf("数値を入力:"); scanf("%d",&a); sum=sum+a; ave=sum/10; } printf("\n合計:%d\n平均:%d\n\n",sum,ave); return 0; } 自分でこのプログラムを作ってます 配列を使ってないのでアウトなんですが。。。 こういった感じにシンプルにまとまりますかね?

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

言語はCでいいですかね? して、教えるのは「配列について」だけでよいですよね? 配列は変数が連なっているものというイメージでいいです。 たとえば宣言で int hoge; でint型のhogeという変数が一つできます。 int hoge[10]; でint型のhoge[0]~hoge[9]の10個の変数ができます。 ※hoge[10]には値は入れられません。 単純にそれだけの話です。 変数を値を入れることのできる箱という認識にして [ ]であらわすとしたら int hoge; で作った場合 hoge [ ] ができて int hoge[3]; で作った場合 hoge[0] hoge[1] hoge[2] [ ] [ ] [ ] ができると思えばいいです。

iw-tomoya
質問者

お礼

早速回答ありがとうございます。言語はCです。 その基本的なことは大体分かっているつもりなんですが。。。 それをどうプログラムに利用したらいいのかがイマイチです 汗 講義でも具体例がでないのでぱっとしなくて。。。

関連するQ&A

  • プログラミング for文

    for文を使い以下のように出力させたいのですが、 うまくいかないので教えていただけないでしょうか? 入力する整数の数:n 1個目の整数は:(1) 2個目の整数は:(2)  :  : n個目の整数は:m すべての合計は:  平均は:  n、(1)、(2)、m、はキーボード入力です。 わかる方よろしくお願いします。

  • C言語初心者です。

    C言語初めて壁にぶち当たりました。下の問題がとけません。よろしくお願いします。 標準入力から整数値を4個,int型の配列へ読み込んで,これかの値を大きい順に配列上で並び替え,出力するプログラムを作成してください。ただし,for文の2重ループを必ず使用してください。

  • 入力した数字の分を配列0~3に・・・

    whileで無限ループを作ってscanfで値を入力していくのですが 入力を例えば 0 1 2 2 3(breakする) と入力した場合に その際に a[0] = 1;(0が1個入力されたので1) a[1] = 1; a[2] = 2; 整数で0より小さくて3より大きい場合は無限ループからbreakで脱出するようなプログラムを作りたいと思っているのですが for文でa[i]でやってカウントしていくのかな・・・?とは思っているのですが 中々うまくいきません 関数、ライブラリ等は使いません。 気になってどうしても手をつけてしまうのですが 1日以上悩んでもどうすべきかわかりません

  • C言語、配列の積

    整数型二次元配列x,yに適当な値をキーボードから入力し、次にそれらの行列の積を計算して二次元配列zに代入し、行列x,y,zの要素を出力せよ。但し、配列の大きさは最初にキーボードから入力しておき、変数宣言においては、配列の大きさを大きめに宣言しておき、キーボードから入力する配列の大きさはその範囲内で入力するようにせよ。 という問題です。よろしくお願いいたします

  • 【JAVA】配列の要素の平均について

    JAVAで質問となります。 以下のプラグラムを教えていただきたいです。 ____________________ n 個の要素で構成される int 型の配列を引数として受け取り,配列内の全要素の平均値を返すメソッドを作成してください. また,コマンドライン入力に整数値を入力すると,作成したメソッドを使用して,入力した整数値の平均値を求め,結果を標準出力に出力するプログラムを作成してください. このプログラムを作成する際は,以下の要件を満たすように作成してください:  【メソッド】 配列内の全要素の平均値を求めるメソッドは,以下の仕様とする: メソッド名:calcAverage 引数:配列 - int 型の配列 戻り値:平均値 - double 型 内容:引数として受け取った配列のすべての要素の平均値を計算する.  【入力】 整数値のデータは,コマンドライン入力に入力する. その際,各整数値は,半角スペースで区切る.  【出力】 コマンドライン入力に1つ以上の整数値が入力された場合は,それらの平均値を出力する. コマンドライン入力に何も入力されなかった場合は,何も出力しない. 平均値の出力は,全体を左詰めで小数点以下2桁まで出力する. 行の先頭には空白を入れず,行の左端から出力する.

  • VBA 配列計算について 配列の入力に配列の使用

    配列に複数のセル値の合計値を設定したいと思っています。 求める合計値は複数あるため、出力も配列となります。 そこで下記のようにプログラムを考えたのですが、全て同じ値の配列として出力されてしまいます。 VBAではC言語のように配列の古い値に足していくことはできないのでしょうか? (sum()は0で初期化) (10個飛ばしのデータの合計値を算出) For i = 0 To 10 For j = 0 To 5 sum(i)= sum(i) + Worksheets(sheetname).Cells(10, 3).Offset(j * 10, 0).Value Next i Next j 出力配列例 全て同じ値になってしまいます・・・ 1.254 1.254 1.254 ・・・ 回避方法もしくはうまい計算方法などありませんでしょうか

  • -1を使う???

     私は今C言語の学習をしています。しかし以下の問いのプログラムがなかなか出来ません・・・。どうか助けてください。お願いしますm(__)m 【問】while文とif文を使う問題 (1)キーボードから各教科のテストの点数を入力し、その合計と平均点を出力しなさい。ただし、入力データの終わりには-1を使うようにして、何科目でも対応できるようにすること。 (2)(1)と同様にキーボードから各教科のテストの点数を入力し、80~100までは優、65~79までは良、50~64までは可、0~49までは不可とし、それぞれの各科目数を出力しなさい。 (3)(1)と同様にキーボードから各教科のテストの点数を入力し、最高点と最低点を出力しなさい。 私は(1)に対してまず、科目数が決められている場合の合計と平均を求めるプログラムを作りました。 そのあと、それを何科目でも対応できるようにfor文を使い書き換えました。 そしてif文をつかって-1が入力されたら、breakとしました。しかしそれではwhile文をまったく使っていないのです・・・。どうしたらいいのでしょう? 何科目にでも対応させるというのは・・・?

  • 配列の問題

    for文を使って2番目に小さい値を出力するようにしたいのですが、どんなプログラムにすればいいでしょうか? 2重ループになりますか? 解る方お願いします。

  • perlのwhile,連想配列についてです。

    perlの連想配列を使い "AP" => "Apple" "BN" => "Banana" "OG" => "Orange" という値を格納します。 そしてこの格納した値をキーボードからの入力で取り出します。 このように表示したいです↓↓ "好きな果物を入力してください[AP/BN/OG]" そして入力を受けるとその果物の値を返し果物の名前を表示します↓↓ "あなたの好きな果物はAppleですね" ここまではできたのですが、この格納した果物以外を入力するとwhileで格納した果物が入力されるまで"3種類から選んでください”というようにループしたいです。 この場合どのように書けばよいのでしょうか。 whileの場合andで書きたい場合はどのように書けばよいのでしょうか。 また入力には<STDIN>を使い引数はchmopで処理すると良いとアドバイスを貰いましたがchompの使い道がよくわかりません。 そちらも説明していただけると幸いです。 わかりにくい質問ですがよろしくお願いします。

    • ベストアンサー
    • Perl
  • Java初歩。ループ問1~6の内5・6

    コンパイルの環境はあります。 『問題は、全て、 「forループ」を使って記述しなければなりません。 そして、 ループは、「forループのみ」と、限定されています。 (1)~(2)は、他にどんなやりかたがあるのか興味がありまして、質問させて頂きました。 (3)からは、ずっと試しているのですが、全くできません…悔しいです。。 (5) 100、-50、200、150、-300を管理している配列を作成し、 正の値の合計値と負の値の合計を別々に実行結果のように出力する為にはどのようにくめばよいのでしょうか? 問5の実行結果 正の合計:450 負の合計:-350 (6) 100、-50、200、150、-300を管理している配列を作成し、 平均値を出力したいです。ただし、特異な数値を省く為、最大値と最小値を1つ ずつ省いて算出するようにしたいです。その為にはどのようにくめばよいのでしょうか? 問6の実行結果 66.6666666… これで、(1)~(6)問目全部です。 フローチャートでも、イメージしながら、がんばってみます!

    • ベストアンサー
    • Java