![]() |
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 ...?? |
@wizo: brauchst dich nicht entschuldigen wegen dem elseif ;) , zu dem operator !:
Der hat die Bedeutung der logischen Verneinung, also: Wenn man ein Beispiel verwendet: (x==y) ... Verneinung: (x!=y), zweite Situation: (x) bedeutet wahr wenn x ungleich 0 ist (!x) bedeutet wahr wenn x not ungleich sprich gleich 0 ist So, das wär's wieder einmal ... mfg Kikakater |
c ist schon cool was man da in kurz schreibweise realisieren kann
eigentlich war es eh irgendwie klar wenn man drüber nachdenkt und den code verkürzt |
ich hatte so was ähnliches letztes Jahr rekursiv gelöst, kriegs aber jetzt nicht hin, werd versuchen es dir bis morgen fertig zu stellen ;-)
|
#include<stdio.h>
#include<conio.h> int a=0,b; int getbiggest(int d); void main(){ printf(„%d“,getbiggest(kleinsterIntegerwert)); } int getbiggest(int d){ a++; printf(„Bitte %d . Zahl eingeben“); scanf(„%d“, b); if(b>d){ return getbiggest(b); } if(b<d){ return getbiggest(d); } } |
Zitat:
VHDL lässt Grüssen ;) jaja, das verwirrt schon *g* |
ich schaff es 1. im Moment irgendwie nicht das mit dem Fall das 2, oder 3 gleich sind, oder dürft ihr auch arrays nützen?
2) Wieso will der meine Leerzeichen zum Einrücken nicht, habs extra aus msWord rüberkopiert, und jetzt so eine schiache Wurscht :( :( :( |
na klar das du das wissen mußt
und hast natürlich recht |
Zitat:
Also vor deinem source [code] und nachher [/ CODE]. (ohne dem leetzeichen!) lg |
Warum so kompliziert?
Code:
#include <stdio.h> --edit--- achja, und wenn man die namen der variablen braucht: Code:
int a, b, c, x; |
so ich hätte es jetzt fertig, aber wie ich sehe gibt es hier viel kürzere Versionen, bei Interesse kann ich es dir aber trotzdem schicken...
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag