Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Pomoc oko zadatka
WWW:
Idite na Prethodno  1, 2, 3, 4, 5, 6, 7
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
frutabella
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 10. 2010. (16:35:36)
Postovi: (24E)16
Sarma = la pohva - posuda
-5 = 42 - 47

PostPostano: 23:24 uto, 11. 6. 2013    Naslov: Citirajte i odgovorite

Napisite funkciju drzava procitaj(FILE* niz, unsigned i); koja ce vratiti i-tu strukturu iz niza zapisanog u binarnoj datoteci otvorenoj preko pokazivaca
niz. Brojanje struktura pocinje od 0.

Malo me zbunjuje ovo s vracanjem strukture.
Naime, znam kako ispisati i-tu strukturu:

[code:1]
typedef struct _drzava{

char ime[21];
unsigned brojStan;
double povrsina;

}drzava;

drzava drzave[3]={

"Esp", 1000, 12345,
"Gre", 2000, 54321,
"Ita", 3000, 67890,
};


void procitaj(FILE* niz, unsigned i)
{
int broj=0;
drzava drz;

while(fread(&drz, sizeof(drzava), 1, niz)==1)
{
if(broj==i)
printf("zapis %2d. strukture: %20s, %6u, %8.2f\n", broj,

drz.ime, drz.brojStan, drz.povrsina);

++broj;

}
}

int main (void)
{
FILE *in; unsigned i;
kreiraj("drzavice.txt");
ispisi("drzavice.txt");

if((in=fopen("drzavice.txt", "rb"))==NULL)
{
printf("Greska.\n");
exit(2);

}

printf("\nIspisi strukturu: \n");

procitaj(in, 2);

return 0;
}
[/code:1]

Jel ovo ok rjesenje?

[code:1]
drzava procitaj(FILE* niz, unsigned i)
{
return drzave[i];
}

int main (void)
{
FILE *in;
drzava drz;
kreiraj("drzavice.txt");
ispisi("drzavice.txt");

if((in=fopen("drzavice.txt", "rb"))==NULL)
{
printf("Greska.\n");
exit(2);

}

printf("\nIspisi strukturu: \n");

drz=procitaj(in, 2);

printf(" %s, %u, %lf", drz.ime, drz.brojStan, drz.povrsina );


return 0;
}

[/code:1]
Napisite funkciju drzava procitaj(FILE* niz, unsigned i); koja ce vratiti i-tu strukturu iz niza zapisanog u binarnoj datoteci otvorenoj preko pokazivaca
niz. Brojanje struktura pocinje od 0.

Malo me zbunjuje ovo s vracanjem strukture.
Naime, znam kako ispisati i-tu strukturu:

Kod:

typedef struct _drzava{

   char ime[21];
   unsigned brojStan;
   double povrsina;

}drzava;

   drzava drzave[3]={

   "Esp", 1000, 12345,
   "Gre", 2000, 54321,
   "Ita", 3000, 67890,
};


void procitaj(FILE* niz, unsigned i)
     {
         int broj=0;
         drzava drz;

          while(fread(&drz, sizeof(drzava), 1, niz)==1)
          {
            if(broj==i)
            printf("zapis %2d. strukture: %20s, %6u, %8.2f\n", broj,       

            drz.ime, drz.brojStan, drz.povrsina);

            ++broj;

          }
     }

int main (void)
{
       FILE *in; unsigned i;
       kreiraj("drzavice.txt");
       ispisi("drzavice.txt");

       if((in=fopen("drzavice.txt", "rb"))==NULL)
       {
           printf("Greska.\n");
           exit(2);

       }

       printf("\nIspisi strukturu: \n");

       procitaj(in, 2);
     
       return 0;
}


Jel ovo ok rjesenje?

Kod:

drzava procitaj(FILE* niz, unsigned i)
{
   return drzave[i];
}

