[HILFE]: If-Schleife wird einfach übersprungen

Schnelle objektorientierte, kompilierende Programmiersprache.
Shijury
Beiträge: 12
Registriert: Fr Mär 18, 2011 12:22 pm

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Shijury » Fr Mär 18, 2011 1:28 pm

:P
Bitteschön!!
hab ja eh nur an der IF-Funktion rumgeschraubt, der Rest is wie im Ersten Post :D

Code: Alles auswählen

  printf("Bitte ueberpruefen Sie Ihre Daten noch einmal!\n");
    printf("Sie heissen %s\nsind %d Jahre alt\nwohnen in %s\nin der %s %s.\n\n",name,alter,ort,strasse,nummer);
    printf("Sind Ihre Daten korrekt? (y/n)\n");
     scanf("%c\n",&c);
     
    if(c='y')
      {
         printf("Herzliches Dankeschoen fuer Ihre Anmeldung.\n");
      }
      
    else {
         printf("Welche Daten moechten Sie ueberarbeiten?\n");
         }

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Dirty Oerti » Fr Mär 18, 2011 1:32 pm

Vergleichen mit "==" (also doppelten Gleichheitszeichen)
Du hast hier innerhalb deiner if Abfrage eine Zuweisung.

Code: Alles auswählen

if (c == 'y')
Nachtrag:
Worauf du dringend achten solltest ist, dass du deinen Code besser formatierst.

Bei jedem "{" ist die nachfolgende Zeile um eine feste Anzahl an Leerzeichen (z.B. immer 4) eingerückt, bei jedem "}" machst du die Einrückung rückgängig:

Code: Alles auswählen

void funktion (int parameter)
{
    printf("Ich bin eine Funktion\n");
    if (parameter == 0)
    {
        printf("Der Parameter ist gleich null\n");
    } else
    {
        printf("Der Parameter ist nicht gleich null\n");
    }
}
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Shijury
Beiträge: 12
Registriert: Fr Mär 18, 2011 12:22 pm

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Shijury » Fr Mär 18, 2011 1:38 pm

wenn ich == schreibe funktioniert es wieder gar nicht, mit einem einfachen funktioniert es wenigstens beim y...

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Dirty Oerti » Fr Mär 18, 2011 1:44 pm

Was heißt, "es funktioniert gar nicht" ?

Mit einem einfachen "=" funktioniert es definitiv NICHT!
Wenn du ein einfaches Gleichheitszeichen verwendest passiert das folgende:

Code: Alles auswählen

if (c = 'y')
Zunächst wird das innerhalb der runden Klammern ausgewertet.
Dort steht:

Code: Alles auswählen

c = 'y'
Das ist eine Zuweisung, sprich der Wert 'y' wird in die Variable mit dem Namen "c" geschrieben.
Der Wert, der zuvor in der Variablen "c" gespeichert war, ist damit verloren (das war deine Eingabe über scanf)

Die Zuweisung gibt auch gleichzeitig den zugewiesenen Wert "zurück".
Aus

Code: Alles auswählen

c = 'y'
wird für den Compiler also folgendes: Es gilt also noch das folgende auszuwerten:

Code: Alles auswählen

if ('y')
Der Wert 'y' ist nicht gleich 0, damit ist er auch nicht false, also true.
Folge: Der if-Block wird ausgeführt.

Das ganze hat aber nichts mit deiner Eingabe zu tun, die hast du vorher schon verloren :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Xin » Fr Mär 18, 2011 1:45 pm

Ich schrieb schon vor einigen Postings, dass

Code: Alles auswählen

if( c == 'y' )
die Bedingung ist.

Abschreiben, testen, wenn es dann nicht funktioniert sehen wir darauf basierend weiter.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Shijury
Beiträge: 12
Registriert: Fr Mär 18, 2011 12:22 pm

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Shijury » Fr Mär 18, 2011 1:50 pm

wie du es erklärst ist es ja auch plausibel!!
Jetzt das ABER:
Wenn ich == schreibe kommen if UND else heraus, er gibt also beide Zeilen aus.
Wenn ich aber = schreibe dann funktioniert die IF-Schleife nur bei y aber nicht bei n.

wiegesagt ich versteh schon wie du das ganze erklärst, nur leider scheint es so nicht zu klappen...

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Dirty Oerti » Fr Mär 18, 2011 1:53 pm

Shijury hat geschrieben:wie du es erklärst ist es ja auch plausibel!!
Jetzt das ABER:
Wenn ich == schreibe kommen if UND else heraus, er gibt also beide Zeilen aus.
Wenn ich aber = schreibe dann funktioniert die IF-Schleife nur bei y aber nicht bei n.

wiegesagt ich versteh schon wie du das ganze erklärst, nur leider scheint es so nicht zu klappen...
Das ist komisch.

Klären wir erstmal, dass die Rahmenbedingung erfüllt und gut sind:

Wie kompilierst du deinen Code?
Arbeitest du mit einer IDE? Wenn ja, mit welcher?
Welchen Compiler verwendest du (auf welchem Betriebssystem arbeitest du) ?

:)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Dirty Oerti » Fr Mär 18, 2011 1:55 pm

Sekunde:
Wenn ich == schreibe kommen if UND else heraus, er gibt also beide Zeilen aus.
Er gibt BEIDE Zeilen aus?
Sprich die Ausgabe lautet:
Herzliches Dankeschoen fuer Ihre Anmeldung.
Welche Daten moechten Sie ueberarbeiten?
:?:
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Shijury
Beiträge: 12
Registriert: Fr Mär 18, 2011 12:22 pm

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Shijury » Fr Mär 18, 2011 2:03 pm

arbeiten tu ich mit DEV C++
hier nochmal der GESAMTE code (mit include)!!!:

Code: Alles auswählen

#include <cstdlib>
#include <iostream>


int main(int argc, char *argv[])

{
    int alter;
    char name[40], ort[80], strasse[100], nummer[10];
    char c,y,n;
    
    printf("Hallo in unserem ersten Programm\n\n");
    printf("Es sollen Ihre Daten aufgenommen werden.\n");
    
    printf("Wie ist Ihr Vorname?\n");
     scanf("%s",name);
    
    printf("\nUnd wie alt sind Sie?\n");
     scanf("%d",&alter);
     
    printf("\nIn welchem Ort wohnen Sie?\n");
     scanf("%s",ort);
     
    printf("\nUnd in welcher Strasse wohnen sie?\n");
     scanf("%s",strasse);
     
    printf("\nNennen sie zuletzt noch die Hausnummer.\n");
     scanf("%s",nummer);
     
    printf("Bitte ueberpruefen Sie Ihre Daten noch einmal!\n");
    printf("Sie heissen %s\nsind %d Jahre alt\nwohnen in %s\nin der %s %s.\n\n",name,alter,ort,strasse,nummer);
    printf("Sind Ihre Daten korrekt? (y/n)\n");
     scanf("%c\n",&c);
     
    if(c='y')
      {
         printf("Herzliches Dankeschoen fuer Ihre Anmeldung.\n");
      }
      
    else {
         printf("Welche Daten moechten Sie ueberarbeiten?\n");
         }
     
         
    system("PAUSE");
    return EXIT_SUCCESS;
}

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [HILFE]: If-Schleife wird einfach übersprungen

Beitrag von Xin » Fr Mär 18, 2011 2:04 pm

Keine Rumraterei mehr, bevor ein Code da ist, der so reagieren soll.

Beschreibung des Problems, Beschreibung der Erwartung und der Code, der das Problem aufzeigt.

Edit:

Code: Alles auswählen

 if(c='y')
Die Frage ist mehrfach beantwortet worden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten