第15講 フリーストア配列
第10話 3次元フリーストア配列による年間成績一覧表の完成
では、皆さん成績一覧表
~
~
~
~
を実現するプログラム例
#include<iostream>
#include <iomanip>
#include <time.h>
using namespace std;
void f1(float*** x); //データ作成
void f2(float*** x); //データ表示と各生徒合計・平均の表示
void f3(float*** x); //データ表示と各生徒合計・平均および各教科等の合計・平均の算出・表示
void f4(float*** x); //年間成績一覧表の作成
void main(){
int i,j;
float*** x=new float**[4];
for(i=0;i<4;i++)x[i]=new float*[44];
for(i=0;i<4;i++)
for(j=0;j<44;j++)
x[i][j]=new float[10]; //生徒40人の各教科点数等のデータ収納配列
f1(x); //データ作成
f2(x); //各生徒の合計と平均の算出
f3(x); //データ表示と各生徒合計・平均および各教科等の合計・平均の算出・表示
f4(x); //年間成績一覧表の作成
delete[] x;
cout<<"プロジェクト終了"<<endl;
}
//データ作成
void f1(float ***x){
srand(time(NULL));
int i,j,k;
for(i=0;i<4;i++)
for(j=0;j<40;j++)
x[i][j][0]=j+1;
for(i=0;i<3;i++){
for(j=0;j<40;j++)
for(k=1;k<6;k++)
x[i][j][k]=rand()%100;
}
}
//各生徒の合計と平均の算出
void f2(float ***x){
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<40;j++)
x[i][j][6]=0; //各生徒合計の初期化
for(i=0;i<3;i++)
for(j=0;j<40;j++){
for(k=1;k<6;k++)
x[i][j][6]+=x[i][j][k];
x[i][j][7]=x[i][j][k]/5;
}
}
//データ表示と各生徒合計・平均および各教科等の合計・平均の算出・表示
void f3(float ***x){
int i,j,k;
for(i=0;i<3;i++){
cout<<i+1<<"学期成績一覧表"<<endl;
cout<<"出席番号 国語 社会 数学 理科 英語 合計 平均"<<endl;
for(j=0;j<40;j++){
for(k=0;k<6;k++){
if(k==0)cout<<" ";
if(x[i][j][k]<10)cout<<"0"<<x[i][j][k]<<"
";
if(x[i][j][k]>=10)cout<<x[i][j][k]<<" ";
}
cout<<" "<<x[i][j][6]<<" "<<setprecision(3)<<x[i][j][7]<<"
";
cout<<endl;
}
for(j=1;j<8;j++)x[i][41][j]=0;
cout<<" 合計 ";
for(j=1;j<8;j++){
for(k=0;k<40;k++)
x[i][41][j]+=x[i][k][j];
if(j==6)cout<<" ";
cout<<setprecision(5)<<x[i][41][j]<<" ";
}
cout<<endl<<endl;
}
}
//年間成績一覧表の作成
void f4(float ***x){
int i,j,k;
for(i=0;i<40;i++)
for(j=1;j<6;j++)
x[3][i][j]=0; //初期化
for(i=0;i<40;i++)
for(j=1;j<6;j++){
for(k=0;k<3;k++)
x[3][i][j]+=x[k][i][j];
x[3][i][j]/=3;
}
for(i=0;i<40;i++)
x[3][i][6]=0; //各生徒合計の初期化
for(i=0;i<40;i++){
for(j=1;j<6;j++)
x[3][i][6]+=x[3][i][j];
x[3][i][7]=x[3][i][j]/5;
}
cout<<"年間成績一覧表"<<endl;
cout<<"出席番号 国語 社会 数学 理科 英語 合計 平均"<<endl;
for(i=0;i<40;i++){
for(j=0;j<6;j++){
if(j==0)cout<<" ";
if(j==0){
if(x[3][i][j]<10)cout<<fixed<<"0"<<setprecision(0)<<x[3][i][j]<<"
";
if(x[3][i][j]>=10)cout<<fixed<<setprecision(0)<<x[3][i][j]<<"
";
}
else{
if(x[3][i][j]<10)cout<<"0"<<fixed<<setprecision(1)<<x[3][i][j]<<"
";
if(x[3][i][j]>=10)cout<<fixed<<setprecision(1)<<x[3][i][j]<<"
";
}
}
cout<<" "<<fixed <<setprecision(1)<<x[3][i][6]<<"
"<<fixed <<setprecision(1)<<x[3][i][7]<<"
";
cout<<endl;
}
for(i=1;i<8;i++)x[3][41][i]=0;
cout<<" 合計 ";
for(i=1;i<8;i++){
for(j=0;j<40;j++)
x[3][41][i]+=x[3][j][i];
if(i==6)cout<<" ";
cout<<fixed <<setprecision(1)<<x[3][41][i]<<"
";
}
cout<<endl<<endl;
}
参考ダウンロード添付ファイル
これで本講は終了とします。
次講では、素数探索に挑戦します。
第9話へ 第16講第1話へ
eclipse c++ 入門講義第1部へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