Benötige dringend Hilfe.



  • hallo zusammen. ich bin ein c++ neuling und möchte nun mein erstes programm schreiben was nicht im lehrbuch steht 😉 und gleich zu anfang taucht ein dickes problem auf. ich möchte dass wenn ich "a" eingebe das programm eine bestimmte zahl z.B.: "1" ausgibt. so weit so gut. aber ich möchte auch dass es bei verschiedenen buchstaben eine vorher definierte zahl ausgibt. z.B.: a=1, b=2, c=3, usw. ich stelle mal meinen bisherigen code ein damit ihr mein problem vielleicht besser versteht und mir helfen könnt:

    // blar.cpp
    #include <iostream>
    using namespace std;

    int main (void) {
    cout << "Versuch 1\n";
    int a;
    cin >> a;
    if (a=1)

    cout << "1";
    int b;
    cin >> b;
    if (b=2)

    cout << "2";
    int c;
    cin >> c;
    if (c=3)

    cout << "3";

    cin.clear();
    cin.ignore(cin.rdbuf()->in_avail());
    cin.get();
    return 0;
    }



  • Hallo

    "=" ist eine Zuweisung
    "==" ist ein Vergleich

    chrische



  • Benutz bitte Code-Tags. sfds



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn du für die Buchstaben von a-z 1 bis 26 ausgeben willst, dann solltest du
    es über den ASCII-Wert machen.

    int zahl = zeichen-'a';
    


  • also ich habe das jetzt so gemacht wie in der antwort über mir.
    also so:

    // blar.cpp
    #include <iostream>
    using namespace std;
    
    int main (void) {
    	cout << "Versuch 1\n";
    	int 1 = zeichen-'a';
    	int 2 = zeichen-'b';
    	int 3 = zeichen-'c';
    	int 4 = zeichen-'d';
    	int 5 = zeichen-'e';
    	int 6 = zeichen-'f';
    	int 7 = zeichen-'g';
    	int 8 = zeichen-'h';
    	int 9 = zeichen-'i';
    	int 10 = zeichen-'j';
    	int 11 = zeichen-'k';
    	int 12 = zeichen-'l';
    	int 13 = zeichen-'m';
    	int 14 = zeichen-'n';
    	int 15 = zeichen-'o';
    	int 16 = zeichen-'p';
    	int 17 = zeichen-'q';
    	int 18 = zeichen-'r';
    	int 19 = zeichen-'s';
    	int 20 = zeichen-'t';
    	int 21 = zeichen-'u';
    	int 22 = zeichen-'v';
    	int 23 = zeichen-'w';
    	int 24 = zeichen-'x';
    	int 25 = zeichen-'y';
    	int 26 = zeichen-'z';
    
    	cin.clear();
    	cin.ignore(cin.rdbuf()->in_avail());
    	cin.get();
    return 0;
    }
    

    allerdings meckert nun mein compoiler und gibt mir 53(!!!) errors aus. 😕



  • Wieso versuchst du 26 Mal, einer Zahl ein Zeichen zuzuweisen? Nur Variabeln können Werte zugewiesen werden. Ausserdem würde ich zu einem Array raten.

    int main() // kein void nötig
    {
    	char Zeichen[26];
    	for (short i = 0; i < 26; i++)
    	{
    		Zeichen[i] = 'a' + i;
    	}
    
        cout << Zeichen[14]; // Ausgabe des 15. Buchstaben des Alphabets (nicht 14.!)
        // kein return 0; nötig
    }
    


  • xRe schrieb:

    ...

    // blar.cpp
    #include <iostream>
    using namespace std;
    
    int main (void) {
    	cout << "Versuch 1\n";
    	int 1 = zeichen-'a';
    	int 2 = zeichen-'b';
    	int 3 = zeichen-'c';
    	int 4 = zeichen-'d';
    	int 5 = zeichen-'e';
    	int 6 = zeichen-'f';
    	int 7 = zeichen-'g';
    	int 8 = zeichen-'h';
    	int 9 = zeichen-'i';
    	int 10 = zeichen-'j';
    	int 11 = zeichen-'k';
    	int 12 = zeichen-'l';
    	int 13 = zeichen-'m';
    	int 14 = zeichen-'n';
    	int 15 = zeichen-'o';
    	int 16 = zeichen-'p';
    	int 17 = zeichen-'q';
    	int 18 = zeichen-'r';
    	int 19 = zeichen-'s';
    	int 20 = zeichen-'t';
    	int 21 = zeichen-'u';
    	int 22 = zeichen-'v';
    	int 23 = zeichen-'w';
    	int 24 = zeichen-'x';
    	int 25 = zeichen-'y';
    	int 26 = zeichen-'z';
    
    	cin.clear();
    	cin.ignore(cin.rdbuf()->in_avail());
    	cin.get();
    return 0;
    }
    

    1.) Was sollen "1" und "2" sein ? Das sind Werte und keine Variablen (die Werte speichern können). Das ist der Unterschied zwischen einer Sockenschublade (=Variable) und einer Socke(=Inhalt einer Variable). Wenn Du eine Schublade brauchst, hilft Dir keine Socke und anders herum...
    2.) Wann immer Du 26 gleichartige Zeilen untereinander schreibst, solltest Du im Kapitel "Schleifen" Deines Buches nachsehen.
    3.) Wenn Di kein Buch besitzt ist JETZT der Zeitpunkt, sich eines anzuschaffen (Empfehlungen gibt's hier im Forum über die Suche und oben unter der Rubrik "Bücher")

    xRe schrieb:

    ...
    allerdings meckert nun mein compoiler und gibt mir 53(!!!) errors aus. 😕

    Gewöhn' Dir gleich an, die Campilermeldungen
    a) zu lesen
    b) zu verstehen zu versuchen und
    c) bei Fragen hier mit anzugeben (warum sollen wir raten ?).
    Die sind nicht zum Spaß da.

    Gruß,

    Simon2.



  • Ein Variabel Name muss immer mit nem Buchstabe beginnen;)

    int A1=...;
    

    würde gehen;)



  • Eine Variable muss mit einem Buchstaben beginnen (groß oder klein ist egal, man sollte jedoch groß nur für konstante Werte verwenden) und dann können alle
    Buchstaben, Zahlen und der Bindestrich folgen. Es dürfen außerdem keine
    Sonderzeichen verwendet werden!



  • also leute ich besitze ein buch und zwar "C++ von A bis Z" von Jürgen Wolf. ich will einfach nur dass das progi eine bestimmte zahl zu einem einem bestimmten buchstaben ausgibt. bei a soll eine 1 ausgegeben werden und bei z ne 26 und alle zahlen die dazwischen liegen mit dem passenden buchstaben... 😞



  • Mal davon abgesehen, dass bei xRe offensichtlich die Grundlagen fehlen, sind einige tipps hier auch nicht das Wahre(Array, Schleife)!
    Wenn man eine zahl in einen Buchstaben verwandeln will kann man das so machen:

    char ch('A');
    int input = was auch immer!;
    char += input;
    

    will man jetzt doch die zahl ausgeben(meinetwegen 0 für A)
    dann reicht:

    ch -= 'A';
    int output = (int)ch;
    

    Also nix mit schleifen, arrays und zigtausend mal die gleiche zeile...
    Am besten nochmal informieren was ein char eigentlich ist...



  • Hier mal ein Beispiel, wie so etwas aussehen könnte mit if Abfragen.
    Ist jetzt sehr sehr einfach geschrieben.
    Ich habe bewusst keine Arrays oder sonst was eingesetzt,
    denn ich denke die hat er noch nicht gelernt.

    #include <iostream> 
    
    using namespace std; 
    
    int main () { 
        cout << "Bitte Zahl eingeben!" << endl; 
        int ival; 
        cin >> ival; 
        if (ival == 1) 
           cout << "A" << endl;
        if (ival == 2) 
           cout << "B" << endl;
        if (ival == 3) 
           cout << "C" << endl;
        if (ival == 4) 
           cout << "D" << endl;
        if (ival == 5)  
           cout << "E" << endl;
        if (ival == 6) 
           cout << "F" << endl;
        if (ival == 7) 
           cout << "G" << endl;
        if (ival == 8) 
           cout << "H" << endl;
        if (ival == 9) 
           cout << "I" << endl;
        if (ival == 10) 
           cout << "J" << endl;
        if (ival == 11) 
           cout << "K" << endl;
        if (ival == 12) 
           cout << "L" << endl;
        if (ival == 13) 
           cout << "M" << endl;
        if (ival == 14) 
           cout << "N" << endl;
        if (ival == 15) 
           cout << "O" << endl;
        if (ival == 16) 
           cout << "P" << endl;
        if (ival == 17) 
           cout << "Q" << endl;
        if (ival == 18) 
           cout << "R" << endl;
        if (ival == 19) 
           cout << "S" << endl;
        if (ival == 20) 
           cout << "T" << endl;
        if (ival == 21) 
           cout << "U" << endl;
        if (ival == 22) 
           cout << "V" << endl;
        if (ival == 23) 
           cout << "W" << endl;
        if (ival == 24) 
           cout << "X" << endl;
        if (ival == 25) 
           cout << "Y" << endl;
        if (ival == 26) 
           cout << "Z" << endl;
        cin.get();
        return 0; 
    }
    


  • QarateKid schrieb:

    Mal davon abgesehen, dass bei xRe offensichtlich die Grundlagen fehlen, sind einige tipps hier auch nicht das Wahre(Array, Schleife)!
    Wenn man eine zahl in einen Buchstaben verwandeln will kann man das so machen:

    char ch('A');
    int input = was auch immer!;
    char += input;
    

    will man jetzt doch die zahl ausgeben(meinetwegen 0 für A)
    dann reicht:

    ch -= 'A';
    int output = (int)ch;
    

    Also nix mit schleifen, arrays und zigtausend mal die gleiche zeile...
    Am besten nochmal informieren was ein char eigentlich ist...

    Das selbe würde ich dir raten. Überleg dir bei der Gelegenheit auch gleich, was hier nicht das Wahre ist. Einen Datentyp inkrementieren und C-Style-Casts anwenden... Lies in Zukunft wenigstens deinen eigenen Post durch. 🙄

    Unregistrierter schrieb:

    Hier mal ein Beispiel, wie so etwas aussehen könnte mit if Abfragen.
    Ist jetzt sehr sehr einfach geschrieben.
    Ich habe bewusst keine Arrays oder sonst was eingesetzt,
    denn ich denke die hat er noch nicht gelernt.

    völlig doofer Code...

    Was ist denn los? Nur weil er noch keine Arrays kann, unterstützt du ihn noch beim Schreiben von solch dreckigem Code?

    @ xRe:
    Ich und einige andere haben vorher eine Lösungsmöglichkeit aufgeschrieben, wenn du die beachten willst, kannst du. Wenn du lieber uneinsichtig bleibst und weiterhin deine 26 Buchstaben einzeln ausgeben lassen willst, ist das deine Sache...

    P.S. Sorry wenn das ein bisschen abschätzig rüberkommt, aber es regt einfach auf, wenn man sich um eine ernsthafte Lösung bemüht, und nachher kommen irgendwelche Noobs, die meinen, Arrays und Schleifen seien schlecht, dabei können sie selber nicht einmal eine einfache Inkrementierung coden... 🙄



  • Was ist denn los? Nur weil er noch keine Arrays kann, unterstützt du ihn noch beim Schreiben von solch dreckigem Code?

    naja hier würde ich melan recht geben was bringt ihm das wenn er nen code in seinem compiler reinkopiert den er noch nie gesehen hat
    damit kann er sich noch zeitlassen bis er bei arrays angekommen ist
    wenn man die aufgabe mit mitteln löst die im zur verfügung stehen dann weiß er erstmal wie man das machen kann



  • An Arrays wird er früher oder später eh nicht vorbeikommen. Wieso nicht gleich zeigen, wie es geht? Und wenn man jetzt 2 oder 3 mal das gleiche untereinanderschreiben würde, ginge es ja noch. Aber nicht 26 Male...



  • ja ok, nexus, hab da statt ch halt char geschrieben, kann mal passieren, pardon, du c++ gott. also richtig:

    char ch('A');
    int input = was auch immer!;
    ch += input;
    

    Aber ein char ist nichts anderes als ein byte, also eine binäre zahl zw 0 und 256, und das sollte man auch nutzen(besonders wenns nur ums deutsche alphabet geht).
    Da braucht man keine Übersetzungstabellen(Arrays) denn die gibt es schon(ASCII).
    Ich gehe generell davon aus, dass ein input auch auf seine Richtigkeit geprüft wird (also hier zw 1 und 26 liegt), in welchem Datentyp man den input speichert, spielt eigentlich kaum eine Rolle, Hauptsache er kann ihn speichern also fällt bool selbstverständlich raus...
    Dass Schleifen und Arrays schlecht sind, hab ich nie behauptet, sie sind hier nur unnötig(meiner noobschen Meinung nach)!!!
    Aber ich bin wahrscheinlich wirklich ein noob, hab noch nie ein int anders gecastet, obwohl ich weiss, dass es eine zeichen-intensivere c++-variante gibt...static_cast<int>, trotzdem kann ich mir die variante in einem C / C++ forum doch aussuchen.
    gruß Q



  • Seit wann braucht man für eine Funktion mit Rückgabetyp wie int main() eigentlich keinen Rückgabewert mehr?



  • QarateKid schrieb:

    ja ok, nexus, [...] pardon, du c++ gott. also richtig:
    (meiner noobschen Meinung nach)!!!
    Aber ich bin wahrscheinlich wirklich ein noob, hab noch nie ein int anders gecastet, obwohl ich weiss, dass es eine zeichen-intensivere c++-variante gibt...

    Dein möchtegern-ironisches Getue kannst du dir auch ruhig sparen. Steh wenigstens zu deinen eigenen Fehlern.

    QarateKid schrieb:

    sind einige tipps hier auch nicht das Wahre(Array, Schleife)!
    Also nix mit schleifen, arrays und zigtausend mal die gleiche zeile...
    Am besten nochmal informieren was ein char eigentlich ist...

    Wenn solche Sachen rauslässt und sich dabei noch unheimlich klug vorkommt, dann sollte man sich wenigstens vergewissern, dass der eigene Code besser ist.

    Und das Array habe ich nicht erstellt, damit man die Buchstaben in einer Tabelle hat. xRe versuchte, mehreren Variabeln einen Wert zuzuweisen, also dachte ich, er wollte die Zeichen irgendwo speichern. Verstehst du jetzt, wieso ich Arrays und Schleifen verwendet habe?

    Und was das Casten angeht, wir sind hier zufällig im C++-Unterforum, und wenn du jemandem, der C++ und nicht C lernen will, helfen möchtest, dann benutz doch gefälligst auch die entsprechende Variante mit static_cast<> . Diese ist übrigens nicht nur zeichenintensiver, sondern hat auch einige Vorteile (mehr Sicherheit).

    Verwirrter schrieb:

    Seit wann braucht man für eine Funktion mit Rückgabetyp wie int main() eigentlich keinen Rückgabewert mehr?

    Seit C++. Allerdings nur bei main() .



  • Zum Thema ASCII: Nicht alle Zeichentabellen haben die Buchstaben in fortlaufender Abfolge. Wenngleich die Wahrscheinlichkeit, dass ein Anfänger an einem Rechner mit einem solchen Zeichensatz C lernt, eher als gering zu bezeichnen sein dürfte.


Log in to reply