int main (void)
{
       FILE *in;
       drzava drz;
       kreiraj("drzavice.txt");
       ispisi("drzavice.txt");

       if((in=fopen("drzavice.txt", "rb"))==NULL)
       {
           printf("Greska.\n");
           exit(2);

       }

       printf("\nIspisi strukturu: \n");

       drz=procitaj(in, 2);

       printf(" %s, %u, %lf", drz.ime, drz.brojStan, drz.povrsina );

     
       return 0;
}



[Vrh]
Korisnički profil Pošaljite privatnu poruku
Leolinus
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2012. (16:36:41)
Postovi: (10)16
Sarma = la pohva - posuda
= 6 - 5

PostPostano: 23:36 uto, 11. 6. 2013    Naslov: Citirajte i odgovorite

[quote="frutabella"]Napisite funkciju drzava procitaj(FILE* niz, unsigned i); koja ce vratiti i-tu strukturu iz niza zapisanog u binarnoj datoteci otvorenoj preko pokazivaca
niz. Brojanje struktura pocinje od 0.

Malo me zbunjuje ovo s vracanjem strukture.
Naime, znam kako ispisati i-tu strukturu:
[/quote]

Postoji jedna dobra funkcija koju možeš
koristiti kada ti je u datoteci sve
binarno strukturirano.
Ako brojanje strukutra počinje od 0, onda se
direktno pozicioniraš na sljedeći način:

[code:1]fseek(in, i*sizeof(drzava),SEEK_SET); // "in" je FILE*
fread(&drz, sizeof(drzava), 1, in)//možeš provjeriti je li se pročitalo
return drz; // ovo je cijeli kod tvoje funkcije pročitaj()[/code:1]

Ovo kaže, pomakni mi se u datoteci in za "i"
bajtova veličine strukutre država, što znači
da će ti se pozicionirati ako želiš i-tu
strukturu pročitati ispred i-te strukutre, i samo
onda trebaš fread pozvati i pročitati strukturu
kao i inače. Naravno, ako ćeš ponovo nešto
raditi s datotekom pozicioniraj se ponovo na
početak.

Ako želiš samo modificirati svoje rješenje umjesto
ispisa samo napišeš return drz; i to će ti vratiti
i-tu strukturu.
frutabella (napisa):
Napisite funkciju drzava procitaj(FILE* niz, unsigned i); koja ce vratiti i-tu strukturu iz niza zapisanog u binarnoj datoteci otvorenoj preko pokazivaca
niz. Brojanje struktura pocinje od 0.

Malo me zbunjuje ovo s vracanjem strukture.
Naime, znam kako ispisati i-tu strukturu:


Postoji jedna dobra funkcija koju možeš
koristiti kada ti je u datoteci sve
binarno strukturirano.
Ako brojanje strukutra počinje od 0, onda se
direktno pozicioniraš na sljedeći način:

Kod:
fseek(in, i*sizeof(drzava),SEEK_SET); // "in" je FILE*
fread(&drz, sizeof(drzava), 1, in)//možeš provjeriti je li se pročitalo
return drz; // ovo je cijeli kod tvoje funkcije pročitaj()


Ovo kaže, pomakni mi se u datoteci in za "i"
bajtova veličine strukutre država, što znači
da će ti se pozicionirati ako želiš i-tu
strukturu pročitati ispred i-te strukutre, i samo
onda trebaš fread pozvati i pročitati strukturu
kao i inače. Naravno, ako ćeš ponovo nešto
raditi s datotekom pozicioniraj se ponovo na
početak.

Ako želiš samo modificirati svoje rješenje umjesto
ispisa samo napišeš return drz; i to će ti vratiti
i-tu strukturu.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
frutabella
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 10. 2010. (16:35:36)
Postovi: (24E)16
Sarma = la pohva - posuda
-5 = 42 - 47

PostPostano: 0:37 sri, 12. 6. 2013    Naslov: Citirajte i odgovorite

E sad me nesto zbunjuje u vezi tog pozicioniranja:

znaci, ako sam se sa fseek pozicionirala na i-to mjesto, zar onda sljedeci fread ne cita i+1 strukturu u nizu?

Naime, na predavanju je rađena funkcija "dodaj_bonus" koja dodaje bonus na racun n-tog korisnika koji ima stanje na racunu vece od 0.



