int wert mit anderen vergleichen
-
hallo....
ich schreibe gerade ein programm das einen integertypen names max erzeugt...dieser soll vom hauptprogramm 3 zahlen eingelesen bekommen und übergeben....die größte zahl soll ausgegeben werden. ende des programms...ausgabe.kann ich das mit einern if-else-anweisung lösen? oder wie....kann ein integer typ denn überhaupt mehrere werte besitzen......bitte um hilfe
-
#define max(a,b) (((a) > (b)) ? (a) : (b)) ... big_one = max(c,max(a,b)); ...
-
Klar kannst du das - bei drei Werten allerdings mit mehreren if()s. Zum Vergleichen der Werte gibt es eine recht einfache Möglichkeit - Vergleichsoperatoren wie >, < etc (und Hilfsmakros ala "#define max(x,y) ((x)>(y)?(x):(y))").
-
CStoll schrieb:
bei drei Werten allerdings mit mehreren if()s.
du brauchst nur 2 ifs. mehr nicht.
-
also hab es mit 3 zahlen versucht...klappt nicht ganz
außerdem so wie ich es geschrieben habe ist der int max total nicht zu gebrauchen weil ich ja drei unabhängige werte einlese....die aufgabe is allerdings anders gestelltint max,a,b,c; printf("Bitte Wert für a eingeben: "); scanf("%i", &a); printf("Bitte Wert für b eingeben: "); scanf("%i", &b); printf("Bitte Wert für c eingeben: "); scanf("%i", &c); if(a >b,c) printf("Die größte Wert lautet: ", a); else if(b>a,c) printf("Die größte Wert lautet: ", b); else if(c>b,a) printf("Die größte Wert lautet: ", c);
-
Tomt0m schrieb:
if(a >b,c) printf("Die größte Wert lautet: ", a);
Ja, diese Bedingungen sind ja auch (technisch) Unsinn - informier dich mal, was der Komma-Operator macht. Du benötigst "if(a>b && a>c)..."
(oder - mit dem obengenannten Makro
printf("Der größte Wert lautet %d",max(a,max(b,c)));
)PS: Noch ein kleiner Fehler - wenn du Variablen mit printf() ausgeben willst, mußt du die entsprechenden Formatkennungen %d etc in den Formatstring einfügen.
-
Tomt0m schrieb:
[cpp]
if(a >b,c)das bingt nix, ist das gleiche wie if(c) d.h. der vergleich wird nicht ausgewertet. wenn du es ohne makro machen willst z.b.:
if (a > b) b = a; if (c > b) b = c;
der grösste wert ist danach in b.
-
so das is was ich hab....lässt sich kompelieren aber nichts passiert beim ausführen:
#include <stdio.h> int main() { int max(int a,int b,int c) { int max; printf("Bitte Wert für a eingeben: "); scanf("%i", &a); printf("Bitte Wert für b eingeben: "); scanf("%i", &b); printf("Bitte Wert für c eingeben: "); scanf("%i", &c); if(a > b && a > c) max = a; else if(b > a && b >c) max = b; else max = c; return max; } }
-
Hast du die Funktion max() tatsächlich lokal in der main()-Funktion definiert
? Wenn ja - welcher Compiler schluckt denn sowas?
Ansonsten: Du mußt diese Funktion natürlich auch aufrufen - und ihren Rückgabewert auswerten/ausgeben.
-
das heißt genau...???
sorry aber das programmieren ist neuland für mich
-
Tomt0m schrieb:
#include <stdio.h> int main() { // int max(int a,int b,int c) // { int max; printf("Bitte Wert für a eingeben: "); scanf("%i", &a); printf("Bitte Wert für b eingeben: "); scanf("%i", &b); printf("Bitte Wert für c eingeben: "); scanf("%i", &c); if(a > b && a > c) max = a; else if(b > a && b >c) max = b; else max = c; //return max; //} printf ("%d\n", max); }
-
Für einen Anfänger ist es wohl am einfachsten, du lässt das "int max(...)" weg und orientierst dich an deinem vorherigen Entwurf (abgesehen von den fehlerhaften if-Bedingungen sah der schon brauchbar aus).
Wie man seinen Quelltext in Funktionen unterteilt, kannst du als nächstes lernen
-
alles klar leute....danke für die nette hilfe
...das programm hab ich jeze ohne max-funktion erstma gemacht ...danke.....habt ihr vll ein gutes tutorial wo man funktionen unterteilt...möchte meine fehler schließlich nicht noch ma machen...
-
Such dir am besten ein C-Tutorial (hier im Forum gibt es oben einen Link [Tutorial] mit 7 C-Tutorials).
So lernst du am besten erst mal die Grundlagen von C. Mit Trial&Error eignest du dir nicht wirklich hilfreiches Wissen an.