2017-02-25 5 views
-4

これは10個のランダムな正の整数からなる宝くじ番号を作成するプロジェクトです。ユーザーは正しい数字を推測するまで推測することになっています。すべてのコードがうまく見えますが、プログラムを実行して番号を入力すると、このMSVSランタイムライブラリエラーが表示されます。私はかなりプログラミングに新しいので、それが何を意味するか知りません。ヘルプは非常に高く評価されるだろう!C++宝くじ推測プログラムを作成

MAIN.CPP

#include <iostream> 
#include <cmath> 
#include <ctime> 
#include "Lottery.h" 

using namespace std; 

int main() { 
    const int size = 9; //declare variables 
    int win[size]; 
    int g; 
    srand(time(NULL)); 
    assign(win, size); 
    draw(win, size); 
    g = entry(); 
    if (check(win,size,g) == true) { 
     cout << "Congradulations! You have won the lottery!" << endl; 
    } 
    else { 
     cout << "Try again!" << endl; 
    } 
    printOut(g); 
} 

Lottery.cpp

#include <iostream> 
#include <cmath> 
#include "Lottery.h" 

using namespace std; 



int entry() { 
    int guess; 
    cout << "Enter a number from 0 to 99." << endl; 
    cin >> guess; 
    return guess; 
} 

void assign(int w[], int s) { 
    for (int i = 0; i < s; i++) { 
     w[s] = -1; 
    } 
} 

bool check(int w[], int s, int g) { 
    for (int i = 0; i < s; i++) { 
     if (g == w[i]) { 
      return true; 
     } 
    } 
    return false; 
} 

void draw(int w[], int s) { 
    for (int i = 0; i < s; i++) { 
     int tmp = rand() % 100; 
     if (check(w, s, tmp)) { 
      i--; 
     } 
     else 
      w[i] = tmp; 
    } 
} 

void printOut(int g) { 
    cout << "Numbers you have chosen:" << " " << g << endl; 
} 

Lottery.h

#ifndef LOTTERY_INCLUDED 
#define LOTTERY_INCLUDED 

void assign(int[], int); 
bool check(int[], int, int); 
void draw(int[], int); 
int entry(); 
void printOut(int); 

#endif //LOTTERY 
+2

Visual Studioでプログラムを停止すると、デバッガを切断して何が起きたかを見ることができます。私はこれを行うことを強くお勧めします。缶詰の答えを手渡すよりはるかに教育的です。 – user4581301

+0

エラーを作成しようとしていません。 1つを解決しようとしている!タイトルにタイプミスがありました。 –

+0

トピックを非表示:乱数ジェネレータをシードするには、 'main'の先頭近くにある' srand'を呼び出すことをお勧めします。 – user4581301

答えて

1

デバッグのチュートリアルは、他の場所でご利用いただけます。しかし、何か悪いことが起こった場合は、慌てて指示を探してはいけません。

まず、あなたのランタイムエラー:このリンクを持っている

your runtime error

「ブレイクとオープン例外設定」リンクまたは「ブレーク」ボタンを押します。クリックするとメインの最後に移動します。

詳細は、winの近くで何か悪いことをしたと言います。この時

ルック:

void assign(int w[], int s) { 
    for (int i = 0; i < s; i++) { 
     w[s] = -1; //<------Oh oops! 
    } 
} 

は、我々は、配列の長さはsすなわち9知っている、と我々は明確w[i]を意味w[s]を使用しています。 エラーの詳細は、見える可能性のある場所を示しています。

関連する問題