[ vele72 @ 22.08.2006. 16:17 ] @
Moze li mi ko ovo rjesiti?
Zadane su dvije tekstualne datoteke. Jedna Chicago, druga Boston.

Chicago.txt

III II I
Kukoc 3 8 1
Pipen 1 3 0
Jordan 5 12 4
Rodman 0 5 7
Kerr 7 3 0


Isto tako i za Boston.txt, III-trica, II-dvojka, I-jedinica.

Napisati program koji izracunava rezultat utakmice. U posebnu funkciju ispisat rezultat. Koji je igrac dao najvise koseva. Ispisat ime tog igraca i koliko je koseva dao.
[ android~paranoid @ 22.08.2006. 23:28 ] @
Otvoris datoteku i sa getc uzimas svaki karakter sve dok ne dodjes do broja (posto je tekstualna),
onda proveris da li je i naredni znak broj, ako jeste onda ih spojis sa strcat (ne znam da li moras imati stringove
kao argumente - ako treba samo napravi od toga string dodavanjem \0,
a neces uzimati da ima tri broja, znaci i za 1 poen je nemoguce imati vise od 99 poena) i pomnozis sa promenjivom koja
ima vrednost 3, i odma smanjis promenjivu na 2 (k--), a pre toga ne mozes mnoziti stringove nego ces sa atoi
da pretvoris u broj, pa tek onda pomnozis.
To ces da pamtis u neki niz recimo boston[ i ], svaki igrac ce tu drzati svoj skor, sabiras znaci.
Isto tu proveravas i da li je kraj reda \n (ako sam skontao da je svaki igrac u novom redu), i ako jeste kraj
onda ces te promenjive staviti na 3, odnosno povecati igraca i++.
Haha, onda sam zamislio da uporedis sve to sto imas u nizovima boston[ i ] i cikago[ i ], odnosno nadjes maksimum
i onda ga nadjes preko tog indeksa i, nadjes koji je po redu(preko \n), i uzmes mu ime i prezime, znaci ides redom
isto sa getc i dok ne dodje do broja, sa strcat nadovezujes (verovatno postoji nesto bolje).

Rezultat nije problem ako si skontao ovo sto sam hteo da kazem :)

Mozda bi bolje bilo da se ubaci u strukturu ovo iz tekstualne datoteke, bilo bi slicno
i onda se moze svasta raditi sa tim.
[ toxi_programer @ 24.08.2006. 09:55 ] @
Evo surce koda :

#include<stdio.h>
#include<string.h>

#define BR_IGRACA 5

typedef struct tim_st{
char ime[20];
int tri,dva,jedan;
}tim_st;

//prototip f-ja
int citaj(const char file_name[], tim_st *ekipa1, tim_st *best);

int main(void)
{
static tim_st ekipa1[BR_IGRACA] , ekipa2[BR_IGRACA], best;

//ucitaj podatke prve ekipe
printf("*********** EKIPA 1 ************\n");
printf("Poena -> %d\n", citaj("ekipa1.txt",ekipa1,&best) );
printf("Najbolji igrac u ovoj ekipi -> %s\t %d !\n", best.ime , best.jedan);

//ucitaj podatke druge ekipe
printf("\n\n*********** EKIPA 2 ************\n");
best.jedan = 0;
printf("Poena -> %d\n", citaj("ekipa2.txt",ekipa2,&best) );
printf("Najbolji igrac u ovoj ekipi -> %s\t %d !\n", best.ime , best.jedan);

}

int citaj(const char file_name[], tim_st *ekipa1, tim_st *best)
{
FILE *file1;
int i, pom, poeni1 = 0;
file1 = fopen(file_name, "r");
for(i = 0; i < 5; i++)
{
fscanf(file1,"%s",&ekipa1.ime);
fscanf(file1,"%d",&ekipa1.tri);
fscanf(file1,"%d",&ekipa1.dva);
fscanf(file1,"%d",&ekipa1.jedan);

pom = ekipa1.tri*3 + ekipa1.dva*2 + ekipa1.jedan;
if( pom > best[0].jedan ) { best[0].jedan = pom; strcpy(best[0].ime, ekipa1.ime); }
poeni1 += pom;
printf("Igrac : %s\t %d, %d, %d !\n", ekipa1.ime, ekipa1.tri, ekipa1.dva, ekipa1.jedan);
}
return poeni1;
}
[ android~paranoid @ 24.08.2006. 12:01 ] @
E moze i tako, kad se setis fscanf-a .
[ toxi_programer @ 24.08.2006. 19:37 ] @
Moze to i mnogo brze/elegantnije ali sto da ja peglam kod? :)
Sa ce on da radi :)
[ urkel @ 28.08.2006. 16:55 ] @
Zadatak uopste nije tezak.
Cudi me da ljudi dolaze na forum za nesto ovako.
Za ovo je dovoljan i C.
Ljudi ucite prvo C, pa tek onda C++.
Bice vam lakse.

[Ovu poruku je menjao urkel dana 28.08.2006. u 18:06 GMT+1]
[ Au197/79 @ 28.08.2006. 19:36 ] @
može to i sa fgets pa posle strtok sa " " delimiterom. Meni je to prvo palo na pamet.
[ toxi_programer @ 28.08.2006. 20:38 ] @
Pa naravno da nije tesko sintaksno, ali "misaono" pa.... nije ni tako ali sam ja piso oko pola sata :D
strtok f-ju nikad nisam upisao u kod! Interesantna stvar :)
Ovo je interesantnije raditi u c++ nego u Cu