Inhalt char-Array



  • Morgen...

    ich hätte da ein kleines problem mit dem überprüfen von einem bestimmten element eines char-arrays:

    hier mal der code:

    {
    #include <iostream.h> 
    #include <fstream.h> 
    
    char i[4];
    cin>>i;       //ich geb ein z.b. 1003
    cout<<i[3];   //hier gibt er mir 3 raus
    
    if    (i[3] = 2)
          {
           cout<<"Richtig"<<endl;
           return 0;
          }
    else 
          {
          cout<<"Falsch"<<endl;
          return 0;
          }
    }
    

    Das problem iss jetzt, dass er mir den inhalt vom 3. element richtig ausgibt, er aber irgendwie die if-Überprüfung nicht richtig macht...egal welche zahl im 3. Element steht er gibt immer "Richtig" an...

    Wo liegt denn hier der Fehler, könnt ihr mir da bitte weiter helfen...

    Merci

    Grüße EOF



  • Vergleich mit ==, = ist eine Zuweisung.



  • Ok hab ich geändert...geht aber trotzdem nich...
    jetzt springt er mir immer zu "Falsch", egal ob die 3. zahl 2 ist oder nich...



  • EOF schrieb:

    Ok hab ich geändert...geht aber trotzdem nich...
    jetzt springt er mir immer zu "Falsch", egal ob die 3. zahl 2 ist oder nich...

    Dann ist die dritte Zahl auch nicht 2, liegt wohl daran dass du falsch einliest.
    cin>>i wird nicht hingehen und bei der Eingabe von 1003 die Zahl splitten und auf das Array verteilen, denn i ist gleichbedeutend mit i[0]. D.h. du schreibst 1003 in i[0]!

    #include <iostream>
    
    using namespace std;
    //...
    char i[4];
    cin>>i[3];       //gib mal 2 ein
    cout<<i[3];   //dann gibt er hier auch 2 aus
    
    if    (i[3] == '2')  //EDIT: Wir vergleich hier auf char!
          {
           cout<<"Richtig"<<endl;
           return 0;
          }
    else
          {
          cout<<"Falsch"<<endl;
          return 0;
          }
    }
    


  • Hi!

    Du meinst die 4. Ziffer (index 3), oder?
    Außerdem würde ich das char-Array auf 5 erweitern, da noch die terminierende 0 in das Array passen sollte.

    Grüße
    Richie



  • Das hatte ich eben übersehen. GPC hat auf jeden fall Recht!



  • Alles klar...

    der fehler waren die zwei '...' strichels in der if-bedingung!

    Klappt einwandfrei

    Mille Grazie

    EOF



  • Hab noch ein problem betreffend der if-Abfrage!

    Ich will z.B. von ner 4-stelligen zahl die letzte ziffer abfragen ob diese gerade ist (0,2,4,6,8) oder ungerade ist (1,3,5,7,9).

    Kann ich diese Bed. alle in eine If-Anweisung reinstecken, also

    if ((i[3] == '0') || (i[3] == '2') || usw.)
    {zahl ist gerade}
    
    if ((i[3] == '1') || usw.)
    {zahl ist ungerade}
    .
    ..
    ...
    

    schreiben?

    Thanks



  • Warum in Char Array einlesen und nicht in eine Zahl?

    int zahl;
    cin >> zahl;
    if(zahl % 2) {
        cout << zahl << " ist nicht gerade.";
    }
    else {
        cout << zahl << " ist gerade.";
    }
    

    Gruß



  • ich finde in ne zahl is es problematischer einzulesen, aber gut, ich mach es für gewöhnlich mit

    char eingabe[20];
    int zahl;
    cin>>eingabe;
    zahl = atoi(eingabe);
    

    weil es irgendwie sicherer is damit Benutzereingaben abzufangen



  • Wie wärs denn mal mit Initialisierung des Arrays. 🙄

    Ansonsten werden da zwängsläufig ziemlich zufällige
    Werte drin stehen. 😉



  • Hmm...sorry...mein fehler...muss wohl bissle konkreter werden...

    Ich hab am anfang ein char (zahl) in das ich ne zahl einlese (z.B. 9902).
    Ferner hab ich ein char (titel) in das ich über

    strcmp(titel,"Diagramm 1 ");
    

    einen Text reinkopier. Hintendran kleb ich über

    strcat(titel,zahl);
    

    die eingebene Zahl.
    Nun will ich die zahl auf ihre letzte ziffer hin überprüfen, ob diese gerade od. ungerade ist.

    wenn sie gerade ist, soll

    strcat(titel," ohne Pulser");
    

    durchgeführt werden

    wenn ungerade, dann

    strcat(titel," mit Pulser");
    

    Irgendiwe hängt er mir aber immer beides nacheinander dran,
    also "Diagramm 1 9902 ohne Pulser mit Pulser"

    Ich hab keinen Plan wieso 😕

    Thx



  • Ok habs gelöst...

    es warn die verdammtem == anstatt = in der if-Bed.

    SChande über mich...aber es iss ja auch montag 😉

    Sorry

    EOF



  • Machs halt einfach so, dass du, wie ich es beschrieben habe:

    char i[4];
    int x
    cin>>i;
    x = atoi(i);
    strcat(titel,i);
    if(x%2==0) strcat(titel," ohne Pulser");
    else strcat(titel," mit Pulser");
    

    Damit sollte es gehen, denk ich ma


Anmelden zum Antworten