2011-10-13 2 views
-2

이번 C++ 질문.C++ 두 난수 곱을 저장 중

두 임의의 숫자 사이에 제품을 저장하려고합니다 ... srand (time (0))를 기반으로 생성하고 -1 후에 종료하는 두 임의의 숫자 사이의 제품이 무엇인지 묻는 것으로되어 있습니다. 화면에 인쇄 할 때 루프를 입력뿐만 아니라

#include <iostream> 
using std::cout; 
using std::cin; 
using std::endl; 

#include <iomanip> 
using std::setw; 

#include <cstdlib> 
using std::rand; 
using std::srand; 

#include <ctime> 
using std::time; 

int multiplication() 
{ 
    srand(time(0)); 
    int x = 0; 

    while (x != -1) 
    { 
     int random_int; 
     random_int = (rand()%10 * rand()%10); 
     cout << "(Enter -1 to quit) \n"; 
     cout << "" << rand() % 10 << " multiplied by " << rand() % 10 <<"? \n"; 
     cin >> x; 

     if(x == random_int) 
     { 
      cout << "you're right!" << endl; 
     } 
     else 
     { 
      cout << "you're wrong" << endl; 
     } 
    } 
    return 0; 
} 

int main() 
{ 
    multiplication(); 
} 
+0

질문은 어디에 있습니까? –

답변

3

운영자 우선 순위에주의하십시오. 모듈러스 연산자 %은 곱하기 *과 우선 순위가 같습니다. 따라서 당신은

rand()%10 * rand()%10 

는 C++ 즉

((rand()%10) * rand()) % 10 

로 마지막 모듈은 다른 모든 것들의 결과에 적용되는 것으로 해석됩니다 쓸 때. 당신은 0과 9 사이에 두 개의 임의의 숫자를 곱하려면 여분의 괄호가 정확한 계산 순서를 보장 곳

대신

(rand() % 10) * (rand() % 10) 

사용합니다.

2

당신은 임의의 숫자를 매번 생성하는뿐만 아니라 때마다 ...

다음은 내 코드입니다. 당신은 임의의 값이 루프의 각 반복에서 동일 할 경우

int random_digit_1 = rand()%10, random_digit_2 = rand()%10; 
    int random_int = random_digit_1 * random_digit_2; 

    cout << "(Enter -1 to quit) \n"; 
    cout << "" << random_digit_1 << " multiplied by " << random_digit_2 <<"? \n"; 
    cin >> x; 

, 단순히 정의와 초기화를 이동 : 실제 문제의 부족 외에, 나는 당신이 적어도 이런 일을하고 싶지 가정 루프 외부의 확률 변수

3

답을 계산할 두 개의 난수와 다른 두 개의 임의의 난수를 생성하여 질문합니다. 기회가 다르다는 것입니다!

그래서 :

int a = rand()%10, b = rand()%10; 
int random_int = a*b; 
//... 
cout << a << " multiplied by " << b <<"? \n"; 

BTW, 당신의 코드는 꽤 많은 스타일의 결함 ... 함수에서

    호출하지 마십시오
  • srand() 있습니다. 일반적으로 main에서 호출해야합니다.
  • 함수가 int을 반환하면 무엇이든을 의미하는 int을 반환하십시오. 그렇지 않은 경우 void을 반환하십시오.
  • 사용자 입력이 올바른지 확인하십시오 : if (!(cin >> x)) 또는 이와 유사합니다.
  • endl을 일관되게 사용하십시오.
  • 이유는 cout << ""?입니다. 자바 관용구처럼 보이지만 C++에서는 아무 것도하지 않습니다.