Tôi đang tạo một trò chơi đơn giản tạo ra các tổng số ngẫu nhiên trong khoảng từ 0 đến 99 nhưng không thể hiểu được điều gì sai.

lập trình


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;
}
 
 
}

Những gì tôi đã thử:

Tôi đã thử xác định num1&2 là số ngẫu nhiên trong dấu ngoặc đơn tham số của chúng.
Nhưng tất cả mọi thứ được xem xét, tôi thậm chí không biết phải thử cái gì.

Giải pháp 2

Khi bạn gọi rand hàm, nó trả về một số ngẫu nhiên duy nhất: nó không làm cho biến bạn gán đó thay đổi giá trị mỗi khi bạn sử dụng nó.
Thật không may, mã của bạn bị hỏng đến mức tôi không thể biết chính xác bạn đã nhập gì: Tôi không thể lấy bất cứ thứ gì sẽ biên dịch được từ đó.

Nhưng … nếu bạn muốn có hai số ngẫu nhiên, bạn cần gọi rand hai lần:

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

Thứ hai, các số là (giả) ngẫu nhiên: có thể là bất kỳ giá trị nào trong phạm vi từ 0 đến RAND_MAX (trong thực tế sẽ tối thiểu là 32.767), vì vậy để có được một phạm vi cụ thể, bạn cần sử dụng toán tử Modulus trên cả hai giá trị được trả về, Không chỉ là một.
Thứ ba, nếu bạn muốn bao gồm các số từ 0 đến 99, bạn cần sử dụng x % (upperValue + 1): nếu bạn kiện x % 99 các giá trị sẽ nằm trong khoảng từ 0 đến 98, không phải 0 và 99!
Xem ở đây: Toán tử Modulo (%) trong C/C++ kèm ví dụ – GeeksforGeeks[^]

Giải pháp 3

Diễn đạt lại yêu cầu của bạn là “hàm tạo tổng của hai số ngẫu nhiên trong khoảng từ 0 đến 99“, Tôi sẽ viết

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

コメント

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