0

これはおそらく非常に簡単な修正ですが、エラーが発生する理由を理解するのに苦労しています.

コード:

#include <iostream>
#include <queue>
#include <vector>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main(int argc, char *argv[]){

    srand ( time(NULL) );
    double randomNumber = (double)(rand() % 100) / 100;

    string numCars;

    cout << "\nPlease enter the number of cars going through the intersection:" << endl;
    cout << "->";
    getline (cin, numCars);

    for(double i=0; i<numCars; i++){
        cout << randomNumber << endl;
    }

}

エラーは次のとおりです。

 traffic.cpp:80: error: no match for ‘operator<’ in ‘i < numCars’
4

3 に答える 3

4

numCarsは文字列です。整数型 (char、short、int、long) である必要があります。

于 2012-12-03T22:07:11.003 に答える
2

stringa を数値と比較することはできません。ユーザー入力を に読み込みますunsigned int。コードを次のように変更します。

unsigned int numCars;
if( !(cin >> numCars) ) {
  // invalid user input, handle it
}

for( unsigned int i = 0 ; i < numCars; ++i ) {
  // ...
}

のデータ型もiからdoubleに変更しましたunsigned int。何らかの理由で少数の車がその交差点を通過できない限り、浮動小数点数を使用する理由はありません。

于 2012-12-03T22:10:25.297 に答える
0

文字列を整数と比較することはできません。または、これには演算子を定義する必要があります。numCars整数であるべきですか?

于 2012-12-03T22:08:23.377 に答える