Napisati program koji obrađuje podatke o podacima o vrednostima akcija kompanija na berzi. Podaci su zadati u ulaznoj datoteci u sledećem formatu:

  • naziv_kompanije (jedna reč, do 11 karaktera)

  • prvi_procenat (realan broj)

  • drugi_procenat (realan broj)

  • treci_procenat (realan broj)

  • cetvrti_procenat (realan broj)

  • peti_procenat (realan broj)

Učitati podatke o rastu deonica u statički niz, na osnovu kojih će se u izlaznu datoteku ispisati nova vrednost i trend akcija za kompaniju. Ime ulazne i izlazne datoteke se zadaju kao argumenti komandne linije. Osim imena datoteka, zadate su i početne vrednosti akcija kao realne vrednosti i prag na osnovu kog se gleda stagnacija akcija, takođe kao realna vrednost.

Procenti rasta akcija predstavljaju promenu vrednosti akcije u toku jednog dana. Da bi se dobio ukupan trend za taj dan, potrebno je sumirati sve vrednosti procenata. Nakon toga, potrebno je izračunati novu vrednost akcije. Imati na umu da se akcije pojedine kompanije mogu naći više od jednog puta u ulaznoj datoteci, stoga je potrebno na određeni način sačuvati međuvrednost akcija.

Trend akcija može sadržati tri vrednosti: rast, pad i stagnacija. Stagnacija se određuje na osnovu zadatog praga stagnacije, tako što se on pomnoži sa početnom vrednošću akcije. Ukoliko se nova vrednost akcije nalazi u okolini početne vrednosti akcije označene prethodno dobijenom vrednošću, za takvu akciju se kaže da ona stagnira. U suprotnom, gleda se vrednost rasta akcije za taj dan. Ako je rast negativna vrednost, za trend ispisati pad, u suprotnom ispisati rast.

Vrednosti imena kompanija su fiksne: Kompanija_A, Kompanija_B, Kompanija_C i Kompanija_D, tim redosledom su povezane sa vrednostima argumenata komandne linije koje idu nakon imena ulazne i izlazne datoteke. Ukoliko se u ulaznoj datoteci nađu podaci sa kompanijom čije ime nije navedeno, potrebno je na standardni izlaz ispisati tekst u formatu: Ne postoji pocetna vrednost akcija za kompaniju <naziv-kompanije>!. Preskočiti obradu tog reda, ali nastaviti sa obradom preostalih podataka.

Korisne matematičke formule

Računanje rasta akcije u toku dana i nove vrednosti akcije:

class center
\[rast = \sum{procenat}\]
class center
\[vrednost_{nova} = vrednost_{trenutna} \cdot (1 + \frac{rast}{100})\]

Računanje opsega stagnacije:

class center
\[opseg = prag \cdot vrednost_{početna}\]

Potrebno je proveriti da li se nova vrednost nalazi u opsegu:

class center
\[vrednost_{nova} \leq |opseg|\]

U slučaju uspešnog izvršavanja programa, izaći sa status kodom 0 (EXIT_SUCCESS). Ukoliko program ne može da se izvrši do kraja usled sledećih nedostataka, izaći iz programa sa sledećim status kodovima:

  • U slučaju nedovoljnog ili suvišnog broj argumenata komandne linije, izaći iz programa sa status kodom 2

  • Ako program ne može da otvori ulaznu datoteku, izaći sa status kodom 3

  • Ako program ne može da otvori izlaznu datoteku, izaći sa status kodom 4

Primer ulazne datoteke deonice.txt:

Kompanija_B  1.0  -0.5  0.0  2.0  -1.0
Kompanija_A -2.0  -1.0  0.5  0.0   1.5
Kompanija_D  3.0   1.0 -4.0  0.5   0.0
Kompanija_B -1.0  -1.0 -1.0  0.0   0.0
Kompanija_C  0.05 -0.02  0.01 -0.03  0.04
Kompanija_A  2.0   1.0  0.0 -0.5   0.0

Primer poziva programa:

./a.out deonice.txt izvestaj.txt 100.0 200.0 80.0 120.0 0.002

Primer izlazne datoteke izvestaj.txt:

Kompanija_B 203.00 rast
Kompanija_A 99.00 pad
Kompanija_D 120.60 rast
Kompanija_B 196.91 pad
Kompanija_C 80.04 stagnacija
Kompanija_A 101.47 rast

Primer ulazne datoteke deonice-sa-nepostojecom-kompanijom.txt:

Kompanija_E  2.0  -0.5  1.0  -2.4  -1.0
Kompanija_B  1.0  -0.5  0.0  2.0  -1.0
Kompanija_A -2.0  -1.0  0.5  0.0   1.5
Kompanija_D  3.0   1.0 -4.0  0.5   0.0
Kompanija_B -1.0  -1.0 -1.0  0.0   0.0
Kompanija_C  0.05 -0.02  0.01 -0.03  0.04
Kompanija_A  2.0   1.0  0.0 -0.5   0.0

Primer poziva programa:

./a.out deonice-sa-nepostojecom-kompanijom.txt izvestaj.txt 100.0 200.0 80.0 120.0 0.002

Primer ispisa programa na standardni izlaz:

Ne postoji pocetna vrednost akcija za kompaniju Kompanija_E!

Primer izlazne datoteke izvestaj.txt (isti sadržaj kao i u prethodnom primeru):

Kompanija_B 203.00 rast
Kompanija_A 99.00 pad
Kompanija_D 120.60 rast
Kompanija_B 196.91 pad
Kompanija_C 80.04 stagnacija
Kompanija_A 101.47 rast