2016-04-19 12 views
2

Ok, das Problem, das ich habe, ist, dass ich ein Array habe, das 27 Zeichen enthält, und ich muss eine Funktion schreiben, um ein bestimmtes Zeichen 0 - 25 basierend auf einer Benutzereingabe anzuzeigen.Abrufen einer Variablen aus einem Array

Das Array ist eine Konstante string:

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

und die Idee ist, dass ein Benutzer einen Wert zwischen 1 und 25 (int value) eintritt, die dann zeigt den cosponsoring Buchstaben in dem Array. Ich tun dies durch den Einsatz:

cout << ALPHABET[value]; 

Meine Fragen sind, ist dies ein appropreate Weg, um ein Array zu erstellen und bin ich in der Lage auf diese Weise einen Wert aus einem Array abzurufen.

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

int main() 
{ 
    int value; //Variable defining user entered value 
    cout << "Please enter a number between 0-25." << endl; 
    cin >> value; 
    if (value > 25) //If statement to display "-1" if number entered is past "Z" 
     cout << "-1" << endl; 
    else 
     cout << ALPHABET[value]; 

    return 0; 
} 
+0

Angenommen mit 'string' meinst du' std :: string', du hast nicht wirklich ein Array erstellt. Sie haben ein Objekt erstellt, das Array-ähnlichen Zugriff ermöglicht. –

+0

Schritt 1: Code schreiben. Schritt 2: Fehler beheben. Schritt 3: Stellen Sie Fragen zu Stack Overflow für Fehler, die Sie nicht beheben können. Sie scheinen bei Schritt 1 zu sein, kommen Sie zurück, wenn Sie zu 3 kommen. – user657267

+0

Wird die Tatsache, dass es ein Objekt ist, ein Problem sein? – Johnapples

Antwort

1

Meine Fragen sind, ist dies ein appropreate Weg, um ein Array zu erstellen und bin ich in der Lage auf diese Weise einen Wert aus einem Array abzurufen.

Obwohl es eine Zeichenfolge zu verwenden, funktioniert:

int main() 
{ 
    const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

    int num = -1; 
    while (num < 0 || num > 25) { 
     cout << "Enter number (0 - 25): "; 
     cin >> num; 
    } 

    cout << ALPHABET[num] << '\n'; 
} 

ich std::vector verwenden möchten für eine Folge von Elementen enthält:

vector<char> ALPHABET(26); 
iota(begin(ALPHABET), end(ALPHABET), 'A'); 
+0

Ich habe mit meinem ganzen Code aktualisiert, um etwas Klarheit zu schaffen, die ich zu den Inputs und zu den Ausgängen betrachte. Es baut gut ohne Fehler, es tut einfach nicht, was ich brauche. – Johnapples

+0

@Johnapples Ich habe meine Antwort bearbeitet, um die Zeichenfolge zu verwenden –

+0

Welchen möglichen Vorteil hat ein "Vektor" über eine "Zeichenfolge" oder ein normales Array? Ich kann nur an Nachteile denken. Sehen Sie sich einmal die Definitionslänge an. Ich weiß, dass wir "vector" als Standard empfehlen, aber sicher nicht für _everything_. –

0

Vielleicht ist es das, was Sie tun möchten. Das beinhaltet einen richtigen Weg, um ein Array zu erstellen.

#include <iostream> 

char ALPHABET[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\0' }; 
//the \0 means the end of the array of characters a.k.a. a string 

int main() 
{ 
    int value; //Variable defining user entered value 
    std::cout << "Please enter a number between 0-25." << std::endl; 
    std::cin >> value; 

    if (value > 25 || value < 0) //If statement to display "-1" if number entered is past "Z" 
     std::cout << "-1" << std::endl; 
    else 
     std::cout << ALPHABET[value]; 

return 0; 
} 

(Es gibt mehr Möglichkeiten, um ein Array zu erzeugen) Like „char ALPHABET [26] = { 'A', 'B', 'C', 'D', 'E', 'F' , G, H, I, J, K, L, M, N, O, P, Q, R S ',' T ',' U ',' V ',' W ',' X ',' Y ',' Z ',' \ 0 '};

Die 26 bedeutet, dass es nicht mehr als sein kann 26 Zeichen in diesem Array

Wenn Sie verwirrt sind über mich nicht mit "Namespace Std verwenden;" und stattdessen "Std ::", wenn Sie zwei Namespaces mit "cout" oder "endl" in ihnen das Programm haben wird nicht wissen, welchen Sie verwenden möchten

Wenn Sie also sicherstellen wollen, dass es aus dem richtigen Namespace stammt, verwenden Sie den Namen des Namespaces und zwei Doppelpunkte.

Verwandte Themen