2016-04-17 21 views
6

Tôi khá mới với C++ và thực sự gần với giải pháp, nhưng tôi vẫn cần trợ giúp. Vòng lặp của tôi hoạt động chính xác lần đầu tiên. Sau đó khi tôi nhập số xe, nó có vẻ là lấy một số đầu vào một nơi nào đó và chỉ thực hiện màu không hợp lệ trên đèo thứ hai. Rõ ràng, tôi đang thiếu một cái gì đó, nhưng tôi đang thua lỗ. Bất kỳ trợ giúp sẽ được đánh giá cao.Các vấn đề về vòng lặp xác thực C++

Đây chỉ là một đoạn nhỏ của chương trình của tôi, nhưng có đặt vấn đề:

while (count < 3) 
{ 
    cout << endl << "Enter car color: blue, red or green in lower case. "; 
    getline(cin, carColor[count]); 

    if (!(carColor[count] == "blue" || carColor[count] == "red" || carColor[count] == "green")) 
    { 
     cout << "That is an invalid color" 
      << "The program will exit"; 
     cin.clear(); 
     cin.ignore(); 
     return 0; 
    } 


    cout << endl << "Enter car number between 1 and 99: "; 
    cin >> carNumber[count];     // Enter car number 
    if (carNumber[count] >99 || carNumber[count] < 1) 
    { 
     cout << "That is not a correct number" 
      << " The program will exit"; 
     return 0; 
    } 

    cout << "car no is:" << carNumber[count] << "color: " << carColor[count]; 


    ++count; 
// int lapCount{ 1 }; 

    cout << endl; 

} 
+1

Sau khi bạn nhập số điện thoại xe hơi, nó sẽ đặt số theo sau là một '\ n' (ký tự cuối) trong bộ đệm. Vì bạn không xóa cin, sau lần lặp đầu tiên của vòng lặp, bộ đệm chỉ có dòng cuối trong đó. Getline sau đó sẽ đọc dòng cuối đó trên lần lặp tiếp theo – Bettorun

Trả lời

4

Nhân vật '\n' sau khi bạn nhấn enter trong cin >> carNumber[count]; lẽ vẫn như vậy sau khi bạn thực hiện các đường chuyền thứ hai của getline(cin, carColor[count]); bạn nhận được một chuỗi rỗng. Một giải pháp là để làm điều này:

char c; 
cin >> carNumber[count]; 
cin >> c; 

Nhưng giải pháp tốt hơn sẽ là chỉ để thay đổi:

getline(cin, carColor[count]); 

tới:

cin >> carColor[count]; 
+0

OMG !!! Tôi đoán đó là những gì xảy ra khi tôi xem mã trong 8 giờ. cin đã cho tôi lỗi, chủ yếu là vì tôi có << thay vì >>. Cảm ơn bạn rất nhiều! Tôi cảm thấy ngớ ngẩn!! Cảm ơn bạn đã cung cấp thêm thông tin. Tôi sẽ ghi nhớ nó cho dự án tiếp theo :) – Caridore

Các vấn đề liên quan