[code:1]
void dodaj_bonus(const char *f_name, int n)
{
FILE *racuni;
Racun kor;
long file_pos;
const double bonus = 100.0;

if ((racuni = fopen(f_name, "r+b")) == NULL) {
fprintf(stderr, "Ne mogu otvoriti: %s!\n",
f_name);
exit(1);
}

/* Pozicioniranje ispred n-tog zapisa. */
file_pos = (long) ((n - 1) * size);

if (fseek(racuni, file_pos, SEEK_SET)) {
fprintf(stderr,
"Greska u fseek, n = %d.\n", n);
printf("Greska u fseek, n = %d.\n", n);
fclose(racuni);
return; /* Necu exit, za demo! */
}

if (fread(&kor, size, 1, racuni) != 1)
if (ferror(racuni)) {
fprintf(stderr, "Greska u citanju.\n");
exit(2);
}
else if (feof(racuni)) {
fprintf(stderr,
"Kraj datoteke, n = %d.\n", n);
printf("Kraj datoteke, n = %d.\n", n);
fclose(racuni);
return; /* Necu exit, za demo! */
}

if (kor.stanje > 0) {
kor.stanje = kor.stanje + bonus;
fseek(racuni, -size, SEEK_CUR);
if (fwrite(&kor, size, 1, racuni) != 1) {
fprintf(stderr, "Greska u pisanju.\n");
exit(3);
}
}

fclose(racuni);

return;
}

[/code:1]

Buduci da se je pozicionirao prvo na n-1 poziciju u nizu, zakljucila sam da sa sljedecim fread-om procita upravo n-ti zapis.

Onda se opet sa fseek vrati na n-1 poziciju,
tako da onda sa fwrite pise u n-tu poziciju.

U cemu je sad razlika?

(sigurno ima veze s tim da li smo krenuli od nule ili ne, ali ne mogu si razjasniti stvar, cini mi se da i na predavanjima idemo od 0, zar ne?)

[size=9][color=#999999]Added after 8 minutes:[/color][/size]

Sad sam rijesila ovaj pod d) dio zadatka:

Napisite funkciju void zapisi(FILE* niz, unsigned i, drzava X);
koja ce zapisati strukturu X na i-to mjesto u nizu zapisanom u binarnoj datoteci otvorenoj preko pokazivaca niz.


[code:1]
void zapisi(FILE* niz, unsigned i, drzava X)
{
drzava drz;
long file_pos;

file_pos=(long)((i)*sizeof(drzava));

if(fseek(niz, file_pos, SEEK_SET)!=0)
{
printf("Greska u seek.\n");
fclose(niz);
return;
}

if(fread(&drz, sizeof(drzava), 1, niz)==1)
{
strcpy(drz.ime, X.ime);
drz.brojStan=X.brojStan;
drz.povrsina=X.povrsina;

fseek(niz, -sizeof(drzava), SEEK_CUR);

if(fwrite(&drz, sizeof(drzava), 1, niz)!=1)
{
printf("Greska u pisanju.\n");
}

}

fclose(niz);
return;
}
[/code:1]

I radi onako kako si rekao/rekla tek kad pozicioniram na i-to mjesto.
Prvi put sam pozicionirala na i-1 mjesto i ispisivalo je drukcije.
E sad me nesto zbunjuje u vezi tog pozicioniranja:

znaci, ako sam se sa fseek pozicionirala na i-to mjesto, zar onda sljedeci fread ne cita i+1 strukturu u nizu?

Naime, na predavanju je rađena funkcija "dodaj_bonus" koja dodaje bonus na racun n-tog korisnika koji ima stanje na racunu vece od 0.



Kod:

