Kezdőoldal » Számítástechnika » Programozás » If else problémában valaki...

If else problémában valaki tud segíteni?

Figyelt kérdés

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?



2017. dec. 9. 23:09
 1/3 anonim ***** válasza:
100%
Számold ki, hogy mennyit kell fizetnie. Mondjuk ha 7-et ír be, akkor ugye eljut az utolsó else ágba, ahol meg kiíratod ezt a (7-2)*400+450+500 Forintot.
2017. dec. 9. 23:27
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
84%

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{...}

2017. dec. 9. 23:32
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

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.

2017. dec. 10. 00:21

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!