Einzelnen Beitrag anzeigen
Alt 02.12.2003, 14:40   #6
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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);
kikakater ist offline   Mit Zitat antworten