![]() |
QuellCode, ich hasse, dass ich C/C++ oder die Logik noch nicht gut durchschaue!
@all
Kann mir bitte jemand helfen, habe folgendes Programm zusammen gebastelt, es soll umbedingt mit if und else gelöst werden (kein Case oder andere Hilfsmittel) ich habe das Struktogramm gemacht, da schien es mit einem Schreibtischtest zu funken, aber als ich dann das C/C++ Programm dazu tippselte, funkt es nicht! Zur Erklärung: Es sollen drei Zahlen eigelesen werden und dann die größte ausgegben werden. Die größte kann jetzt sein, die erste, die zweite, die dritte aber es können auch gleichgrosse vorkommen oder alle drei gleich gross sein: Der Source der im C/C++ nicht aber lt. Schreibtischtest und Struktogramm funkt! Ich glaube, ich habe mich mit den If's und Else's vertan brauche diese aber unbedingt: #include <conio.h> #include <stdio.h> #include <stdlib.h> void main () { int a,b,c; printf ("(A)Erste Zahl eingben: "); scanf ("%d",&a); printf ("(B)Zweite Zahl eingben: "); scanf ("%d",&b); printf ("(C)Dritte Zahl eingben: "); scanf ("%d",&c); if (a=b=c) printf ("Die erste Zahl %d und die zweite Zahl %d und die dritte Zahl %d sind gleich gross!",a,b,c); else if (a>b); if (a>c); printf ("Die Zahl %d ist die groesste Zahl",a); else if (a=c); printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,c); else printf ("Die Zahl %d ist die groesste",c); else if (a=b); printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,b); else if (c>b) printf ("Die Zahl %d ist die groesste Zahl",c); else if (c=b) printf ("Die Zahl %d und die Zahl %d sind gleich groß",b,c); else printf ("Die Zahl %d ist die groesste Zahl",b); } Brauche das noch heute am Abend für das Kolleg Spengergasse und bin wirklich im Zeitstress! Mit freundlichen Grüßen Coolbininet |
Der Vergleichsoperator ist "==" nicht "=" !!!
Du machst hier keinen Vergleich der Variablen, du weist hier etwas zu. Ach ja, und der Strichpunkt hinter jedem if gehört dort auch nicht hin, wie es ausschaut. Viel Erfolg, Batigol |
Frage konkretisiert!
@batigol1860
Aber die Logik, kann die wenigstens stimmen? mfg Coolbininet |
das mit den 2 if anweisungen ist auch net richtig glaub ich
solltest durch ein and verbinden und warum verwendest nicht elseif? das macht das ganze übersichtlicher und kürzer |
jaja...
hinter if den strichpunkt weg!
schreib %i statt %d -> Integer |
Re: QuellCode, ich hasse, dass ich C/C++ oder die Logik noch nicht gut durchschaue!
Zitat:
|
Dein Programm ist auch logisch nicht ganz richtig!
Die Zeilen if (a=b); printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,b); gehören vor dem letzen else! Sonst gibt er zb bei der eingabe von a=1, b=1, c=2 "Die Zahl 1 und die Zahl 1 sind gleich groß" aus. Korrigierte Version: Code:
if (a==b && a==c) Code:
if (a==b && a==c) |
Tipp 1: Benutz Klammern und Einrückungen, auch wenn es nur um einen Befehl nach dem IF handelt - das ganze wird überscihttlicher und fuer Dich leichter les- und debugbar. Dann schnallst Du auch die if/else-Konstruktionen.
Tipp 2: Schalt dei Kompilerwarning auf die höchste Stufe. Damit findest Du Zuweisungen wie "(a=b)" in IF-Bedungungen, wenn es eigentlich ein Verglecih sein sollte. |
Code:
/* 3vgl.c */ |
tschuldigung wegen dem elseif
gibts in c nicht aber wo anders ;) @kikakater was bedeutet zb if(!r3 ...?? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag