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

  • double se 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 / kurs pretvara dinare u evre.
  • if-else bira jednu od dve poreske stope. Pošto se koristi jedna naredba if-else, izvršava se samo jedna od dve grane.
  • %.2f prikazuje 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.