If else problémában valaki tud segíteni?
Nemrég belevágtam a programozásba, mert eléggé érdekesnek tartom, de máris elakadtam. Találtam is egy jó oldalt (InfoC - BME Programozás), onnan van a feladat.
Egy turkálóban minden póló darabja 500 Ft. Ha egy vásárlás során valaki több darabot is vesz, a második ára már csak 450 Ft, a harmadik pedig 400 Ft, de a negyedik és további darabok is ennyibe kerülnek, tehát az ár a harmadik vásárlása után már nem csökken tovább.
Írj programot, amely a vásárolt pólók darabszámának ismeretében megmondja, hogy mennyit fizet a vásárló!
#include <stdio.h>
int main(void){
int polo;
int darab;
printf("Ird be, hany polot akarsz venni!\nAz elso polo 500 Ft, a masodik 450, a harmadik 400 es innentol minden polo 400 Ft!\n\n");
scanf("%d", &darab);
polo=500;
if(darab==1){
printf("Egy polo ara %d Ft!\n", polo);
}else if(darab==2){
printf("2 polo ara mar %d Ft!\n", polo+450);
}else{
printf("Ennyi polo ara pedig %d Ft!\n",);}
return 0;
}
Ezt sikerült alkotnom eddig, de az esle ágnál teljesen elakadtam. Valaki tudna segíteni benne?
Igazából if-else helyett ezt lehetne ciklusosan is csinálni.
int curr_price = 500;
int polo = 0;
while(darab>0)
{
if(curr_price > 400)
{
polo+= curr_price;
curr_price-=50;
darab--;
}
else
{
polo+= darab*400;
darab=0;
}
}
return polo;
És akkor így egy ciklussal adod össze, minden poló után csökkented 50-el az aktuális árat, illetve ha elérted a 400-as padlót, akkor a hátralévő darabszámot megszorozva 400-al hozzácsapod a végösszeghez.
Esetleg lehet switch-et használni.
switch(darab)
{
case 0 : polo = 0; break;
case 1 : polo = 500; break;
case 2 : polo = 950; break;
default : polo = 400*(darab-2) + 950; break;
}
return polo;
Ez kb azzal ekvivalens, mintha azt csinálnád, hogy
if(darab==0) {...}
else if(darab==1) {...}
else if(darab==2) {...}
else{...}
Köszönöm a válaszokat, kipróbáltam mindet:)
Itt most az if-else-szel való megoldás volt a cél, de azért köszönöm a fejtágítást:)
Ment a zöld kéz mindkettőtöknek.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!