[ digitall1982 @ 16.04.2007. 18:09 ] @
podzrav narode.
eo imam jedan zadacic za rjesiti a ne znam jebga.. pa ako bi neko bio tako dobar da bar nesto napravi..
bio bi jako zahvalan.
zadatak glasi ovako:

potrebno je definirati strukturu Broj ciji su elementi cijeli brojevi. u programu je potrebno otvoriti datoteku brojevi.txt u kojoj prvi broj predstavlja broj struktura. dinamicki je potrebno otvoriti odgovarajuci broj struktura tipa Broj i brojeve iz datoteke zapisati u strukture. nakon sto se zavrsi citanje datoteku je potrebno zatvoriti i ispisati vrijednosti clanova struktura obrnutim redosljedom. ispis realizirati funkcijom koja kao parametar uzima adresu strukture.

znam da se to rjesava u 10-ak min i da je dosta jednostavno al eto.

puno hvala
[ digitall1982 @ 16.04.2007. 19:21 ] @
isao sam nekako ovako
da procitam prvi broj iz datoteke, i da onda kreiram matricu od toliko polja, polja su tipa strukture, al ne ide mi sintaksa nikako u ovom c-u....
Code:


#include <stdio.h>
#include <stdlib.h>


struct broj {
    int prvi;
    int drugi;
    int treci;
};

struct broj matrica[]; /* ovo bi tebalo biti u main-u predpostavljam i izgledati ovako struct broj matrica[brojstruktura]; ali javi odma gresku */
    
int main(void)
{
    FILE * datoteka;
    int brojstruktura;
    float podatak;
    datoteka=fopen("brojevi.txt","r");
    fscanf(datoteka,"%d",&brojstruktura);
    printf("broj Struktura je: %d",brojstruktura);
    
    struct broj matrica;     /* tu mi javi gresku kako god da okrenem */

    //matrica=(struct broj)calloc(brojstruktura,sizeof(struct broj));     /* tu bi trebao alocirati memoriju, pretpostavljam ovako */

    //for (i=0;i<brojstruktura;i++){
                       
    // tu bi valjda trebao proci petlju toliko puta koliko ima polja u matrici i napuniti strukture
             //}
    
return 0;
}


[ Mali Misha @ 16.04.2007. 21:19 ] @
Pošto se o ovome ništa ne kaže, pretpostavljam da struktura Broj ima u sebi samo jedan ceo broj. Dakle evo kako bi odradio unos podataka:

Code:
#include <stdio.h>
#include <stdlib.h>

struct Broj {

    int vrednost;

};

int main(void)
{
    int n, i;
    struct Broj * brojevi = 0;
    FILE * fp = fopen("brojevi.txt","r");

    // ovde čita broj elemenata (prvi broj u fajlu)
    fscanf(fp,"%d",&n);

    // ovo je dinamičko alociranje prostora za niz od n
    // elemenata tipa struct Broj
    brojevi = (struct Broj*) malloc(sizeof(struct Broj)*n);

    // učitavanje n elemenata iz fajla
    for(i=0;i<n;i++)
    {
        // Prvo se uzme odgovarajući elemenat iz niza tipa
        // struct Broj, pa se onda u njegovu članicu
        // "vrednost" upiše sledeća pročitana vrednost
        fscanf(fp,"%d",&brojevi[i].vrednost);
    }

    // zatvaranje fajla
    fclose(fp);

    // ...
    
    // Štampanje niza ide ovde

    // ...
    
    free(brojevi);

    return 0;
}

Ostaviću ti da razmisliš o tome kako bi odradio štampanje unetog niza u obrnutom redu.
[ digitall1982 @ 17.04.2007. 15:12 ] @
hvala puno, inace u meduvremenu sam uspio rjesiti zadatak... smjesno je lagan al eto..

Code:


#include<stdio.h>
#include<stdlib.h>

struct broj
{
    int x;
};

struct broj br;

void unos (struct broj *b, int x)
{
    b->x=x;
}

ispis(struct broj *b)
{
    printf("%d ",b->x);
}

int main(void)
{
    struct broj *br;
             int i,n,c;
    FILE *dat1;
    dat1=fopen("brojevi.txt","r");
    fscanf(dat1,"%d",&n);
    br=(struct broj*)calloc(n,sizeof(struct broj));
    
    for(i=0;i<n;i++)
    {
        fscanf(dat1,"%d",&c);
        unos(br+i,c);
    }
    fclose(dat1);

             printf("\n");

    for (i=n-1;i>-1;i--)
        ispis(br+i);

}

[ Mali Misha @ 17.04.2007. 17:01 ] @
Fali free. Mogao bi i return na kraj da staviš.