第6講 配列の学習
第6話 3次元配列利用による成績一覧表作成
の解答例
#include<iostream>
#include<string>
using namespace std;
using namespace System;
void f1();
int main(){
f1();
}
void f1(){
int i,j,k,w,a[3][10][5];
for(i=0;i<3;i++){
cout<<i+1<<"学期成績一覧表"<<endl;
cout<<"出席番号 国語 社会 数学 理科 英語 合計 合否判定 講評"<<endl;
for(j=0;j<10;j++){
if(j+1<10)cout<<" 0"<<j+1<<"
";
if(j+1==10)cout<<" "<<j+1<<" ";
w=0;
for(k=0;k<5;k++){
a[i][j][k]=rand()%101;
w=w+a[i][j][k];
if(a[i][j][k]<10)cout<<a[i][j][k]<<" ";
if(a[i][j][k]>=10 && a[i][j][k]<100)cout<<a[i][j][k]<<" ";
if(a[i][j][k]==100)cout<<a[i][j][k]<<" ";
}
if(w<100)cout<<" "<<w;
if(w>=100)cout<<" "<<w;
if(w<250)cout<<" 不合格";
if(w>=250)cout<<" 合格";
if(w>=320){
cout<<" 大変優秀です。"<<endl;
}
else{
if(w>=280){
cout<<" 優秀です。"<<endl;
}
else{
if(w>=220){
cout<<" 普通です。"<<endl;
}
else{
if(w>=190){
cout<<" ちょっと厳しい。"<<endl;
}
else{
cout<<" かなり厳しい。"<<endl;
}
}
}
}
}
cout<<" 合計 ";
for(j=0;j<5;j++){
w=0;
for(k=0;k<10;k++){
w=w+a[i][k][j];
}
cout<<w<<" ";
}
cout<<endl;
cout<<endl;
}
}
}
解説
3次元配列、3次元ループとなりかなり複雑なコードです。
for(i=0;i<3;i++){
・
}
のiは学期に対応しております。
jは出席番号に対応して、kは教科番号(0:国語 1:社会 2:数学 3:理科 4:英語)です。
位置ずれに関しては、粘り強く試行錯誤を繰り返すしかありません。
尚、完全な位置合わせは諦めるしかありません。
半角スペースと半角数字が微妙に大きさが違うので無理なのです。
本当は出席番号は
9
10
としたいのですが、無理なので
09
10
で妥協しています。これが
if(j+1<10)cout<<" 0"<<j+1<<"
";
if(j+1==10)cout<<" "<<j+1<<" ";
の2行の意味です。
皆さんは、年間成績を加えることに挑戦してみてください。
今回は、解答例を示しませんので粘り強く試行錯誤を繰り返しましょう。
さて、次講では2次元配列を利用して、4次魔方陣と6次魔方陣の作成に挑みます。
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)