(1)と(2)には以下の成績表を使って答えよ.
出席番号 | 語学 | 材料力学 | 熱力学 | 機械力学 | 流体力学 | 合計 | 平均点 |
1 | 65 | 71 | 74 | 82 | 97 | - | - |
2 | 84 | 83 | 74 | 64 | 65 | - | - |
3 | 74 | 74 | 78 | 80 | 78 | - | - |
4 | 90 | 90 | 90 | 90 | 90 | - | - |
5 | 87 | 78 | 85 | 60 | 88 | - | - |
6 | 93 | 95 | 94 | 92 | 95 | - | - |
(1)まず,各人の合計と平均値を順次計算するプログラムを作る.
(計算前と計算結果を両方表示すること)
#include <stdio.h>
void main()
{
float bangou[6]={1, 2, 3, 4, 5, 6 };
float seiseki[6][5]={ {65, 71, 74, 82, 97 } ,
{84, 83, 74, 64, 65 } ,
{74, 74, 78, 80, 78 } ,
{90, 90, 90, 90, 90 } ,
{87, 78, 85, 60, 88 } ,
{93, 95, 94, 92, 95 } };
float sum[6]={0, 0, 0, 0, 0, 0 };
float ave[6]={0, 0, 0, 0, 0, 0 };
int i,j;
printf("番号¥t語学¥t材力¥t熱力¥t機力¥t流力¥t合計¥t平均¥n");
for(i=0;i<6;i++){
printf("%.1f¥t",bangou[i]);
for(j=0;j<5;j++){
printf("%.1f¥t",seiseki[i][j]);
}
printf("%.1f¥t",sum[i]);
printf("%.1f¥t",ave[i]);
printf("¥n");
}
for(i=0;i<6;i++){
for(j=0;j<5;j++){
sum[i] += seiseki[i][j];
ave[i] += seiseki[i][j]/5;
}
}
printf("¥n");
printf("番号¥t語学¥t材力¥t熱力¥t機力¥t流力¥t合計¥t平均¥n");
for(i=0;i<6;i++){
printf("%.1f¥t",bangou[i]);
for(j=0;j<5;j++){
printf("%.1f¥t",seiseki[i][j]);
}
printf("%.1f¥t",sum[i]);
printf("%.1f¥t",ave[i]);
printf("¥n");
}
}
(2)結果(総合得点もしくは平均)を成績の良い順番に並べ替え,表示してみよう. (番号と結果両方表示すること)
#include <stdio.h>
void main()
{
float bangou[6]={1, 2, 3, 4, 5, 6 };
float seiseki[6][5]={ {65, 71, 74, 82, 97 } ,
{84, 83, 74, 64, 65 } ,
{74, 74, 78, 80, 78 } ,
{90, 90, 90, 90, 90 } ,
{87, 78, 85, 60, 88 } ,
{93, 95, 94, 92, 95 } };
float sum[6]={0, 0, 0, 0, 0, 0 };
float ave[6]={0, 0, 0, 0, 0, 0 };
int i,j;
int tmp;
printf("番号¥t語学¥t材力¥t熱力¥t機力¥t流力¥t合計¥t平均¥n");
for(i=0;i<6;i++){
printf("%.1f¥t",bangou[i]);
for(j=0;j<5;j++){
printf("%.1f¥t",seiseki[i][j]);
}
printf("%.1f¥t",sum[i]);
printf("%.1f¥t",ave[i]);
printf("¥n");
}
for(i=0;i<6;i++){
for(j=0;j<5;j++){
sum[i] += seiseki[i][j];
ave[i] += seiseki[i][j]/5;
}
}
printf("¥n");
printf("番号¥t語学¥t材力¥t熱力¥t機力¥t流力¥t合計¥t平均¥n");
for(i=0;i<6;i++){
printf("%.1f¥t",bangou[i]);
for(j=0;j<5;j++){
printf("%.1f¥t",seiseki[i][j]);
}
printf("%.1f¥t",sum[i]);
printf("%.1f¥t",ave[i]);
printf("¥n");
}
for(i=0;i<5;i++){
for(j=i+1;j<6;j++){
if(ave[i]<ave[j]){
tmp = ave[i];
ave[i] = ave[j];
ave[j] = tmp;
tmp = bangou[i];
bangou[i] = bangou[j];
bangou[j] = tmp;
}
}
}
printf("¥n");
printf("成績の良い順番に並べると・・・¥n¥n");
printf("番号¥t平均¥n");
for(i=0;i<6;i++){
printf("%.0f¥t%.1f¥n", bangou[i], ave[i]);
}
}
(3)以下の表で”1”の箇所には黒の代わりに”x”を、”0”の箇所には白の代わりに”スペース”を画面に表示するようなプログラムを組もう.
#include <stdio.h>
void main()
{
int seiseki[8][8]={ {1, 0, 0, 0, 0, 0, 0, 1 } ,
{0, 1, 0, 0, 0, 0, 1, 0 } ,
{0, 0, 1, 0, 0, 1, 0, 0 } ,
{0, 0, 0, 1, 1, 0, 0, 0 } ,
{0, 0, 0, 1, 1, 0, 0, 0 } ,
{0, 0, 1, 0, 0, 1, 0, 0 } ,
{0, 1, 0, 0, 0, 0, 1, 0 } ,
{1, 0, 0, 0, 0, 0, 0, 1 } };
int i, j;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
if(seiseki[i][j]==1){
printf("x");
} else {
printf(" ");
}
}
printf("¥n");
}
}
(4)(3)で画面に表示した画像の白黒を反転させてみよう.
#include <stdio.h>
void main()
{
int seiseki[8][8]={ {1, 0, 0, 0, 0, 0, 0, 1 } ,
{0, 1, 0, 0, 0, 0, 1, 0 } ,
{0, 0, 1, 0, 0, 1, 0, 0 } ,
{0, 0, 0, 1, 1, 0, 0, 0 } ,
{0, 0, 0, 1, 1, 0, 0, 0 } ,
{0, 0, 1, 0, 0, 1, 0, 0 } ,
{0, 1, 0, 0, 0, 0, 1, 0 } ,
{1, 0, 0, 0, 0, 0, 0, 1 } };
int i, j;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
if(seiseki[i][j]==1){
printf(" ");
} else {
printf("x");
}
}
printf("¥n");
}
}
(5)三目並べのプログラムを組もう.
今回は,1君と2さんの二人で交互に遊べるようなプログラムを組んでみましょう.
(3行3列の二次元配列を用意し0で初期化し,6回くらい繰り返すようにしなさい.)
#include <stdio.h>
void main()
{
int sanmoku[3][3]={ {0, 0, 0 } ,
{0, 0, 0 } ,
{0, 0, 0 } };
int a, b, c;
int i, j, k;
for(i=0;i<6;i++){
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
printf("¥n");
sanmoku[a][b]=c;
for(j=0;j<3;j++){
for(k=0;k<3;k++){
printf("%d ",sanmoku[j][k]);
}
printf("¥n");
}
printf("¥n");
}
}
(5)で組んだプログラムに
・入力エラーチェック
・勝ち負け判定を
を加えてみよう!!
#include <stdio.h>
void main()
{
int sanmoku[3][3]={ {0, 0, 0 } ,
{0, 0, 0 } ,
{0, 0, 0 } };
int a, b, c;
int i, j, k;
for(i=0;i<9;i++){
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
printf("¥n");
if(a!=0 && a!=1 && a!=2){
printf("入力エラーです¥n");
i--;
} else if(b!=0 && b!=1 && b!=2){
printf("入力エラーです¥n");
i--;
} else if(c!=1 && c!=2){
printf("入力エラーです¥n");
i--;
}else if(sanmoku[a][b]!=0){
printf("入力エラーです¥n");
i--;
} else{
sanmoku[a][b]=c;
for(j=0;j<3;j++){
for(k=0;k<3;k++){
printf("%d ",sanmoku[j][k]);
}
printf("¥n");
}
}
printf("¥n");
if(sanmoku[0][0]==1 && sanmoku[0][1]==1 && sanmoku[0][2]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[1][0]==1 && sanmoku[1][1]==1 && sanmoku[1][2]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[2][0]==1 && sanmoku[2][1]==1 && sanmoku[2][2]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[0][0]==1 && sanmoku[1][0]==1 && sanmoku[2][0]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[0][1]==1 && sanmoku[1][1]==1 && sanmoku[2][1]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[0][2]==1 && sanmoku[1][2]==1 && sanmoku[2][2]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[0][0]==1 && sanmoku[1][1]==1 && sanmoku[2][2]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[0][2]==1 && sanmoku[1][1]==1 && sanmoku[2][0]==1){
printf("1君の勝ちです¥n");
i=9;
} else if(sanmoku[0][0]==2 && sanmoku[0][1]==2 && sanmoku[0][2]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[1][0]==2 && sanmoku[1][1]==2 && sanmoku[1][2]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[2][0]==2 && sanmoku[2][1]==2 && sanmoku[2][2]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[0][0]==2 && sanmoku[1][0]==2 && sanmoku[2][0]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[0][1]==2 && sanmoku[1][1]==2 && sanmoku[2][1]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[0][2]==2 && sanmoku[1][2]==2 && sanmoku[2][2]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[0][0]==2 && sanmoku[1][1]==2 && sanmoku[2][2]==2){
printf("2さんの勝ちです¥n");
i=9;
} else if(sanmoku[0][2]==2 && sanmoku[1][1]==2 && sanmoku[2][0]==2){
printf("2さんの勝ちです¥n");
i=9;
}
}
}