質問

int sc1,sc2,a=0,b=0;

do
{

 printf("Give the scores\n");

 scanf("%d %d", &sc1,&sc2);

 //===============================================

 if (sc1 > sc2)     
   a+=1;
 else if (sc1<sc2)
   b+=1;
 else if (sc1==sc2)
   printf("tie\n");

 //===============================================

 if (a>b)    
    printf("team 1 is in the lead\n");
 else if (a<b)
    printf("team 2 is in the lead\n");
 else if (b==a)
    printf("tie\n");      

}
while((a==3) || (b==3));

//===============================================


if (a==3)
  printf("team 1 got the cup");
else
  printf("team 2 got the cup");

私は何か間違ったものを書いたと思います。私はそれをたくさん検索しましたが、それが何が悪いのかを見つけることができないようです。

(2つのチームのうちの1つがカップに勝つことができ、そのチームは3勝する必要があります)

*else if(sc1

*else if(a> b)

役に立ちましたか?

解決

私があなたの質問を適切に読んでいるなら、あなたは終了条件を「A」または「B」の1つがスコアを持っていることを望みます。ただし、あなたのコードでは、その唯一の方法で書いたのですループは、チームの1つが3のスコアを持っている場合です。

while( !( a==3 || b == 3) )

他のヒント

while((a==3) || (b==3));

場合にのみループします a また b 3つです。そのうちの1つが3になるまで待ちたい場合は、以下を使用してください。

while ((a!=3) && (b!=3));

ループ状態が正しくありません。どちらのチームも3のスコアを持っていないため、早めに停止しています。

while((a < 3) && (b < 3));

基本的に、AまたはBがまだ3つ等しい間、ループするように言っています。これはあなたが望むものではありません。あなたが欲しい while((a<3) && (b<3))

あなたの条件:

while((a==3) || (b==3));

ループはどちらも続くと述べています a また b 3に相当します。これがあなたが望んでいたものだと確信していますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top