////////////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
// Primer: Datoteka sadrzi podatke o proizvodima koji se prodaju u okviru
// odredjene prodavnice.
// Svaki proizvod se odlikuje sledecim podacima: bar-kod, ime, cena i pdv.
// Na standardni izlaz ispisati podatke o svim proizvodima koji se prodaju u
// prodavnici.
////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
// Maksimalna duzina imena proizvoda
#define MAX_IME 30
// Maksimalni broj artikala
#define MAX_ARTIKALA 1000
// Struktura za cuvanje podataka o jednom artiklu
typedef struct artikal{
int bar_kod;
char ime[MAX_IME];
float cena;
float pdv;
} Artikal;
// Niz struktura u kome se cuvaju podaci o artiklima
Artikal artikli[MAX_ARTIKALA];
// Broj trenutno ucitanih artikala
int br_artikala = 0;
// Ucitava podatke o jednom artiklu iz date datoteke. Vraca da li su podaci uspesno procitani
int ucitaj_artikal(FILE* f, Artikal *a)
{
// Citamo bar kod, ime, cenu, pdv
fscanf(f, "%d%s%f%f", &(a->bar_kod), a->ime, &(a->cena), &(a->pdv));
// Ukoliko smo dosli do kraja datoteke prilikom pokusaja ucitavanja prijavljujemo neuspeh
if (feof(f))
return 0;
// Prijavljujemo uspeh
return 1;
}
// Izracunavanje ukupne cene datog artikla
float cena(Artikal a)
{
return a.cena*(1+a.pdv);
}
// Ispisuje podatke o svim artiklima
void ispisi_artikle()
{
int i;
for (i = 0; i<br_artikala; i++)
printf("%-5d %-10s %.2f * %.2f = %.2f
", artikli[i].bar_kod, artikli[i].ime, artikli[i].cena, artikli[i].pdv, cena(artikli[i]));
}
main()
{
FILE* f;
// Ucitavamo ime datoteke
char ime_datoteke[256];
printf("U kojoj datoteci se nalaze podaci o proizvodima: ");
scanf("%s", ime_datoteke);
// Otvaramo datoteku i proveravamo da li smo uspeli
if ( (f = fopen(ime_datoteke, "r")) == NULL)
{
printf("Greska prilikom otvaranja datoteke %s
", ime_datoteke);
return 1;
}
// Ucitavamo artikle
while (ucitaj_artikal(f, &artikli[br_artikala]))
br_artikala++;
// Ispisujemo podatke o svim artiklima
ispisi_artikle();
// Zatvara se datoteka
fclose(f);
}