2016-08-15 12 views
-2

私が作ろうとしているこの初心者のプログラムは、基本的に本当に乱数が生成され、「プレイヤー」がその数を推測しなければならないプログラムです。プレイヤーが正しい数字を推測するまで、コンピュータは「高すぎる」または「低すぎます」と応答します。srand()が変数に格納されないのはなぜですか?

私はこのプログラムのアイディアをいくつかのウェブサイトから手に入れました。これは私の第2のプログラムです。私の最初のプログラムは単純なI/Oプログラムです。ここで

は私のコードです:

// BracketingSearch.cpp 

#include "stdafx.h" 
#include <iostream> 
#include <cstdlib> 
#include <string> 
#include <ctime> 
#include <istream> 
#include <fstream> 
using namespace std; 

int main() 
{ 

int x = srand(time(0)); 
cout << x << endl; 
for (int x = 1; x <= 10; x++) { 
    cout << 1 + (rand() % 100) << endl; 
} 
string stall; 
getline(cin, stall); 
} 

サイドノート: 私は多くのヘッダーという必要はないと思います。私はまだC++ライブラリを利用しています。 可能な限り私のコードを批判してください。私はプログラミングを学びたいと思っています! string stallは、私のコンソールアプリケーションを入力用に一時停止させて、結果を見ることができます。

ありがとうございました! -マイケブ

+1

あなたは、2つの異なる質問を持っているように思われます。 [コードレビュー](http://codereview.stackexchange.com)をお探しですか?どうか明らかにしてください。 – Rakete1111

+1

'srand'の戻り値の型は' void'です。あなたのコンパイラが 'int x = srand(time(0));'について文句を言っていないのに驚いています。 –

+1

関数 'srand()'には戻り値がありません。ここをクリックしてください:http://www.cplusplus.com/reference/cstdlib/srand/ 編集:@RSahuのようなものは数秒で速くなりました。 – Tara

答えて

4

srand(time(0))種別乱数生成番号rand()。戻り値の型はvoidです。 void型は整数型の変数に格納できません。

srand()の詳細については、を参照してください。

+0

どのように私はこのプログラムのためのvoidのデータ型を格納することをお勧めしますか?私はそのリンクに従って、それは大きな助言をしています。ありがとうございました! –

+0

なぜ 'srand(time(0))'を変数に格納する必要がありますか?シンプルな 'srand(time(0))'も同様です。 –

+0

私のプログラム全体で 'rand()'を使ってみましたが、関数を置くたびに値が変化しているようです。 –

0

必要最小限のヘッダーを使用するようにプログラムを書き直しました。これは宿題だと思うので、元のエラーはそのまま残しましたが、gccのエラー出力をここに入れました。

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

// this is a personal thing, but I avoid "using namespace std;" 
// in any file, since it makes it less clear where some symbols 
// came from 

int main() 
{ 
    int x = std::srand(std::time(0)); // line 11 
    std::cout << x << std::endl; 
    for (int x = 1; x <= 10; x++) { 
     std::cout << 1 + (std::rand() % 100) << std::endl; 
    } 

    // Windows folklore -- you should better switch your ide to not close 
    // the terminal after the program was run 
    std::cin.get(); 
} 

g++ -Wall foo.cppの出力:「なぜにsrand私の変数に格納されていない」と「私のコードをできるだけ批評してください」:

foo.cpp: In function 'int main()': 
foo.cpp:11:40: error: void value not ignored as it ought to be 
     int x = std::srand(std::time(0)); 
             ^
+0

Visual C++を使用すると、私のエラーは次のようになります: '' void '型の値は "int"型のエンティティを初期化するために使用できず、 'initializing:' void 'から' int ' –

関連する問題