Porez – rešenje
Objašnjenje rešenja
Korisnik najpre unosi platu izraženu u dinarima. Da bismo platu mogli da uporedimo sa pragom od 1000 evra, potrebno je da je preračunamo u evre. U ovom zadatku koristi se fiksni kurs 1 EUR = 117 RSD.
Plata u evrima dobija se deljenjem plate u dinarima kursom:
plataEUR = plataDin / kurs
Zatim se pomoću naredbe if-else proverava iznos plate u evrima. Ako je plata veća ili jednaka 1000 evra, porez iznosi 20% plate. U suprotnom, porez iznosi 15% plate. Važno je primetiti da uslov u kodu glasi plataEUR >= 1000, što znači da se stopa od 20% primenjuje i kada plata iznosi tačno 1000 evra.
U ovom primeru izračunava se procenat od cele plate, a ne samo od dela plate koji prelazi 1000 evra. Kurs je unapred zadat u programu i ne preuzima se sa interneta.
Rešenje u programskom jeziku C
#include <stdio.h>
int main(void)
{
double plataDin, plataEUR, porez;
const double kurs = 117.0;
printf("Unesi platu u dinarima:\n");
// Provera da li je unos uspešno obavljen.
if (scanf("%lf", &plataDin) != 1 || plataDin < 0)
{
printf("Neispravan unos plate.\n");
return 1;
}
// Pretvaranje plate iz dinara u evre.
plataEUR = plataDin / kurs;
// Izbor poreske stope u zavisnosti od plate u evrima.
if (plataEUR >= 1000.0)
{
porez = 0.20 * plataEUR; // Porez je 20% plate.
}
else
{
porez = 0.15 * plataEUR; // Porez je 15% plate.
}
printf("Plata u evrima iznosi %.2f EUR.\n", plataEUR);
printf("Porez iznosi %.2f EUR.\n", porez);
return 0;
}
Objašnjenje važnih delova programa
doublese koristi zato što plata, kurs i izračunati porez mogu imati decimalni deo.const double kurs = 117.0;definiše konstantu kursa koji se koristi tokom izvršavanja programa.scanf("%lf", &plataDin)učitava platu. Provera povratne vrednosti funkcije i zabrana negativne plate sprečavaju računanje sa neispravnim unosom.plataDin / kurspretvara dinare u evre.if-elsebira jednu od dve poreske stope. Pošto se koristi jedna naredbaif-else, izvršava se samo jedna od dve grane.%.2fprikazuje rezultat sa dve cifre iza decimalne tačke.
Primer 1: plata je veća od 1000 evra
Za platu od 140400 dinara i kurs 117, plata u evrima iznosi 1200,00 EUR. Pošto je 1200 veće ili jednako 1000, porez je 20% od 1200, odnosno 240,00 EUR.
Unesi platu u dinarima:
140400
Plata u evrima iznosi 1200.00 EUR.
Porez iznosi 240.00 EUR.
Primer 2: plata je manja od 1000 evra
Za platu od 105300 dinara, plata u evrima iznosi 900,00 EUR. Pošto je 900 manje od 1000, porez je 15% od 900, odnosno 135,00 EUR.
Unesi platu u dinarima:
105300
Plata u evrima iznosi 900.00 EUR.
Porez iznosi 135.00 EUR.
Zaključak
Zadatak povezuje unos podataka, promenljive tipa double, aritmetičke operacije i grananje pomoću if-else naredbe. Posebno obratite pažnju na to da se prvo plata preračunava u evre, pa se tek onda proverava poreski prag.