void dodaj_bonus(const char *f_name, int n)
{
    FILE *racuni;
    Racun kor;
    long file_pos;
    const double bonus = 100.0;

    if ((racuni = fopen(f_name, "r+b")) == NULL) {
        fprintf(stderr, "Ne mogu otvoriti: %s!\n",
                f_name);
        exit(1);
    }

        /* Pozicioniranje ispred n-tog zapisa. */
    file_pos = (long) ((n - 1) * size);

    if (fseek(racuni, file_pos, SEEK_SET)) {
        fprintf(stderr,
                "Greska u fseek, n = %d.\n", n);
        printf("Greska u fseek, n = %d.\n", n);
        fclose(racuni);
        return;    /* Necu exit, za demo! */
        }

    if (fread(&kor, size, 1, racuni) != 1)
        if (ferror(racuni)) {
            fprintf(stderr, "Greska u citanju.\n");
            exit(2);
        }
        else if (feof(racuni)) {
            fprintf(stderr,
                    "Kraj datoteke, n = %d.\n", n);
            printf("Kraj datoteke, n = %d.\n", n);
            fclose(racuni);
            return;    /* Necu exit, za demo! */
        }

    if (kor.stanje > 0) {
        kor.stanje = kor.stanje + bonus;
        fseek(racuni, -size, SEEK_CUR);
        if (fwrite(&kor, size, 1, racuni) != 1) {
            fprintf(stderr, "Greska u pisanju.\n");
            exit(3);
        }
    }

    fclose(racuni);

    return;
}



Buduci da se je pozicionirao prvo na n-1 poziciju u nizu, zakljucila sam da sa sljedecim fread-om procita upravo n-ti zapis.

Onda se opet sa fseek vrati na n-1 poziciju,
tako da onda sa fwrite pise u n-tu poziciju.

U cemu je sad razlika?

(sigurno ima veze s tim da li smo krenuli od nule ili ne, ali ne mogu si razjasniti stvar, cini mi se da i na predavanjima idemo od 0, zar ne?)

Added after 8 minutes:

Sad sam rijesila ovaj pod d) dio zadatka:

Napisite funkciju void zapisi(FILE* niz, unsigned i, drzava X);
koja ce zapisati strukturu X na i-to mjesto u nizu zapisanom u binarnoj datoteci otvorenoj preko pokazivaca niz.


Kod:

void zapisi(FILE* niz, unsigned i, drzava X)
     {
         drzava drz;
         long file_pos;

         file_pos=(long)((i)*sizeof(drzava));

         if(fseek(niz, file_pos, SEEK_SET)!=0)
         {
             printf("Greska u seek.\n");
             fclose(niz);
             return;
         }

         if(fread(&drz, sizeof(drzava), 1, niz)==1)
         {
             strcpy(drz.ime, X.ime);
             drz.brojStan=X.brojStan;
             drz.povrsina=X.povrsina;

             fseek(niz, -sizeof(drzava), SEEK_CUR);

             if(fwrite(&drz, sizeof(drzava), 1, niz)!=1)
             {
                 printf("Greska u pisanju.\n");
             }

         }

         fclose(niz);
         return;
     }


I radi onako kako si rekao/rekla tek kad pozicioniram na i-to mjesto.
Prvi put sam pozicionirala na i-1 mjesto i ispisivalo je drukcije.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
dodgin_lions
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 07. 2012. (14:49:47)
Postovi: (22)16
Spol: žensko
Sarma = la pohva - posuda
= 3 - 0

PostPostano: 17:38 sri, 12. 6. 2013    Naslov: Citirajte i odgovorite

[quote="vsego"]Pisem napamet, pa mozda ima gres(a)ka...

[code:1]char **greska(const char *poruka, char **mat, int i, int *n) {
while (i--) free(mat[i]);
free(mat);
*n = 0;
printf("Greska: %s.\n", poruka);
return NULL;
}

char **ucitaj(int *n) {
int i, j;
char **mat, s[92];

scanf("%d", n);

mat = (char**)malloc(n * sizeof(char *));
for (i = 0; i < *n; i++) {
scanf("%91[^\n]", s); /* dozvoljavam rijeci do 91 znaka, zato da detektiram predugacke rijeci i kad je n == 90 */
if (strlen(s) <> *n)
return greska("Rijec krive duljine", mat, i, n);
for (j = 0; s[j]; j++) /* umjesto s[j] moze ici i j < n, ali ovo bi trebalo biti neznatno brze */
if (s[i] < 'A' || s[i] > 'Z')
return greska("Rijec sadrzi nedozvoljeni znak", mat, i, n);
mat[i] = (char*)malloc(n * sizeof(char));
for (j = 0; s[j]; j++) mat[i][j] = s[j]; /* ne koristim strcpy() jer on kopira i zavrsni '\0', a to ne zelimo */
}
return mat;
}[/code:1]

