Welches Zeichen

Ich soll jetzt ganz unten das Günstigste Ergebniss ausgeben. Aber was muss ich schreiben um von den drei kg1, kg2 und kg3 das günstigste auszugeben?


/* Érmittlung das günstigste Ergebniss */

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
float angebot1, angebot2, angebot3, listenpreis1, listenpreis2, listenpreis3, prozent1,
prozent2, prozent3, skonto2, skonto3, kg1, kg2, kg3, menge=0;

printf("Bitte geben sie die Menge ein die sie wollen:\n");
scanf("%f",&menge);

kg1 = menge/50*25.50;
if (menge>=5000)kg1=menge/50*25.50-menge/50*25.50/100*(3);


if (menge>=15000)kg2=menge/50*26.80-menge/50*26.80/100*(3);
kg2=kg2-kg2/100*(5);
if (menge<15000)kg2= menge/50*26.80-menge/50*26.80/100*(3);

if (menge>=3000) kg3=menge/50*26.45-menge/50*26.45/100*(3.5);
kg3=kg3-kg3/100*(2);
if (menge<3000) kg3=menge/50*26.45-menge/50*26.45/100*(2);




printf("\nBei der Menge:%10.2f Kg sind die Angebote\n Angebot 1: %10.2f\n Angebot 2: %10.2f\n Angebot 3: %10.2f\n" ,menge,kg1,kg2,kg3);
printf("\n\nDas Guenstigste angebot ist: %10.2f\n\n",kg1,kg2,kg3);
system("PAUSE");
}
 
wie wärs mit einem if-then-else?
das für alle 3 fälle würde das tun was du willst. in einer zeile im print so wie du es versuchst wird es nämlich vermutlich nicht gehen
 
Danke für die schnelle antwort.

Jetzt geht es! Kann man es noch eleganter schreiben?


int main(void)
{
float kg1, kg2, kg3, menge=0;

printf("Bitte geben sie die Menge ein die sie wollen:\n");
scanf("%f",&menge);

kg1 = menge/50*25.50;
if (menge>=5000)kg1=menge/50*25.50-menge/50*25.50/100*(3);


if (menge>=15000)kg2=menge/50*26.80-menge/50*26.80/100*(3);
kg2=kg2-kg2/100*(5);
if (menge<15000)kg2= menge/50*26.80-menge/50*26.80/100*(3);

if (menge>=3000) kg3=menge/50*26.45-menge/50*26.45/100*(3.5);
kg3=kg3-kg3/100*(2);
if (menge<3000) kg3=menge/50*26.45-menge/50*26.45/100*(2);




printf("\nBei der Menge:%10.2f Kg sind die Angebote\n Angebot 1: %10.2f\n Angebot 2: %10.2f\n Angebot 3: %10.2f\n" ,menge,kg1,kg2,kg3);

if (kg1<kg2 && kg1<kg3) printf ("\nIst das Guenstigste Angebot1: %10.2f\n",kg1);

if (kg2<kg1 && kg2<kg3) printf ("\nIst das Guenstigste Angebot2: %10.2f\n",kg2);

if (kg3<kg1 && kg3<kg2) printf ("\nIst das Guenstigste Angebot3: %10.2f\n",kg3);
system("PAUSE");
}
 
Ich würde noch aus den 3 if´s -> if else machen

So:
Code:
if (kg1<kg2 && kg1<kg3) printf ("\nIst das Guenstigste Angebot1: %10.2f\n",kg1);
else if (kg2<kg1 && kg2<kg3) printf ("\nIst das Guenstigste Angebot2: %10.2f\n",kg2);
else if (kg3<kg1 && kg3<kg2) printf ("\nIst das Guenstigste Angebot3: %10.2f\n",kg3);

Ohne die else werden alle if abgefragt, was ja unnötig wäre, wenn zB schon die erste Abfrage (kg1<kg2 && kg1<kg3) gültig ist.
 
Original von e5s3x
Ich würde noch aus den 3 if´s -> if else machen

So:
Code:
if (kg1<kg2 && kg1<kg3) printf ("\nIst das Guenstigste Angebot1: %10.2f\n",kg1);
else if (kg2<kg1 && kg2<kg3) printf ("\nIst das Guenstigste Angebot2: %10.2f\n",kg2);
else if (kg3<kg1 && kg3<kg2) printf ("\nIst das Guenstigste Angebot3: %10.2f\n",kg3);

Ohne die else werden alle if abgefragt, was ja unnötig wäre, wenn zB schon die erste Abfrage (kg1<kg2 && kg1<kg3) gültig ist.

dann kannst du es auch gleich noch kürzer machen ;)

Code:
if (kg1<kg2 && kg1<kg3) printf ("\nIst das Guenstigste Angebot1: %10.2f\n",kg1);
else if (kg2<kg3) printf ("\nIst das Guenstigste Angebot2: %10.2f\n",kg2);
else printf ("\nIst das Guenstigste Angebot3: %10.2f\n",kg3);

in der zweiten zeile kann kg1 ja nicht mehr das kleinste sein, wissen wir ja aus zeile 1, also aus der abfrage weglassen. und wenn wir in zeile 3 landen muss kg3 das kleinste sein, also kannst du dann auch direkt ohne abfrage ausgeben

oder noch kürzer (müsste eigentlich auch in c/c++ gehen):

Code:
float kg;
kg = (kg1<kg2 && kg1<kg3) ? kg1 : (kg2<kg3) ? kg2 : kg3;
printf ("\nIst das Guenstigste Angebot3: %10.2f\n",kg);

das kg speichert dabei halt den wert vom kleinsten. allgemein kannst du das so sehen:
(bedingung) ? wert_falls_bedingung_wahr : wert_falls_bedingung_falsch;
und das kannst du auch verschachteln.
 
Zurück
Oben