Izdavanje računa¶
Autor zadatka: Rade Radišić <radisic.rade@uns.ac.rs>
Napisati program koji omogućuje izdavanje računa. Radnik unosi ime i prezime kupca (string od maksimalno 30 karaktera), kao i broj kupljenih artikala. Nakon toga, za svaki artikal potrebno je upisati šifru artikla (string od maksimalno 8 karaktera), kao i njegovu cenu. Ukoliko šifra artikla počinje sa karakterom 'P', to označava da je proizvod trenutno na popustu i da njegovu cenu treba umanjiti za 10%. Nakon unetih artikala ispisati ukupnu cenu koju kupac treba da plati sa obračunatim PDV-om, koji predstavlja dodatnih 20% na ukupnu cenu. Uraditi validaciju unosa za broj artikala, kao i za cenu. Program treba da vrati na ponovni unos korisnika ukoliko je uneo vrednost manju ili jednaku od nule u oba slučaja.
Primer rada programa:
Unesite ime i prezime kupca: Pera Peric
Unesite broj kupljenih artikala: 3
Sifra artikla 1: TR1054
Cena artikla 1: 249.99
Sifra artikla 2: QU4308
Cena artikla 2: 57.99
Sifra artikla 3: PG2058
Cena artikla 3: 163.99
Ostvaren popust na artikal, cena PG2058: 147.59
Ukupno: 455.57
Ukupno (sa PDV-om): 546.69
Primer rešenja¶
1#include <stdio.h>
2#include <string.h>
3
4#define MAX_KUPAC 31
5#define MAX_SIFRA 9
6
7int main() {
8 char kupac[MAX_KUPAC], sifra[MAX_SIFRA];
9 int i, broj_artikala;
10 double cena_artikla, ukupno = 0.0;
11
12 printf("Unesite ime i prezime kupca: ");
13 fgets(kupac, MAX_KUPAC, stdin);
14 kupac[strlen(kupac) - 1] = '\0';
15
16 do {
17 printf("Unesite broj kupljenih artikala: ");
18 scanf("%d", &broj_artikala);
19 } while(broj_artikala <= 0);
20
21 for(i = 1;i <= broj_artikala;i++) {
22 printf("Sifra artikla %d: ", i);
23 scanf("%s", sifra);
24
25 do {
26 printf("Cena artikla %d: ", i);
27 scanf("%lf", &cena_artikla);
28 } while(cena_artikla <= 0);
29
30 if(sifra[0] == 'P') {
31 cena_artikla -= cena_artikla * 0.1;
32 printf("Ostvaren popust na artikal, cena %s: %.2lf\n", sifra, cena_artikla);
33 }
34
35 ukupno += cena_artikla;
36 }
37
38 printf("\nUkupno: %.2lf\n", ukupno);
39 printf("Ukupno (sa PDV-om): %.2lf\n", ukupno * 1.20);
40
41 return 0;
42}