Ako te funkcija [tt]greska()[/tt] zbunjuje, napravi bez nje (samo moras dva puta pisati isti kod).[/quote]

I mene sad zanima je li ovdje dopušteno korištenje pomoćnog polja s[92].
vsego (napisa):
Pisem napamet, pa mozda ima gres(a)ka...

Kod:
char **greska(const char *poruka, char **mat, int i, int *n) {
  while (i--) free(mat[i]);
  free(mat);
  *n = 0;
  printf("Greska: %s.\n", poruka);
  return NULL;
}

char **ucitaj(int *n) {
  int i, j;
  char **mat, s[92];

  scanf("%d", n);

  mat = (char**)malloc(n * sizeof(char *));
  for (i = 0; i < *n; i++) {
    scanf("%91[^\n]", s); /* dozvoljavam rijeci do 91 znaka, zato da detektiram predugacke rijeci i kad je n == 90 */
    if (strlen(s) <> *n)
      return greska("Rijec krive duljine", mat, i, n);
    for (j = 0; s[j]; j++) /* umjesto s[j] moze ici i j < n, ali ovo bi trebalo biti neznatno brze */
      if (s[i] < 'A' || s[i] > 'Z')
        return greska("Rijec sadrzi nedozvoljeni znak", mat, i, n);
    mat[i] = (char*)malloc(n * sizeof(char));
    for (j = 0; s[j]; j++) mat[i][j] = s[j]; /* ne koristim strcpy() jer on kopira i zavrsni '\0', a to ne zelimo */
  }
  return mat;
}


Ako te funkcija greska() zbunjuje, napravi bez nje (samo moras dva puta pisati isti kod).


I mene sad zanima je li ovdje dopušteno korištenje pomoćnog polja s[92].


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (355F)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:01 sri, 12. 6. 2013    Naslov: Citirajte i odgovorite

Dozvoljeno je (i solidno jasno iz samog zadatka).

Ako ti za nesto konkretno na kolokviju nije jasno je li dozvoljeno, pitaj dezurnog asistenta.
Dozvoljeno je (i solidno jasno iz samog zadatka).

Ako ti za nesto konkretno na kolokviju nije jasno je li dozvoljeno, pitaj dezurnog asistenta.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
dodgin_lions
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 07. 2012. (14:49:47)
Postovi: (22)16
Spol: žensko
Sarma = la pohva - posuda
= 3 - 0

PostPostano: 19:37 sri, 12. 6. 2013    Naslov: Citirajte i odgovorite

A meni je ovo bilo prilično jasno:

U svim zadacima zabranjeno je koristenje dodatnih nizova i standardne matematicke biblioteke (zaglavlje math.h), osim ako je u zadatku drugacije navedeno.

Ali ok, još bolje ako se može :)
A meni je ovo bilo prilično jasno:

U svim zadacima zabranjeno je koristenje dodatnih nizova i standardne matematicke biblioteke (zaglavlje math.h), osim ako je u zadatku drugacije navedeno.

Ali ok, još bolje ako se može Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (355F)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 20:40 sri, 12. 6. 2013    Naslov: Citirajte i odgovorite

Da ucis programiranje koliko se igras odvjetnika, polaganje kolegija ti ne bi bilo nikakav problem. Da citiram dvije recenice iz texta zadatka (iz posta na koji sam odgovarao):

[quote="Zadatak"]1. Smijete pretpostaviti da je red osmosmjerke izmedu 1 i 90.
2. Funkcija vraca osmosmjerku, za koju mora alocirati tocno onoliko memorije koliko je potrebno za drzanje n x n matrice charova.[/quote]

