第7講 ポインタの学習
第8話 1次元配列を関数に渡す
前話問題
を実現するコード
例その1
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void f(int *x);
void g(int *x);
void main(){
int x[10];
f(x);
g(x);
cout<<endl;
}
void f(int *x){
srand(time(NULL));
int i;
for(i=0;i<10;i++){
x[i]=rand()%10;
}
}
void g(int *x){
int i;
for(i=0;i<10;i++){
cout<<x[i]<<" ";
}
}
例その2
#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void f(int x[10]);
void g(int x[10]);
void main(){
int x[10];
f(x);
g(x);
cout<<endl;
}
void f(int x[10]){
srand(time(NULL));
int i;
for(i=0;i<10;i++){
x[i]=rand()%10;
}
}
void g(int x[10]){
int i;
for(i=0;i<10;i++){
cout<<x[i]<<" ";
}
}
参考ダウンロードファイル
では、
第6講 配列の学習
第8話 成績一覧表に各生徒合計・平均を加える
で学んだ
を実現するプログラム例
#include <iomanip>
using namespace std;
int x[40][6];
int sg[40];
float sh[40];
void f1(); //1行目(ラベル)表示
void f2(); //データ作成
void f3(); //データ表示と各生徒合計・平均の表示
void f4(); //各教科の合計と平均を算出して表示
void f5(); //各生徒の合計と平均の算出
void main(){
f1(); //1行目(ラベル)表示
f2(); //データ作成
f5(); //各生徒の合計と平均の算出
f3(); //データ表示と各生徒合計・平均の表示
f4(); //各教科の合計と平均を算出して表示
}
//1行目(ラベル)表示
void f1(){
cout<<"出席番号 国語 社会 数学 理科 英語"<<endl;
}
//データ作成
void f2(){
srand(time(NULL));
int i,j;
for(i=0;i<40;i++)x[i][0]=i+1;
for(i=0;i<40;i++){
for(j=1;j<6;j++){
x[i][j]=rand()%100;
}
}
}
//データ表示と各生徒合計・平均の表示
void f3(){
int i,j;
for(i=0;i<40;i++){
for(j=0;j<6;j++){
if(j==0)cout<<" ";
if(x[i][j]<10)cout<<"0"<<x[i][j]<<"
";
if(x[i][j]>=10)cout<<x[i][j]<<" ";
}
cout<<" "<<sg[i]<<" "<<setprecision(3)<<sh[i]<<"
";
cout<<endl;
}
cout<<endl;
}
//各教科の合計と平均を算出して表示
void f4(){
int w[5]; //各教科の合計を入れる配列
float h[5]; //各教科の平均を入れる配列
int i,j;
for(i=0;i<5;i++)w[i]=0;
for(i=0;i<5;i++){
for(j=0;j<40;j++){
w[i]=w[i]+x[i][j];
}
h[i]=(float)w[i]/40;
}
cout<<"合計 ";
for(i=0;i<5;i++)cout<<w[i]<<" ";
cout<<endl;
cout<<"平均 ";
for(i=0;i<5;i++)cout<<setprecision(4)<<h[i]<<"
";
cout<<endl;
}
//各生徒の合計と平均の算出
void f5(){
int i,j;
for(i=0;i<40;i++)sg[i]=0; //各生徒合計の初期化
for(i=0;i<40;i++){
for(j=0;j<5;j++){
sg[i]=sg[i]+x[j][i+1];
}
sh[i]=(float)sg[i]/5;
}
}
を改良しましょう。
グローバル配列
int x[40][6];
int sg[40];
float sh[40];
を削除して、
void main(){
int x[40][6];
int sg[40];
float sh[40];
f1(); //1行目(ラベル)表示
f2(x); //データ作成
f5(sg,sh,x); //各生徒の合計と平均の算出
f3(sg,sh,x); //データ表示と各生徒合計・平均の表示
f4(x); //各教科の合計と平均を算出して表示
}
として、
その先頭アドレスを送ることによって、
同じ結果
を生成してください。
尚、
int x[40][6];
は
int **x=(int **)malloc(sizeof(int *)*40); //2016/12/27に間違いを訂正
for(int i=0;i<40;i++)x[i]=(int *)malloc(sizeof(int)*6);
でも可です。
f2()以降のプロトタイプ宣言は、
int x[40][6];
のときは
void f2(int x[40][6]); //データ作成
void f3(int sg[40,float sh[40],int x[40][6]); //データ表示と各生徒合計・平均の表示
void f4(int x[40][6]); //各教科の合計と平均を算出して表示
void f5(int sg[40,float sh[40],int x[40][6]); //各生徒の合計と平均の算出
としますし、
int **x=(int **)malloc(sizeof(int *)*40); //2016/12/27に間違いを訂正
for(int i=0;i<40;i++)x[i]=(int *)malloc(sizeof(int)*6);
の場合は、
void f2(int **x); //データ作成
void f3(int *sg,float *sh,int **x); //データ表示と各生徒合計・平均の表示
void f4(int **x); //各教科の合計と平均を算出して表示
void f5(int *sg,float *sh,int **x); //各生徒の合計と平均の算出
とします。
第7話へ 第9話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