![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Hero
![]() |
![]() @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
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst! Website RI Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden. |Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker| If you want to see the Sky, fuck a Duck and learn to fly! Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten! Möge die MACHT mit uns sein! |
![]() |
![]() |
![]() |
#2 |
Veteran
![]() |
![]() 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 |
![]() |
![]() |
![]() |
#3 |
Hero
![]() |
![]() @batigol1860
Aber die Logik, kann die wenigstens stimmen? mfg Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst! Website RI Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden. |Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker| If you want to see the Sky, fuck a Duck and learn to fly! Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten! Möge die MACHT mit uns sein! |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() |
![]() 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
____________________________________
//---< wizo >---\\\\ |
![]() |
![]() |
![]() |
#5 |
Senior Member
![]() |
![]() hinter if den strichpunkt weg!
schreib %i statt %d -> Integer
____________________________________
\"imagination is more important than knowledge\" Albert Einstein \"er ist tot jim\" |
![]() |
![]() |
![]() |
#6 | |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Zitat:
|
|
![]() |
![]() |
![]() |
#7 |
Master
![]() |
![]() 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) 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); Code:
if (a==b && a==c) printf ("Die erste Zahl %i und die zweite Zahl %i und die dritte Zahl %i sind gleich gross!\n",a,b,c); else { if(a>=b) { if (a>c) printf("Die Zahl %i ist die größte Zahl\n", a); else if(a<c) printf("Die Zahl %i ist die größte Zahl\n", c); else printf("Die zahl %i und die zahl %i sind gleich groß\n", a,b); } else { if (b>c) printf("Die Zahl %i ist die größte Zahl\n", b); else if(b<c) printf("Die Zahl %i ist die größte Zahl\n", c); else printf("Die zahl %i und die zahl %i sind gleich groß\n", a,c); } }
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#8 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() 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.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#9 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Code:
/* 3vgl.c */ #include <stdio.h> int main(int argc,char *argv[]) { int a,b,c,r1,r2,r3; printf("\n----------------------------------------------------------------------\n" "Programm Zahlenvergleich 3VGL: Bitte geben sie drei Zahlen (a,b,c) ein\n" "----------------------------------------------------------------------\n\n"); printf("Eingabe von a .. "); scanf("%d",&a); printf("Eingabe von b .. "); scanf("%d",&b); printf("Eingabe von c .. "); scanf("%d",&c); printf("\n\n----------------------------------------------------------------------\n" "Ergebnis:\n" "----------------------------------------------------------------------\n\n"); r1=a-b; r2=a-c; r3=b-c; if(r1>0 && r2>0) { printf("a ist die größte Zahl\n"); if(r3) printf("%c ist die mittlere Zahl und %c die kleinste\n", (r3>0) ? 'b' : 'c', (r3>0) ? 'c' : 'b' ); else printf("b und c sind gleich groß und kleiner als a\n"); } else if(r1<0 && r3>0) { printf("b ist die größte Zahl\n"); if(r2) printf("%c ist die mittlere Zahl und %c die kleinste\n", (r2>0) ? 'a' : 'c', (r2>0) ? 'c' : 'a' ); else printf("a und c sind gleich groß und kleiner als b\n"); } else if(r2<0 && r3<0) { printf("c ist die größte Zahl\n"); if(r1) printf("%c ist die mittlere Zahl und %c die kleinste\n", (r1>0) ? 'a' : 'b', (r1>0) ? 'b' : 'a' ); else printf("a und b sind gleich groß und kleiner als c\n"); } else if(!r1 && r2) printf("a und b sind gleich groß und größer als c\n"); else if(!r2 && r3) printf("a und c sind gleich groß und größer als b\n"); else if(!r3 && r1) printf("b und c sind gleich groß und größer als a\n"); else printf("a, b und c sind gleich groß\n"); printf("\na = %d\nb = %d\nc = %d\n",a,b,c); return 0; } |
![]() |
![]() |
![]() |
#10 |
Inventar
![]() |
![]() tschuldigung wegen dem elseif
gibts in c nicht aber wo anders ![]() @kikakater was bedeutet zb if(!r3 ...??
____________________________________
//---< wizo >---\\\\ |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|