2016-08-01 8 views
-2

Wie werde ich das mit if..else, do..while?wie überprüft man, ob der Eingabewert mit irgendeinem Wert innerhalb eines Arrays übereinstimmt

Dieses Programm sollte den Benutzer auffordern, College-Name einzugeben und das Ranking der Hochschule auszugeben, und wenn der Benutzer einen falschen Namen eingab, sollte das Programm eine Nachricht ausgeben, dass ein falscher Name eingegeben wurde.

#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string college[] = {"Baylor", "Colorado", "Iowa State", 
         "Kansas", "Kansas State", "Missouri", 
         "Nebraska", "Oklahoma", "Oklahoma State", 
         "Texas", "Texas A&M", "Texas Tech"}; 
    int conferenceRanking[] = {12, 11, 10, 9, 5, 8, 
           3, 2, 7, 1, 6, 4}; 

    for (if) 
    { 
     cout << "Enter the name of a Big Twelve College: " << college[count] 
     << college << "\n's ranking is " << conferenceRanking[count] 
     << "\n" << endl; 
    } 

    return 0; 
} 

[Probe] Dies ist die Ausgabe, was ich mit

Enter the name of a Big Twelve College: Nebraska 
Nebraska's ranking is 3 
+0

Was genau ist das für (wenn)? – DimChtz

+0

['std :: find'] (http://en.cppreference.com/w/cpp/algorithm/find)? – NathanOliver

+0

weil ich nicht sicher bin, was ich verwenden werde, ob für if..else oder während while, tippte ich 'for (if)' @DimChtz – Vadamadafaka

Antwort

1

kommen wollen würde ich ein wenig komplexer Weg gehen und eine Karte zum Halten der Daten verwenden und von der Hochschule für immer die Befehlszeile std :: getline, weil sie Leerzeichen erkennt und sie in die Zeichenkette einfügt. Nach dem Lesen des Namens iteriert es über die bereits erstellte Karte, um das College zu finden, nach dem wir suchen. Es überprüft dann den Iterator, wenn er gefunden wurde oder nicht! Sie sollten einige C++ - Tutorials oder ein gutes Buch lesen, um die Grundlagen von C++ zu lernen.

(dieser Ansatz C++ 11-Standard verwenden, so müssen Sie Ihren Compiler kompatibel ist)

#include <iostream> 
#include <string> 
#include <map> 

int main() 
{ 
     std::map<std::string, int> colleges = { 
      {"Baylor", 12}, 
      {"Colorado", 11}, 
      {"Iowa State", 10}, 
      {"Kansas", 9}, 
      {"Kansas State", 5}, 
      {"Missouri", 8}, 
      {"Nebraska", 3}, 
      {"Oklahoma", 2}, 
      {"Oklahoma State", 7}, 
      {"Texas", 1}, 
      {"Texas A&M", 6}, 
      {"Texas Tech", 4} 
     }; 

     std::cout << "to end enter: exit"; 

     bool p = true; 
     while(p){ 
      std::string name; 

      std::cout << "Enter the name of a Big Twelve College: "; 
      std::getline(std::cin, name); 

      if(name == "exit"){ 
        p = false; 
        break; 
      } 

      std::map<std::string, int>::iterator it = colleges.find(name); 
      if (it != colleges.end()){ 
        std::cout << it->first << "'s ranking is " << it->second << "!" << std::endl; 
      }else{ 
        std::cout << "No college found!, try again!" << std::endl; 
      } 
     } 

     return 0; 
} 
0

können Sie eine Karte verwenden, um Ihre Reihen zu speichern, die Sie mit Namen Ihren Reihen Zugriff später helfen wirklich leicht. Sie können auch eine boolesche Variable angeben, die angibt, ob die aktuelle Benutzereingabe in Ihrer Liste vorhanden ist, und verwenden, um zu entscheiden, ob der Benutzer seine Antwort erhalten soll oder ob er erneut nach einem College-Namen gefragt wird. Hier

ist ein Beispiel Hauptfunktion, die zeigt:

#include <iostream> 
#include <string> 
#include <unordered_map> 
using namespace std; 

int main() 
{ 
std::unordered_map<std::string, int> collegeRanks = { 
    {"Baylor",12}, 
    {"Colorado",11}, 
    {"Iowa State",10} 
}; 
//etc... 

bool finished = false; 
string userInput; 

while(!finished){ 

    cout << endl << "Enter the name of a Big Twelve College: "; 
    getline (std::cin,userInput); 
    std::unordered_map<std::string,int>::const_iterator nameAndRank = collegeRanks.find (userInput); 
    if (nameAndRank == collegeRanks.end()){ 
     // Not found :(
     finished = false; 
     cout << endl << userInput << " does not exist in our database... try another college name!" << endl; 
     userInput = ""; 
    } 
    else{ 
     // Found :) 
     finished = true; 
     cout << userInput << "'s rank is " << std::to_string(nameAndRank->second) << endl; 
    } 

} 

return 0; 
} 
0

Sie dies tun können einfach mit den Arrays Sie haben, ohne eine Karte zu verwenden (wenn Sie wollen). Betrachten Sie den folgenden Code.

bool has = false; 
cout << "Enter college name\n"; 
string name; 
cin >> name; 
for(int i=0; i<12; i++){ 
    if(college[i].compare(name) == 0){ 
     has = true; 
     cout << "Ranking of " << college[i] << " is " << conferenceRanking[i]; 
    } 
} 
//check if the name entered by user exists 
if(has == false) 
cout << "The college name entered does not exist"; 

Die bool variable has bestimmt, ob der College Name vom Benutzer existiert in dem Array college[] oder nicht eingetragen. Wenn eine Übereinstimmung gefunden wird, wird der Wert has in true geändert.

Verwandte Themen