Entscheidungen mit if und else

Schnelle objektorientierte, kompilierende Programmiersprache.
beginner
Beiträge: 6
Registriert: Mo Jan 18, 2016 3:36 pm

Entscheidungen mit if und else

Beitrag von beginner » Mo Jan 18, 2016 3:54 pm

Hallo Leute,

Ich bin blutiger Anfänger und brauche dringend Hilfe mein bisheriges Programm:

Code: Alles auswählen

#include <stdio.h>
 
int main( void ) {

 
 
 int zahl1=0;
 float zahl2=0;

 
 printf("\n\n\tUebungen zu Entscheidungen\n");
 

 
 printf("\n\tgib eine zahl ein:");
 scanf("%d",&zahl1);
 
 if (zahl1){printf("\nzahl ungleich 0\n");}
 else {printf("zahl ist gleich 0\n");}
 
 printf("\ngib eine zahl ein:");
 scanf("%f",&zahl3);
 
 if (zahl2 - 4) {
	 printf("zahl gleich 4");
	 }
	 
	 else {
		 printf("\nzahl ungleich 4\n");
		 }

 
  return 0;
}

Der erste Teil Funktioniert jedoch der 2te nicht (er gibt immer gleich 4 aus). Habt Ihr eine Idee?

Liebe Grüße

Benutzeravatar
GMonk
Beiträge: 5
Registriert: Mo Dez 21, 2015 1:41 pm

Re: Entscheidungen mit if und else

Beitrag von GMonk » Mo Jan 18, 2016 4:05 pm

Hallo,

Wenn ich das richtig verstanden habe, möchtest bei der zweiten if-Abfrage überprüfen, ob deine Zahl gleich 4 ist. Du überprüfst aber ob deine Zahl ungleich 4 ist. Denn nur wenn du 4 als zweite Zahl eingeben würdest hättest du:

zahl2 - 4 = 4 - 4 = 0 ==> else-Zweig wird ausgeführt.

Vertausche in deiner zweiten if-else-Abfrage einfach die beiden printf und du solltest das gewünschte Ergebnis erhalten.

beginner
Beiträge: 6
Registriert: Mo Jan 18, 2016 3:36 pm

Re: Entscheidungen mit if und else

Beitrag von beginner » Mo Jan 18, 2016 4:23 pm

Vielen Dank für die schnelle Antwort hat sehr geholfen!

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

Re: Entscheidungen mit if und else

Beitrag von Xin » Mo Jan 18, 2016 5:38 pm

Moin 'Beginner'.

Das mit dem Namen soll wohl kein Dauerzustand werden, hm? Bißerl kreativer und nachhaltiger hätte man den schon aussuchen können ;)
beginner hat geschrieben:Ich bin blutiger Anfänger und brauche dringend Hilfe mein bisheriges Programm:

Code: Alles auswählen

  if (zahl2 - 4) 
  {
    printf("zahl gleich 4");
  }
  else 
  {
    printf("\nzahl ungleich 4\n");
  }
 
  return 0;
}
Der erste Teil Funktioniert jedoch der 2te nicht (er gibt immer gleich 4 aus). Habt Ihr eine Idee?
Zum einen: Bitte immer Quelltext sauber formatieren.

Zum anderen: Was tust Du: Du ziehst 4 von der Zahl ab, das ergibt 0 und 0 ist "falsch", also schreibt er "zahl ungleisch 4", wenn die Zahl 4 ist.
Soweit hat GMonk das auch schon beschrieben. Aber Du tust auch nicht, was Du tun willst, sondern Du subtrahierst, obwohl Du vergleichen möchtest. Dein Quelltext beschreibt also nicht das, was du tun willst.

Sagt man, was man tun will, dann passt das auch:

Code: Alles auswählen

  if (zahl2 == 4)   // Test auf Gleichheit, statt Subtraktion.
  {
    printf("zahl gleich 4");
  }
  else 
  {
    printf("\nzahl ungleich 4\n");
  }
 
  return 0;
}
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.

beginner
Beiträge: 6
Registriert: Mo Jan 18, 2016 3:36 pm

Re: Entscheidungen mit if und else

Beitrag von beginner » Mo Jan 18, 2016 7:28 pm

Danke für die Antwort Xin.

Mal sehen ob sich das mit dem 'Beginner' ändern lässt. :|
Was meinst du mit Quelltexte sauber formatieren?

Ich habe noch einen 2ten Versuch gemacht mit einem Zeichenvergleich-funktioniert leider nicht mit "ist gleich wie" was muss hier verwendet werden? Und wieso muss ich eigentlich immer 2 mal scanf schreiben?

Code: Alles auswählen

