- 締切済み
ポインタについて
ポインタ配列を用いて最高点と平均点を求めるプログラムを作りたいと考えています。 配列の中身…45,78,56,35,47,98,-999 ※-999はデータの終わり ポインタ配列を使わないのならばすぐに解けるのですが… 考え方やソースなど教えてくれれば助かります。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- yama5140
- ベストアンサー率54% (136/250)
>ポインタ配列を用いて ポインタを用いて、ではないですか。 ☆だって1クラス分しかないよね、データは。 なお、printf( "最高点:%d 平均点:%3.1f\n", max, (double)sum / nin ); の %3.1f だけど、3 が何を意味するか下で確認して下さい。 http://www.k-cube.co.jp/wakaba/server/format.html -------------------------------------- #include <stdio.h> void main() { int iTen[ 7 ] = { 89, 34, 67, 65, 67, 55, -999 }; int *a, nin, sum, max; sum = 0; max = 0; nin = 0; a = iTen; // 1人目のデータが入っている場所= &iTen[ 0 ] while( *a > 0 ){ nin++; if( *a > max ) max = *a; sum += *a; a++; // 次の人 } printf( "最高点:%d 平均点:%5.1f\n", max, (double)sum / nin ); } 注:インデントに全角空白を用いています。タブに一括変換して下さい。
- titokani
- ベストアンサー率19% (341/1726)
>それを参考にして下のように考えてみました。 コンパイルエラーになりませんか?
- titokani
- ベストアンサー率19% (341/1726)
「ポインタ配列」じゃなくて、「ポインタと配列」の間違いってことはないでしょうか?
- Wr5
- ベストアンサー率53% (2173/4061)
おんなじような課題をやっている人が居ますので、参考にされては? # 丸写しで提出するのも一つの方法です。 # 勉強する気はない。という表明にはなるでしょう。
- koko_u_
- ベストアンサー率18% (459/2509)
>ポインタ配列を使うことになっているんです。。。 ポインタ配列とは、各要素がポインタ型になっている配列という意味でしょう? 必要なのは各要素が int 型の配列だけだと思いますよ。使えと言われても困る。
- vive_hodie
- ベストアンサー率0% (0/0)
ポインタ配列の作成方法が分からないのですか? Cであればmalloc、C++であればnewを使えば配列の要素数分のメモリ領域を簡単に確保できます。 例: int buf[BUFSIZE]; のような配列を作成したいのであれば、 int* buf; buf = malloc( sizeof(int) * BUFSIZE ); か、 buf = new int[BUFSIZE]; とすれば良いです。 あとは普通の配列と同じように処理すればいいのではないでしょうか。 ちなみに、mallocやnewで獲得されたメモリは自動的には解放されないので明示的に解放してあげましょう。
- koko_u_
- ベストアンサー率18% (459/2509)
>ポインタ配列を使わないのならばすぐに解けるのですが ならそれでいいじゃん。
補足
ご回答ありがとうございました。 ポインタ配列を使うことになっているんです。。。
補足
それを参考にして下のように考えてみました。 最高点は出るのですが、平均点がうまくでませんでした。 #include <stdio.h> void main(void) { static int *a[] = { 89, 34, 67, 65, 67, 55, -999}; int i, nin,sum, max; sum = 0; max = 0; nin = 0; for(i=0;i<6;i++,nin++){ if (a[i] > max) { max = a[i]; } sum = sum + a[i]; } printf("最高点:%d 平均点:%3.1f\n",max,(double)sum/nin); return 0; }