Iz druge recenice zakljucujem da se trazi [tt]char**[/tt] (ili, alternativno, [tt]char*[/tt], no nista sto bi u sebi imalo 90, 91 ili tako neku fixnu vrijednost). U prvoj recenici imam ogranicenje na duljinu stringa, no cemu to sluzi ako smo zakljucili da ne sluzi za deklaraciju matrice?

Dodatno, kako ucitati string ako ne u neki niz znakova (sto se i inace koristi u kolegiju da se olaksa ucitavanje stringova)?

Posto razumijem gradivo, meni je to dovoljno da zakljucim da smijem napraviti sto sam napravio. Kome nije jasno, ponavljam, pitajte dezurnog, ali okanite navlacenja maka na konac natjeravanjem pravnickih izricaja.
Da ucis programiranje koliko se igras odvjetnika, polaganje kolegija ti ne bi bilo nikakav problem. Da citiram dvije recenice iz texta zadatka (iz posta na koji sam odgovarao):

Zadatak (napisa):
1. Smijete pretpostaviti da je red osmosmjerke izmedu 1 i 90.
2. Funkcija vraca osmosmjerku, za koju mora alocirati tocno onoliko memorije koliko je potrebno za drzanje n x n matrice charova.


Iz druge recenice zakljucujem da se trazi char** (ili, alternativno, char*, no nista sto bi u sebi imalo 90, 91 ili tako neku fixnu vrijednost). U prvoj recenici imam ogranicenje na duljinu stringa, no cemu to sluzi ako smo zakljucili da ne sluzi za deklaraciju matrice?

Dodatno, kako ucitati string ako ne u neki niz znakova (sto se i inace koristi u kolegiju da se olaksa ucitavanje stringova)?

Posto razumijem gradivo, meni je to dovoljno da zakljucim da smijem napraviti sto sam napravio. Kome nije jasno, ponavljam, pitajte dezurnog, ali okanite navlacenja maka na konac natjeravanjem pravnickih izricaja.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Leolinus
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2012. (16:36:41)
Postovi: (10)16
Sarma = la pohva - posuda
= 6 - 5

PostPostano: 22:29 sri, 12. 6. 2013    Naslov: Citirajte i odgovorite

[quote="vsego"]Da ucis programiranje koliko se igras odvjetnika, polaganje kolegija ti ne bi bilo nikakav problem. Da citiram dvije recenice iz texta zadatka (iz posta na koji sam odgovarao):

[quote="Zadatak"]1. Smijete pretpostaviti da je red osmosmjerke izmedu 1 i 90.
2. Funkcija vraca osmosmjerku, za koju mora alocirati tocno onoliko memorije koliko je potrebno za drzanje n x n matrice charova.[/quote]

Iz druge recenice zakljucujem da se trazi [tt]char**[/tt] (ili, alternativno, [tt]char*[/tt], no nista sto bi u sebi imalo 90, 91 ili tako neku fixnu vrijednost). U prvoj recenici imam ogranicenje na duljinu stringa, no cemu to sluzi ako smo zakljucili da ne sluzi za deklaraciju matrice?

Dodatno, kako ucitati string ako ne u neki niz znakova (sto se i inace koristi u kolegiju da se olaksa ucitavanje stringova)?

Posto razumijem gradivo, meni je to dovoljno da zakljucim da smijem napraviti sto sam napravio. Kome nije jasno, ponavljam, pitajte dezurnog, ali okanite navlacenja maka na konac natjeravanjem pravnickih izricaja.[/quote]

Mislim, kakvo je ovo ponašanje od akademske osobe? Kako ti uopće možeš
iz jednog posta zaključiti koliko netko uči programiranje?

Pitao sam isto pitanje na prošloj stranici jer mi nije bilo jasno koja je
svrha statičko deklariranje unutar funkcija, a u isto vrijeme su
zabranjena korištenja pomoćnih polja. Pitao sam bi li malloc bio ispravan
za razliku od trenutne implementacije.