printf("\n\n\tgib einen buchstaben ein:");
 scanf("%c",&buchstabe);  scanf("%c",&buchstabe);
 
 if (buchstabe == 'a') {printf("\nbuchstabe ist gleich a\n");}
 else {printf("\nbuchstabe ist ungleich a\n");}
 
lg

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

Re: Entscheidungen mit if und else

Beitrag von Xin » Mo Jan 18, 2016 7:52 pm

beginner hat geschrieben:Mal sehen ob sich das mit dem 'Beginner' ändern lässt. :|
Vermutlich nur über über mich.
beginner hat geschrieben:Was meinst du mit Quelltexte sauber formatieren?
Sauber einrücken.
beginner hat geschrieben:Ich habe noch einen 2ten Versuch gemacht mit einem Zeichenvergleich-funktioniert leider nicht mit "ist gleich wie" was muss hier verwendet werden? Und wieso muss ich eigentlich immer 2 mal scanf schreiben?
Einmal scanf reicht. Gegenfrage: Warum glaubst Du, dass Du es zweimal schreiben müsstest? ^^
beginner hat geschrieben:

Code: Alles auswählen

printf("\n\n\tgib einen buchstaben ein:");
 scanf("%c",&buchstabe);  scanf("%c",&buchstabe);
 
 if (buchstabe == 'a') {printf("\nbuchstabe ist gleich a\n");}
 else {printf("\nbuchstabe ist ungleich a\n");}
 
Welcher Datentyp hat 'buchstabe' und und warum lässt Du Dir Buchstabe nicht einfach mal ausgeben:

Code: Alles auswählen

 else {printf("\nbuchstabe ist ungleich a: %c - %d\n", buchstabe, buchstabe );}
Einmal als Buchstabe und einmal als Zahl. Könnte mir vorstellen, dass das Hinweis liefert.
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.

beginner
Beiträge: 6
Registriert: Mo Jan 18, 2016 3:36 pm

Re: Entscheidungen mit if und else

Beitrag von beginner » Mo Jan 18, 2016 8:22 pm

Danke für die Antwort

wenn ich scanf nur einmal schreibe fragt mich das Programm nicht nach dem buchstaben. :?

buchstabe hatt den Datentyp char-ich habe aber char -buchstabe='void'- geschrieben ich glaube das war der Fehler mit -char buchstabe='1'- funktioniert es jetzt

lg

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

Re: Entscheidungen mit if und else

Beitrag von Xin » Mo Jan 18, 2016 8:39 pm

beginner hat geschrieben:Danke für die Antwort

wenn ich scanf nur einmal schreibe fragt mich das Programm nicht nach dem buchstaben. :?
Also drückst Du return für das erste scanf()? ^^

Mach das lieber so:

Code: Alles auswählen

printf("\n\n\tgib einen buchstaben ein:");
fflush( stdout );
scanf("%c",&buchstabe);
Siehe fflush.
beginner hat geschrieben:buchstabe hatt den Datentyp char-ich habe aber char -buchstabe='void'- geschrieben ich glaube das war der Fehler mit -char buchstabe='1'- funktioniert es jetzt
Verstehe ich nicht, macht aber nix, wenn's funktioniert. ^^
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.

beginner
Beiträge: 6
Registriert: Mo Jan 18, 2016 3:36 pm

Re: Entscheidungen mit if und else

Beitrag von beginner » Di Jan 19, 2016 8:19 pm

Ok verstehe- :D

ich probiere gerade das "Schachteln" von Entscheidungen

Code: Alles auswählen

if (zahl3>0){
	
	if (zahl3 < 18){printf("zahl '%d' kleiner als 18", zahl3;)}
	
	else {printf("zahl'%d' größer als 18", zahl3);} 
	
	}
 
 else{
	 if (zahl3 > -12){printf("zahl '%d' ist größer als -12", zahl3);}
	 
	 else {printf("zahl'%d' ist kleiner als -12", zahl3);}
	 
	 }

nun meint das Programm das ein',' fehlt-ich weiß jedoch nicht wo im Tutorial war auch keines Gesetzt

lg

Benutzeravatar
GMonk
Beiträge: 5
Registriert: Mo Dez 21, 2015 1:41 pm

Re: Entscheidungen mit if und else

Beitrag von GMonk » Di Jan 19, 2016 9:21 pm

Du hast bei der zweiten if-Verzweigung nach dem printf das Semikolon falsch gesetzt. Vielleicht liegt es daran.
Bei dir ist es innerhalb der Klammer, aber es gehört außerhalb der Klammer hin.

Du hast...

Code: Alles auswählen

if (zahl3 < 18) { 
  printf("zahl '%d' kleiner als 18", zahl3;)
}
Richtig wäre... :)

Code: Alles auswählen

if (zahl3 < 18) {
 printf("zahl '%d' kleiner als 18", zahl3);
}

Antworten