Saya membuat permainan sederhana yang menghasilkan jumlah angka acak antara 0 dan 99 tetapi tidak tahu apa yang salah.

pemrograman


C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>

using namespace std;

int sumFunc(int num1, int num2);
char askYesNo(string question);
int main() {
    srand(static_cast<unsigned int="">(time(0)));
    int ans;
    addition = sumFunc(int num1, int num2);
    cin>>ans;
    
    if (ans == addition) {
        cout<<"Correct! "<<ans<<"is the="" answer!";
="" tryagain="askYesNo("Do" you="" wish="" to="" continue?");
="" if="" (tryagain="=" "y")="" {
="" addition;
="" }
="" else="" break;
="" cout<<"wrong!"<<ans<<"="" is="" not="" answer."<<endl;
="" cout<<addition<<"="" answer.";
="" }

="" return="" 0;
}

int="" sumfunc(int="" num1,="" int="" num2)="" randomnumber="rand();
" num1="(randomNumber" %="" 99)="" +="" 1;
="" num2="(randomNumber" sum="num1" num2;
="" do="" cout<<num1<<"="" "<<num2<<"="?";
" 
="" }while="" (num1="">= 0 && num2 >= 0);
    
    return num1 + num2;
}

char askYesNo(string question) {
    char response;
    
    do {
        cout<<question<<"(y n)="" ?";
="" cin="">>response;
    }while (response != "y" && response != "n");
    
    return response;
}
 
 
}

Apa yang saya coba:

Saya sudah mencoba mendefinisikan num1&2 sebagai angka acak dalam tanda kurung parameternya.
Tapi setelah mempertimbangkan semuanya, saya tidak tahu harus mencoba apa.

Solusi 2

Saat Anda menelepon rand fungsi, ia mengembalikan satu nomor acak: ia tidak membuat variabel yang Anda tetapkan mengubah nilainya setiap kali Anda menggunakannya.
Sayangnya, kode Anda sangat rusak sehingga saya tidak dapat mengetahui apa yang sebenarnya Anda ketik: Saya tidak dapat memperoleh apa pun yang dapat dikompilasi dari kode tersebut.

Tapi…jika ingin dua nomor acak, Anda perlu menelepon rand dua kali:

C
num1 = rand();
num2 = rand();

Kedua, angka-angka tersebut (semu) acak: dapat berupa nilai apa pun dalam rentang 0 hingga RAND_MAX (yang dalam praktiknya minimal 32.767) sehingga untuk mendapatkan rentang tertentu Anda perlu menggunakan operator Modulus pada kedua nilai yang dikembalikan, bukan hanya satu.
Ketiga, jika Anda ingin angka antara 0 dan 99 inklusif, Anda perlu menggunakan x % (upperValue + 1): jika kamu menuntut x % 99 nilainya akan berada di antara 0 dan 98 inklusif, bukan 0 dan 99!
Lihat disini: Operator Modulo (%) di C/C++ dengan Contoh – GeeksforGeeks[^]

Solusi 3

Mengungkapkan kembali kebutuhan Anda sebagai “fungsi yang menghasilkan jumlah dua angka acak antara 0 dan 99“, Saya akan menulis

C++
int sum_of_rand()
{
  int a1 = rand() % 100;
  int a2 = rand() % 100;
  return (a1+a2);
}

コメント

タイトルとURLをコピーしました