-4
コンピュータは、生徒が算数問題を解決する能力をテストするために広く使われてきました。このコードをより効率的に短くするにはどうすればよいですか?
学生は、1から100の間のランダムな整数を使って、加算、減算、または乗算をテストするプログラムを書いています。問題の種類を選択することから始まり、3つのチャンスそれぞれ正しく答える。 3回のチャンスの後でも答えが間違っていれば、正しい答えが表示されます。スコアは、最初の試行では正解10点、2試行で5点、3試行で2点、3試行が間違っている場合は0点を与えて計算されます。プログラム。ここで
が唯一の私の試みであるこの問題:
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int num()
{
return rand()%100+1;
}
//Screen ----------------------------------------------------------------------------------------------------------
int screen()
{
int choice;
cout<<"Enter the number for the problem type desired.\n";
cout<<" 1. Addition\n";
cout<<" 2. Subtraction\n";
cout<<" 3. Multiplication\n\n";
cout<<"Enter choice: ";
cin>>choice;
return choice;
}
//Multiplications -----------------------------------------------------------------------------------------------------
void Multi(int &tries, int&score, int &true_answer)
{
int num1, num2, answer;
num1 = num();
num2 = num();
true_answer = num1+num2;
cout<<"\n"<<num1<<" * "<<num2<<" = ";
cin>>answer;
if(num1 * num2 != answer)
{
cout<<"Wrong, Try again\n";
tries++;
}
else
{
cout<<"CORRECT\n";
}
if(tries == 0 && num1*num2 == answer)
{
score+=10;
}
if(tries == 1 && num1*num2 == answer)
{
score += 5;
}
if(tries == 2 && num1*num2 == answer)
{
score += 2;
}
if(tries == 3)
{
score += 0;
}
}
// Subtraction -------------------------------------------------------------------------------------------------------
void Subtract(int &tries, int &score, int &true_answer)
{
int num1, num2, answer;
num1 = num();
num2 = num();
true_answer = num1 + num2;
cout<<"\n"<<num1<<" - "<<num2<<" = ";
cin>>answer;
if(num1 - num2 != answer)
{
cout<<"Wrong, Try again\n";
tries++;
}
else
{
cout<<"CORRECT\n";
}
if(tries == 0 && num1-num2 == answer)
{
score+=10;
}
if(tries == 1 && num1-num2 == answer)
{
score += 5;
}
if(tries == 2 && num1-num2 == answer)
{
score += 2;
}
if(tries == 3)
{
score += 0;
}
}
//Addition -------------------------------------------------------------------------------------------------------
void Add(int &tries, int &score, int &true_answer)
{
int num1, num2, answer;
num1 = num();
num2 = num();
true_answer = num1+num2;
cout<<"\n"<<num1<<" + "<<num2<<" = ";
cin>>answer;
if(num1+num2 != answer)
{
cout<<"Wrong, Try again\n";
tries++;
}
else
{
cout<<"CORRECT\n";
}
if(tries == 0 && num1+num2 == answer)
{
score+=10;
}
if(tries == 1 && num1+num2 == answer)
{
score += 5;
}
if(tries == 2 && num1+num2 == answer)
{
score += 2;
}
if(tries == 3)
{
score += 0;
}
}
int main()
{
int answer, choice, score, tries, true_answer;
score = 0;
tries = 0;
srand(time(NULL));
choice = screen();
while(tries!=3)
{
if(choice == 1)
{
for(int i = 1; i<=10; i++)
{
Add(tries, score, true_answer);
if(tries==3)
{
break;
}
}
}
if(choice == 2)
{
for(int i = 1; i<=10; i++)
{
Subtract(tries, score, true_answer);
if(tries==3)
{
break;
}
}
}
if(choice == 3)
{
for(int i = 1; i<=10; i++)
{
Multi(tries, score, true_answer);
if(tries==3)
{
break;
}
}
}
if(tries == 3)
{
cout<<"You have missed 3 times. The answer is "<<true_answer<<".";
break;
}
}
cout<<"\n\n"<<"Total Score: "<<score<<"\n\n";
return 0;
}
ステップ1:役に立たないコメントや過度の空行を削除します。また、インデントの一貫性を保つ。 –
なぜ乱数を生成するのですか? num1とnum2のユーザー入力ではありませんか? – Shadi