[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 2:04 pm

@dirty oerti
genau, das is ja das was ich nicht verstehe...

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 2:16 pm

Gut, aus

Code: Alles auswählen

if(c='y')
machst du nun

Code: Alles auswählen

if (c == 'y')
Welche Ausgabe/Fehler bekommst du denn?

Btw: Dev C++ ist stark veraltet, du solltest dir eine andere IDE suchen oder (finde ich für den Einstieg auf jeden Fall zu empfehlen, und auch ich programmiere nicht anders) einfach nur mit einem Editor und der Konsole arbeiten.
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 2:21 pm

Das widerspricht dem Quelltext - welcher sich nichtmals brauchbar kompilieren lässt.

Heißt, dass Du etwas verkehrt machst, was Du hier nicht beschreibst.
Alternativ darfst Du mir bei einer TeamViewer Sitzung das Gegenteil beweisen, nachdem Du die vorherigen Ratschläge in Deinen Quelltext eingearbeitet hast. Also lies am besten den Thread nochmal von Anfang an durch, befolge die Ratschläge und wenn etwas unerwartetes passiert, wirfst Du den Code hier rein und fragst nach. Solange da if( c = 'y' ) steht, fühle ich mich veralbert.
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 2:23 pm

ok. Was kannst du mir denn empfehlen? Fange im Mai in Regensburg an Informatik zu studieren (FH). Weißt du was die so benutzen an der FH?

Es kommt ja eben keine Fehlermeldung! Das Programm läuft ohne einen Mucks zu machen, nur die Ausgabe läuft halt irgendwie falsch...

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:24 pm

Shijury hat geschrieben:ok. Was kannst du mir denn empfehlen?
http://www.proggen.org/doku.php?id=c:software
http://www.proggen.org/doku.php?id=c:compiler:start
Shijury hat geschrieben:Fange im Mai in Regensburg an Informatik zu studieren (FH). Weißt du was die so benutzen an der FH?
Java.

Lern trotzdem C.
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 2:29 pm

ok dann steig ich mal um^^ hatten dev c++ halt in der schule und den hab ich dann von meiner Festplatte noch rausgekramt weil ich dachte des wär immernoch ok^^

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 2:30 pm

Okay, ich hab mich da nun selbst mal ran gemacht.
Folgender Quellcode (es ist das "=" zu "==" ersetzt worden):

(Außerdem programmierst du C, also benutz doch auch die C Header!)

Code: Alles auswählen

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    int alter;
    char name[40], ort[80], strasse[100], nummer[10];
    char c;

    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",&c);

    printf("c == %c",c); //Debug Ausgabe
    if (c == 'y')
    {
        printf("Herzliches Dankeschoen fuer Ihre Anmeldung.\n");
    } 
    else
    {
        printf("Welche Daten moechten Sie ueberarbeiten?\n");
    }
    //system("PAUSE");
    return 0;
}
Funktioniert bei mir definitiv NICHT.
Folgendes funktioniert aber:

Code: Alles auswählen

scanf("%c",&c);
ersetzen durch:

Code: Alles auswählen

scanf("%s",&c);
Was nicht funktioniert:

Code: Alles auswählen

scanf("%c\n",&c);
Erwähnte ich schon einmal das ich scanf hasse?
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 2:35 pm

scanf( "%c", &c ); funktioniert, aber Du musst vorher den Eingabebuffer leeren, sonst hast Du vom letzten %d noch das Enter im Inputbuffer, dass dann direkt in %c gelesen wird.
Dirty Oerti hat geschrieben:Erwähnte ich schon einmal das ich scanf hasse?
Ich erwähnte es noch nicht.
Ich hasse scanf() (siehe Fehlerquellen) auch. :-)
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.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

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

Beitrag von nouseforname » Fr Mär 18, 2011 3:08 pm

scanf() ist ok wenn man einfach immer den "Return" mit abfängt.^^ Aber wer will das schon. Es ist nunmal das was man als erstes lernt. War auch bei mir so. hab dann irgendwann die Nachteile gesehen. Trotzdem hat es eine weile gedauert bis die anderen Methoden dran kamen. "getc(), gets() usw."

Ich finde es aber nicht schlimm so anzufangen und irgendwann selbst zu merken dass es auch besser geht.

Code: Alles auswählen

scanf("%c %c", &c, &return);

canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

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

Beitrag von canlot » Fr Mär 18, 2011 5:20 pm

Funktioniert bei mir wenn ich denn Tastaturpuffer leere.
scanf ist nicht immer Empfehlenswert.

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>


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

{
    int alter;
    char name[40], ort[80], strasse[100], nummer[10];

    char c;
    char y;
    char 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");
    fflush(stdin);
     scanf("%c",&c);

    if(c =='y')
      {
         printf("\nHerzliches Dankeschoen fuer Ihre Anmeldung.\n");
      }

    else {
         printf("\nWelche Daten moechten Sie ueberarbeiten?\n");
         }


    system("PAUSE");
    return EXIT_SUCCESS;
}
Unwissenheit ist ein Segen

Antworten