Gradivo očito kaže da tako definirano polje odlazi i zauzima memoriju u
data dijelu(uvijek se nalazi na istome mjestu, a i predviđanje što se
događa tamo je nemoguće, za razliku od dinamičke alokacije), a ne na
heap-u(priložio sam i testni programčić). Ako je zabrana korištenja
pomoćnih polja iz nekih rozojednorogih razloga, a onda se ispričavam na
primjedbi.

Nitko se ovdje ne igra odvjetnika, također, nitko ovdje ne želi slavno
isticati da je tvoje rješenje pogrešno(pogotovo zato jer odgovaraš
ljudima na pitanja i nepotrebno je uopće potkopavati tvoj trud takvim
glupostima), pitaju se ozbiljna pitanja jer asistenti znaju uzeti sve
bodove jer takve stvari smatraju kardinalnom greškom ili oduzmu dovoljno
bodova da se ni ne približi 80% kriteriju, a zadatak je algoritamski
točno riješen i radi.

Naravno da je zdravo razumski za takve stvari koristiti statičko alocirana
polja, kao što je zdravo razumski i za matrice koje mogu biti 90*90
napraviti obični #define granica i prenositi broj redaka i stupaca kroz
program.
vsego (napisa):
Da ucis programiranje koliko se igras odvjetnika, polaganje kolegija ti ne bi bilo nikakav problem. Da citiram dvije recenice iz texta zadatka (iz posta na koji sam odgovarao):

Zadatak (napisa):
1. Smijete pretpostaviti da je red osmosmjerke izmedu 1 i 90.
2. Funkcija vraca osmosmjerku, za koju mora alocirati tocno onoliko memorije koliko je potrebno za drzanje n x n matrice charova.


Iz druge recenice zakljucujem da se trazi char** (ili, alternativno, char*, no nista sto bi u sebi imalo 90, 91 ili tako neku fixnu vrijednost). U prvoj recenici imam ogranicenje na duljinu stringa, no cemu to sluzi ako smo zakljucili da ne sluzi za deklaraciju matrice?

Dodatno, kako ucitati string ako ne u neki niz znakova (sto se i inace koristi u kolegiju da se olaksa ucitavanje stringova)?

Posto razumijem gradivo, meni je to dovoljno da zakljucim da smijem napraviti sto sam napravio. Kome nije jasno, ponavljam, pitajte dezurnog, ali okanite navlacenja maka na konac natjeravanjem pravnickih izricaja.


Mislim, kakvo je ovo ponašanje od akademske osobe? Kako ti uopće možeš
iz jednog posta zaključiti koliko netko uči programiranje?

Pitao sam isto pitanje na prošloj stranici jer mi nije bilo jasno koja je
svrha statičko deklariranje unutar funkcija, a u isto vrijeme su
zabranjena korištenja pomoćnih polja. Pitao sam bi li malloc bio ispravan
za razliku od trenutne implementacije.

Gradivo očito kaže da tako definirano polje odlazi i zauzima memoriju u
data dijelu(uvijek se nalazi na istome mjestu, a i predviđanje što se
događa tamo je nemoguće, za razliku od dinamičke alokacije), a ne na
heap-u(priložio sam i testni programčić). Ako je zabrana korištenja
pomoćnih polja iz nekih rozojednorogih razloga, a onda se ispričavam na
primjedbi.

Nitko se ovdje ne igra odvjetnika, također, nitko ovdje ne želi slavno
isticati da je tvoje rješenje pogrešno(pogotovo zato jer odgovaraš
ljudima na pitanja i nepotrebno je uopće potkopavati tvoj trud takvim
glupostima), pitaju se ozbiljna pitanja jer asistenti znaju uzeti sve
bodove jer takve stvari smatraju kardinalnom greškom ili oduzmu dovoljno
bodova da se ni ne približi 80% kriteriju, a zadatak je algoritamski
točno riješen i radi.

Naravno da je zdravo razumski za takve stvari koristiti statičko alocirana
polja, kao što je zdravo razumski i za matrice koje mogu biti 90*90
napraviti obični #define granica i prenositi broj redaka i stupaca kroz
program.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2, 3, 4, 5, 6, 7
Stranica 7 / 7.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan