前回質問したときに答えてくださった皆様、本当にありがとうございました。
ここで聞いたことや、友達に教わりながらプログラムを完成させることはできたのですが、そのプログラムを"定義済み処理"を用いるような形に直せとのことでした。
授業では定義済み処理の話はしていましたが、実際にプログラムとして作成していなかったのでどのように作ればよいのかがわかりません。
教えていただけないでしょうか?
以下に前回作った、プログラムを載せておきます。
テニスのように、先に4勝するとどちらかの勝ちで終わるが、3勝3敗となったときには先に2連勝した方が勝ちになるように変更したプログラムです。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int a,b,w1=0,w2=0;
while(1){
srand(time(NULL));
b=rand()%2;
printf("Input the hand number[0 or 1]>>");
scanf("%d",&a);
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
}
else{
printf("Input the right number.\n");
}
if(w1==4){
break;
}
if(w2==4){
break;
}
if(w1==3&&w2==3){
break;
}
if(w1==3&&w2==3){
w1=0;
w2=0;
while(1){
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else{
printf("Input the right number.\n");
}
if(w1==2){
break;
}
if(w2==2){
break;
}
}
}
}
return 0;
}
長いプログラムになっていますが、よろしくお願いします。
"定義済み処理"を用いたプログラム
Re:
>YuOさん
1.srand(time(NULL));
b=rand()%2;
2.printf("Input the hand number[0 or 1]>>");
scanf("%d",&a);
3.if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
}
else{
printf("Input the right number.\n");
}
if(w1==4){
break;
}
if(w2==4){
break;
}
if(w1==3&&w2==3){
break;
}
if(w1==3&&w2==3){
w1=0;
w2=0;
while(1){
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else{
printf("Input the right number.\n");
}
if(w1==2){
break;
}
if(w2==2){
break;
}
}
}
}
の3つを関数化するらしいのですが・・・
フローチャートでは、
start
|
関数1
|
関数2
|
関数3
|
end
という流れになるとのことでした。
1.srand(time(NULL));
b=rand()%2;
2.printf("Input the hand number[0 or 1]>>");
scanf("%d",&a);
3.if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
}
else{
printf("Input the right number.\n");
}
if(w1==4){
break;
}
if(w2==4){
break;
}
if(w1==3&&w2==3){
break;
}
if(w1==3&&w2==3){
w1=0;
w2=0;
while(1){
if(a==0&&b==0){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else if(a==0&&b==1){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==0){
w2=w2+1;
printf("You lose.\n");
w1=0;
}
else if(a==1&&b==1){
w1=w1+1;
printf("You win.\n");
w2=0;
}
else{
printf("Input the right number.\n");
}
if(w1==2){
break;
}
if(w2==2){
break;
}
}
}
}
の3つを関数化するらしいのですが・・・
フローチャートでは、
start
|
関数1
|
関数2
|
関数3
|
end
という流れになるとのことでした。