Sehr gute Lösung mit dem Switch !
Für den Alltag sollte es aber wirklich so aussehen:
Code:
if(preis<nicht_rabattfaehige_grenze) rabatt= 0.0;
else if(preis<rabattgrenze1) rabatt= hausnummer1;
else if ...
oder
Code:
#define RABATT_STUFEN 5
float preis,rabatt;
int i;
/* Array mit Preisgrenzen und Rabatten in Prozent */
float preis_rabatt[RABATT_STUFEN][2];
preis_rabatt[0][0]= 2000.0; /* alles zwischen 0 und 1999.99999 */
preis_rabatt[0][1]= 0.0; /* 0 Prozent */
preis_rabatt[1][0]= 3000.0; /* alles zwischen 2000 und 2999.99999 */
preis_rabatt[1][1]= 2.0; /* 2 Prozent */
preis_rabatt[2][0]= 4000.0; /* alles zwischen 3000 und 3999.99999 */
preis_rabatt[2][1]= 5.0; /* 5 Prozent */
preis_rabatt[3][0]= 5000.0; /* alles zwischen 4000 und 4999.99999 */
preis_rabatt[3][1]= 8.0; /* 8 Prozent */
preis_rabatt[4][0]= 5000.0; /* alles ab 5000 */
preis_rabatt[4][1]= 10.0; /* 10 Prozent */
if(preis_rabatt[RABATT_STUFEN-1][0]>=preis)
{ rabatt= preis_rabatt[RABATT_STUFEN-1][1]; }
else
{
for(rabatt=0.0,i=0;i<RABATT_STUFEN;i++)
{
if(preis_rabatt[i][0]>preis)
{ rabatt= preis_rabatt[i][1]; break; }
}
}
printf("Der Preis %f erlaubt %f Prozent Rabatt.\n"
"Somit ist der Rabatt reduzierte Preis: %f\n",preis,rabatt,preis - preis * rabatt);