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

Prog2 DZ
WWW:
Idite na Prethodno  1, 2, 3 ... 8, 9, 10, 11, 12, 13  Sljedeće
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
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 9:00 pon, 14. 5. 2012    Naslov: Citirajte i odgovorite

ja opet imam problema sa citanjem zadataka iz zadace...znaci meni pise ovako zadaca Za $n \in \mathbb{N}_0$ definiramo $C_n$ na sljedeći način$$C_n = \begin{cases}6,&n=0,\\ \frac{5 n + 6}{2 n + 2}C_{n-1},&n>0.\end{cases}$$Napišite program koji učitava prirodni broj $n$ i, koristeći format %g, ispisuje vrijednost $C_n$.

pa ako mi opet neko moze napisat kako da ovo 'normalno' procitam? ne mislim da mi neko prevede ovo, vec da mi kaze sta da uradim da bude normalan tekst... XD hvala!!
ja opet imam problema sa citanjem zadataka iz zadace...znaci meni pise ovako zadaca: Za $n \in \mathbb{N}_0$ definiramo $C_n$ na sljedeći način:$$C_n = \begin{cases}6,&n=0,\\ \frac{5 n + 6}{2 n + 2}C_{n-1},&n>0.\end{cases}$$Napišite program koji učitava prirodni broj $n$ i, koristeći format %g, ispisuje vrijednost $C_n$.

pa ako mi opet neko moze napisat kako da ovo 'normalno' procitam? ne mislim da mi neko prevede ovo, vec da mi kaze sta da uradim da bude normalan tekst... XD hvala!!


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


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

PostPostano: 10:08 pon, 14. 5. 2012    Naslov: Citirajte i odgovorite

Na to pitanje sam ti vec odgovorio [url=http://degiorgi.math.hr/forum/viewtopic.php?p=169108#169108]ovdje[/url]. Nista se od tada nije promijenilo. Ako ne vidis formule na webu od zadaca i Forumu, treba ti netko da ti sredi browser(e) ili te stvari moras citati u praktikumima. Ovako napamet nitko nece znati sto kod tebe doma ne valja da ti se ne izvrsava vrlo standardni komad softwarea.

Napominjem, rijec je o webu aplikacije za zadace. Ono sto dobijes mailom, ponekad je bas u toj formi koju opisujes i malo je teze pregledno zapisati u plain-textu.
Na to pitanje sam ti vec odgovorio ovdje. Nista se od tada nije promijenilo. Ako ne vidis formule na webu od zadaca i Forumu, treba ti netko da ti sredi browser(e) ili te stvari moras citati u praktikumima. Ovako napamet nitko nece znati sto kod tebe doma ne valja da ti se ne izvrsava vrlo standardni komad softwarea.

Napominjem, rijec je o webu aplikacije za zadace. Ono sto dobijes mailom, ponekad je bas u toj formi koju opisujes i malo je teze pregledno zapisati u plain-textu.



_________________
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
Lux86
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2011. (23:38:43)
Postovi: (1D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 12:26 ned, 20. 5. 2012    Naslov: Citirajte i odgovorite

isprobala sam program i čini se da radi, ali očito se varam :roll:

Napišite program koji čita datoteku "lgsvn.in", te ju prepisuje u datoteku "lgsvn.out" tako da u prepisivanju sva pojavljivanja stringa "dhe" zamijeni stringom "eifge".

[code:1]#include <stdio.h>
#include <stdlib.h>

int main(void) {
FILE *in, *out;
char c1, c2, c3;
int t;

if((in = fopen("lgsvn.in", "r")) == NULL)
{
exit(1);
}

if((out = fopen("lgsvn.out", "w")) == NULL)
{
exit(2);
}

while((t=fscanf(in, "%c%c%c", &c1, &c2, &c3)) == 3) {
if(c1=='d' && c2=='h' && c3=='e') {
fprintf(out, "%s", "eifge");
}
else fprintf(out, "%c%c%c", c1, c2, c3);
}
if(t==2) fprintf(out, "%c%c", c1, c2);
if(t==1) fprintf(out, "%c", c1);


fclose(in); fclose(out);
return 0;
}
[/code:1]

je li while((t=fscanf(in, "%c%c%c", &c1, &c2, &c3)) == 3) "legalan" način za provjeru jesu li učitana 3 znaka?
isprobala sam program i čini se da radi, ali očito se varam Rolling Eyes

Napišite program koji čita datoteku "lgsvn.in", te ju prepisuje u datoteku "lgsvn.out" tako da u prepisivanju sva pojavljivanja stringa "dhe" zamijeni stringom "eifge".

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

    int main(void) {
        FILE *in, *out;
        char c1, c2, c3;
        int t;

        if((in = fopen("lgsvn.in", "r")) == NULL)
        {
            exit(1);
        }

        if((out = fopen("lgsvn.out", "w")) == NULL)
        {
            exit(2);
        }

        while((t=fscanf(in, "%c%c%c", &c1, &c2, &c3)) == 3) {
            if(c1=='d' && c2=='h' && c3=='e') {
                             fprintf(out, "%s", "eifge");
            }
            else fprintf(out, "%c%c%c", c1, c2, c3);
        }
        if(t==2) fprintf(out, "%c%c", c1, c2);
        if(t==1) fprintf(out, "%c", c1);


        fclose(in); fclose(out);
        return 0;
    }


je li while((t=fscanf(in, "%c%c%c", &c1, &c2, &c3)) == 3) "legalan" način za provjeru jesu li učitana 3 znaka?


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


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 12:42 ned, 20. 5. 2012    Naslov: Citirajte i odgovorite

rekao bih da je, ali sto se desava ako ti je u datoteci zapisano "*dhe" :?:

ucitas tri znaka, nisu jednaka 'd', 'h', 'e' pa ih prepises i onda ucitas zadnjeg i tako nikad ne zamijenis "dhe" sa cim vec treba u konkretnom primjeru
rekao bih da je, ali sto se desava ako ti je u datoteci zapisano "*dhe" Question

ucitas tri znaka, nisu jednaka 'd', 'h', 'e' pa ih prepises i onda ucitas zadnjeg i tako nikad ne zamijenis "dhe" sa cim vec treba u konkretnom primjeru



_________________
Mario Berljafa
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Lux86
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2011. (23:38:43)
Postovi: (1D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 13:11 ned, 20. 5. 2012    Naslov: Citirajte i odgovorite

[quote="Gino"]rekao bih da je, ali sto se desava ako ti je u datoteci zapisano "*dhe" :?:

ucitas tri znaka, nisu jednaka 'd', 'h', 'e' pa ih prepises i onda ucitas zadnjeg i tako nikad ne zamijenis "dhe" sa cim vec treba u konkretnom primjeru[/quote]

istina, to mi je promaknulo! a i činilo mi se da je kod nekako prejednostavan.
hvala :)
Gino (napisa):
rekao bih da je, ali sto se desava ako ti je u datoteci zapisano "*dhe" Question

ucitas tri znaka, nisu jednaka 'd', 'h', 'e' pa ih prepises i onda ucitas zadnjeg i tako nikad ne zamijenis "dhe" sa cim vec treba u konkretnom primjeru


istina, to mi je promaknulo! a i činilo mi se da je kod nekako prejednostavan.
hvala Smile


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


Pridružen/a: 11. 09. 2011. (23:38:43)
Postovi: (1D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 15:43 ned, 20. 5. 2012    Naslov: Citirajte i odgovorite

još jedan koji "radi"

Zadana je datoteka "byytwyp.in" u kojoj se u prvoj liniji nalazi prirodni broj n, a u idućih n redaka zapisani su datumi u formatu
d.m.g.
(po jedan u svakom retku). Datume treba prepisati u datoteku "byytwyp.out" u formatu
koliko:d.m.g.
pri čemu je koliko broj pojavljivanja datuma u datoteci, a datumi trebaju biti sortirani od najstarijeg prema najnovijem.

[code:1]#include <stdio.h>
#include <stdlib.h>

typedef struct _datum{
int koliko, d, m, g;

} datum;

int isti(datum d1, datum d2) {
if(d1.d == d2.d && d1.m == d2.m && d1.g == d2.g) return 1;
return 0;
}

int main(void)
{
FILE *in, *out;
datum *datumi;
int n, i, j;

if((in = fopen("byytwyp.in", "r")) == NULL) exit(1);

if((out = fopen("byytwyp.out", "w")) == NULL) exit(2);

fscanf(in, "%d", &n);
datumi = (datum*)malloc(n*sizeof(datum));

for(i=0; i<n; i++){
fscanf(in, " %d.%d.%d.", &datumi[i].d, &datumi[i].m, &datumi[i].g);
datumi[i].koliko = 1;
}
fclose(in);

for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
{
if(datumi[i].g > datumi[j].g ||
(datumi[i].g == datumi[j].g && datumi[i].m > datumi[j].m) ||
(datumi[i].g == datumi[j].g && datumi[i].m == datumi[j].m && datumi[i].d > datumi[j].d)) {
datum tmp = datumi[i];
datumi[i] = datumi[j];
datumi[j] = tmp;
}
if(isti(datumi[i], datumi[j])) ++(datumi[i].koliko);
}

for(i=0; i<n; i++)
{
if(i==0 || !isti(datumi[i], datumi[i-1]))
fprintf(out, "%d:%d.%d.%d.\n", datumi[i].koliko, datumi[i].d, datumi[i].m, datumi[i].g);
}
fclose(out);

free(datumi);
return 0;
}[/code:1][/table]
još jedan koji "radi"

Zadana je datoteka "byytwyp.in" u kojoj se u prvoj liniji nalazi prirodni broj n, a u idućih n redaka zapisani su datumi u formatu
d.m.g.
(po jedan u svakom retku). Datume treba prepisati u datoteku "byytwyp.out" u formatu
koliko:d.m.g.
pri čemu je koliko broj pojavljivanja datuma u datoteci, a datumi trebaju biti sortirani od najstarijeg prema najnovijem.

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

    typedef struct _datum{
        int koliko, d, m, g;

    } datum;

    int isti(datum d1, datum d2) {
        if(d1.d == d2.d && d1.m == d2.m && d1.g == d2.g) return 1;
        return 0;
    }

    int main(void)
    {
        FILE *in, *out;
        datum *datumi;
        int n, i, j;

         if((in = fopen("byytwyp.in", "r")) == NULL) exit(1);

        if((out = fopen("byytwyp.out", "w")) == NULL) exit(2);

        fscanf(in, "%d", &n);
        datumi = (datum*)malloc(n*sizeof(datum));

        for(i=0; i<n; i++){
            fscanf(in, " %d.%d.%d.", &datumi[i].d, &datumi[i].m, &datumi[i].g);
            datumi[i].koliko = 1;
        }
        fclose(in);

        for(i=0; i<n; i++)
            for(j=i+1; j<n; j++)
            {
                if(datumi[i].g > datumi[j].g ||
                (datumi[i].g == datumi[j].g && datumi[i].m > datumi[j].m) ||
                (datumi[i].g == datumi[j].g && datumi[i].m == datumi[j].m && datumi[i].d > datumi[j].d)) {
                    datum tmp = datumi[i];
                    datumi[i] = datumi[j];
                    datumi[j] = tmp;
                }
                if(isti(datumi[i], datumi[j])) ++(datumi[i].koliko);
            }

            for(i=0; i<n; i++)
            {
                if(i==0 || !isti(datumi[i], datumi[i-1]))
                    fprintf(out, "%d:%d.%d.%d.\n", datumi[i].koliko, datumi[i].d, datumi[i].m, datumi[i].g);
            }
        fclose(out);

        free(datumi);
        return 0;
    }
[/table]


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


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

PostPostano: 20:01 ned, 20. 5. 2012    Naslov: Citirajte i odgovorite

Zbog jednostavnosti, recimo da imas brojeve, a ne datume (ista stvar):

[table]broj koliko [tt]i[/tt],[tt]j[/tt]
2 1
2 1
0 1
2 1
1 1[/table]
Nakon prvog koraka petlje (ali prije nego udjes u tijelo petlje), imas ovo:
[table]broj koliko [tt]i[/tt],[tt]j[/tt]
2 2 [tt]i = 0[/tt]
2 1
0 1 [tt]j = 2[/tt]
2 1
1 1[/table]
jer si nasao dva koji su isti prvom. Zatim, u tijelu petlje, imas zamjenu, pa dobijes:
[table]broj koliko [tt]i[/tt],[tt]j[/tt]
0 1 [tt]i = 0[/tt]
2 1
2 2 [tt]j = 2[/tt]
2 1
1 1[/table]
Sad nastavis dalje. Nekoliko koraka dalje, imat ces:
[table]broj koliko [tt]i[/tt],[tt]j[/tt]
0 1
2 3 [tt]i = 1[/tt]
2 2
2 1
1 1 [tt]j = 4[/tt][/table]
i sada ide zamjena, pa imas:
[table]broj koliko [tt]i[/tt],[tt]j[/tt]
0 1
1 1 [tt]i = 1[/tt]
2 2
2 1
2 3 [tt]j = 4[/tt][/table]
Konacno, iduci korak vanjske petlje zapocinje s:
[table]broj koliko [tt]i[/tt],[tt]j[/tt]
0 1
1 1
2 2 [tt]i = 2[/tt]
2 1
2 3[/table]
Sada ces [tt]i[/tt]-tom brojati dva "ista", pa ces dobiti da ih ima 2+1+1 = 4, sto je krivo. Desilo se da si zadnjeg brojao i sada i dok je bio drugi.

Preporuka: "istost" provjeravaj u jednoj petlji (linearna slozenost) nakon sorta, a ne kao dio sorta.

Alternativno, mozes svakom "istom" staviti [tt]koliko[/tt] na nulu, ali onda moras paziti da povecanje ide za vrijednost polja [tt]koliko[/tt] ([tt]datumi[i].koliko += datumi[j].koliko; datumi[j].koliko = 0;[/tt]) i da ispisujes samo one kojima je [tt]koliko != 0[/tt].
Zbog jednostavnosti, recimo da imas brojeve, a ne datume (ista stvar):

brojkolikoi,j
21 
21 
01 
21 
11 

Nakon prvog koraka petlje (ali prije nego udjes u tijelo petlje), imas ovo:
brojkolikoi,j
22i = 0
21 
01j = 2
21 
11 

jer si nasao dva koji su isti prvom. Zatim, u tijelu petlje, imas zamjenu, pa dobijes:
brojkolikoi,j
01i = 0
21 
22j = 2
21 
11 

Sad nastavis dalje. Nekoliko koraka dalje, imat ces:
brojkolikoi,j
01 
23i = 1
22 
21 
11j = 4

i sada ide zamjena, pa imas:
brojkolikoi,j
01 
11i = 1
22 
21 
23j = 4

Konacno, iduci korak vanjske petlje zapocinje s:
brojkolikoi,j
01 
11 
22i = 2
21 
23 

Sada ces i-tom brojati dva "ista", pa ces dobiti da ih ima 2+1+1 = 4, sto je krivo. Desilo se da si zadnjeg brojao i sada i dok je bio drugi.

Preporuka: "istost" provjeravaj u jednoj petlji (linearna slozenost) nakon sorta, a ne kao dio sorta.

Alternativno, mozes svakom "istom" staviti koliko na nulu, ali onda moras paziti da povecanje ide za vrijednost polja koliko (datumi[i].koliko += datumi[j].koliko; datumi[j].koliko = 0;) i da ispisujes samo one kojima je koliko != 0.



_________________
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
Lux86
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2011. (23:38:43)
Postovi: (1D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 20:24 ned, 20. 5. 2012    Naslov: Citirajte i odgovorite

ahaa, ja sam isključila mogućnost da ovaj "isti" s manjim "koliko" dođe ispred "originala".
puno hvala, proradilo je sad :D
ahaa, ja sam isključila mogućnost da ovaj "isti" s manjim "koliko" dođe ispred "originala".
puno hvala, proradilo je sad Very Happy


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


Pridružen/a: 02. 09. 2011. (16:37:55)
Postovi: (44)16
Spol: žensko
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 20:25 pon, 21. 5. 2012    Naslov: Citirajte i odgovorite

ne znam je li razmišljanje kojim sam se povela uopće ok, ali za moje primjere je čak davalo dobro rezultate.
zadatak je: Napišite program koji čita datoteku "saazjq.in", te ju prepisuje u datoteku "saazjq.out" tako da u prepisivanju sva pojavljivanja stringa "tcj" zamijeni stringom "fnqfmoz".
[code:1]
#include <stdio.h>
#include <stdlib.h>

int main(void) {
FILE *in, *out;
char c1, c2, c3;
int t, k, s;
if((in = fopen("saazjq.in", "r")) == NULL)
{
exit(-1);
}

if((out = fopen("saazjq.out", "w")) == NULL)
{
exit(-2);
}

prva: while((t=fscanf(in, "%c", &c1) == 1)) {
duga: if(c1!='t')
{
fprintf(out, "%c", c1);
goto prva;
} /*ako je c1=t preci ce na sljedecu naredbu*/
while((k=fscanf(in, "%c", &c2) == 1)) {
if(c2!='c')
{
fprintf(out, "%c", c1);
c1=c2;
goto duga;
}
while((s=fscanf(in, "%c", &c3) == 1)) {
if(c3!='j') {
fprintf(out, "%c%c", c1, c2);
c1=c3;
goto prva;
}
fprintf(out, "%s", "fnqfmoz");
goto prva;
}
}
}

fclose(in); fclose(out);
return 0;
}
[/code:1]
ne znam je li razmišljanje kojim sam se povela uopće ok, ali za moje primjere je čak davalo dobro rezultate.
zadatak je: Napišite program koji čita datoteku "saazjq.in", te ju prepisuje u datoteku "saazjq.out" tako da u prepisivanju sva pojavljivanja stringa "tcj" zamijeni stringom "fnqfmoz".
Kod:

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

    int main(void) {
        FILE *in, *out;
        char c1, c2, c3;
        int t, k, s;
    if((in = fopen("saazjq.in", "r")) == NULL)
        {
            exit(-1);
        }

        if((out = fopen("saazjq.out", "w")) == NULL)
        {
            exit(-2);
        }

    prva: while((t=fscanf(in, "%c", &c1) == 1)) {
      duga:   if(c1!='t')
                {
                    fprintf(out, "%c", c1);
                     goto prva;
                     }  /*ako je c1=t preci ce na sljedecu naredbu*/
                while((k=fscanf(in, "%c", &c2) == 1)) {
                        if(c2!='c')
                        {
                            fprintf(out, "%c", c1);
                             c1=c2;
                              goto duga;
                        }
                      while((s=fscanf(in, "%c", &c3) == 1)) {
                            if(c3!='j') {
                                fprintf(out, "%c%c", c1, c2);
                                 c1=c3;
                                 goto prva;
                                 }
                            fprintf(out, "%s", "fnqfmoz");
                            goto prva;
            }
        }
    }

    fclose(in); fclose(out);
        return 0;
    }




Zadnja promjena: boksi; 18:42 uto, 22. 5. 2012; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Gino
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 23:05 pon, 21. 5. 2012    Naslov: Citirajte i odgovorite

[quote="boksi"]ne znam je li razmišljanje kojim sam se povela uopće ok, ali za moje primjere je čak davalo dobro rezultate.
zadatak je: Napišite program koji čita datoteku "saazjq.in", te ju prepisuje u datoteku "saazjq.out" tako da u prepisivanju sva pojavljivanja stringa "tcj" zamijeni stringom "fnqfmoz".
[/quote]

Kod je bas koma, i to ne zbog [tt]goto[/tt], ja osobno nemam nista protiv [tt]goto[/tt]-a, mislim da ga i moje rjesenje koristi :D

Ne kuzim tocno zasto se koristi [tt]while[/tt] umjesto [tt]if[/tt], i ne znam cemu sluze varijable [tt]t, k,s[/tt].

Cini mi se da ti nebi radilo za dototeku sadrzaja [tt]ttcj[/tt].
boksi (napisa):
ne znam je li razmišljanje kojim sam se povela uopće ok, ali za moje primjere je čak davalo dobro rezultate.
zadatak je: Napišite program koji čita datoteku "saazjq.in", te ju prepisuje u datoteku "saazjq.out" tako da u prepisivanju sva pojavljivanja stringa "tcj" zamijeni stringom "fnqfmoz".


Kod je bas koma, i to ne zbog goto, ja osobno nemam nista protiv goto-a, mislim da ga i moje rjesenje koristi Very Happy

Ne kuzim tocno zasto se koristi while umjesto if, i ne znam cemu sluze varijable t, k,s.

Cini mi se da ti nebi radilo za dototeku sadrzaja ttcj.



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


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

PostPostano: 0:29 uto, 22. 5. 2012    Naslov: Citirajte i odgovorite

[quote="Gino"]Cini mi se da ti nebi radilo za dototeku sadrzaja [tt]ttcj[/tt].[/quote]

Tocno. Klasicni problem s ovim zadatkom: ako neki znak nije dobar kao drugo slovo, ne znaci da nije dobar niti kao prvo (a vecina krivih rjesenja upravo to pretpostavlja).
Gino (napisa):
Cini mi se da ti nebi radilo za dototeku sadrzaja ttcj.


Tocno. Klasicni problem s ovim zadatkom: ako neki znak nije dobar kao drugo slovo, ne znaci da nije dobar niti kao prvo (a vecina krivih rjesenja upravo to pretpostavlja).



_________________
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
boksi
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 09. 2011. (16:37:55)
Postovi: (44)16
Spol: žensko
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 18:40 uto, 22. 5. 2012    Naslov: Citirajte i odgovorite

ah, znam da je koma, programiranje i ja, ja i programiranje :oops:
sad mi radi za ttcj, i slične primjere, ali je neprihvaćen, ništa, treba mi nova ideja i mnogo strpljenja i rada :?
ah, znam da je koma, programiranje i ja, ja i programiranje Embarassed
sad mi radi za ttcj, i slične primjere, ali je neprihvaćen, ništa, treba mi nova ideja i mnogo strpljenja i rada Confused


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


Pridružen/a: 22. 10. 2011. (16:47:39)
Postovi: (DA)16
Spol: muško
Sarma = la pohva - posuda
20 = 26 - 6

PostPostano: 19:09 uto, 22. 5. 2012    Naslov: Citirajte i odgovorite

[quote="boksi"]ah, znam da je koma, programiranje i ja, ja i programiranje :oops:
sad mi radi za ttcj, i slične primjere, ali je neprihvaćen, ništa, treba mi nova ideja i mnogo strpljenja i rada :?[/quote]

Za razliku od unosa preko tipkovnice, u datotekama imaš sačuvane podatke, iskoristi to :wink:

Na što mislim, mislim na "resetiranje" učitavanja podatka; provjeriš neki string, a onda ponovno učitavaš samo bez prvog elementa tog stringa (to možeš realizirati pomoću funkcije [tt]ungets[/tt], ali i pomoću [tt]fscanf[/tt] otvaranjem i zatvaranjem datoteke te pamćenjem mjesta) i onda dalje provjeravaš.
To je jedna ideja koja nije toliko teška za iskodirati, a meni prva pada napamet :D
boksi (napisa):
ah, znam da je koma, programiranje i ja, ja i programiranje Embarassed
sad mi radi za ttcj, i slične primjere, ali je neprihvaćen, ništa, treba mi nova ideja i mnogo strpljenja i rada Confused


Za razliku od unosa preko tipkovnice, u datotekama imaš sačuvane podatke, iskoristi to Wink

Na što mislim, mislim na "resetiranje" učitavanja podatka; provjeriš neki string, a onda ponovno učitavaš samo bez prvog elementa tog stringa (to možeš realizirati pomoću funkcije ungets, ali i pomoću fscanf otvaranjem i zatvaranjem datoteke te pamćenjem mjesta) i onda dalje provjeravaš.
To je jedna ideja koja nije toliko teška za iskodirati, a meni prva pada napamet Very Happy


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


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 22:07 uto, 22. 5. 2012    Naslov: Citirajte i odgovorite

[quote="quark"]otvaranjem i zatvaranjem datoteke te pamćenjem mjesta[/quote]
Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije [tt]ftell[/tt] i [tt]fseek[/tt].
quark (napisa):
otvaranjem i zatvaranjem datoteke te pamćenjem mjesta

Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije ftell i fseek.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
quark
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 10. 2011. (16:47:39)
Postovi: (DA)16
Spol: muško
Sarma = la pohva - posuda
20 = 26 - 6

PostPostano: 22:38 uto, 22. 5. 2012    Naslov: Citirajte i odgovorite

[quote="mdoko"][quote="quark"]otvaranjem i zatvaranjem datoteke te pamćenjem mjesta[/quote]
Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije [tt]ftell[/tt] i [tt]fseek[/tt].[/quote]

Aha, s [tt]ftell[/tt] dobijemo broj bajtova od početka i onda nam to bude argument u [tt]fseek[/tt] bez obzira je li binarna ili tekstualna.

Hvala na ispravku :)

Logično mi je da je loše stalno otvarati i zatvarati datoteke (naročito ako se može izbjeći), ali što bi se eventualno moglo dogoditi? Oštećenje podataka?
mdoko (napisa):
quark (napisa):
otvaranjem i zatvaranjem datoteke te pamćenjem mjesta

Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije ftell i fseek.


Aha, s ftell dobijemo broj bajtova od početka i onda nam to bude argument u fseek bez obzira je li binarna ili tekstualna.

Hvala na ispravku Smile

Logično mi je da je loše stalno otvarati i zatvarati datoteke (naročito ako se može izbjeći), ali što bi se eventualno moglo dogoditi? Oštećenje podataka?


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


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

PostPostano: 22:57 uto, 22. 5. 2012    Naslov: Citirajte i odgovorite

[quote="mdoko"][quote="quark"]otvaranjem i zatvaranjem datoteke te pamćenjem mjesta[/quote]
Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije [tt]ftell[/tt] i [tt]fseek[/tt].[/quote]

Ili [tt]rewind()[/tt]. :)

Za konkretni zadatak, dosta je pamcenje zadnja 3 ucitana znaka u stringu ([tt]char[4][/tt]). Krecemo s praznim stringom i onda u petlji novoprocitani znak dodamo na kraj tog stringa, pa imamo slucajeve:
1. string je kraci od 3 znaka :arrow: nista,
2. string ima 3 znaka i jednak je [tt]"tcj"[/tt] :arrow: zapisi [tt]"fnqfmoz"[/tt],
2. string ima 3 znaka i nije jednak je [tt]"tcj"[/tt] :arrow: zapisi njegov prvi znak, a ostale (ukljucivo i nul-znak!) pomakni za jedno mjesto u lijevo (tj. izbrisi taj prvi znak iz stringa).

Nakon petlje, zapisati stogod da je ostalo u stringu (max. dva znaka, no zapise se s obicnim [tt]%s[/tt]). Simple. 8)
mdoko (napisa):
quark (napisa):
otvaranjem i zatvaranjem datoteke te pamćenjem mjesta

Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije ftell i fseek.


Ili rewind(). Smile

Za konkretni zadatak, dosta je pamcenje zadnja 3 ucitana znaka u stringu (char[4]). Krecemo s praznim stringom i onda u petlji novoprocitani znak dodamo na kraj tog stringa, pa imamo slucajeve:
1. string je kraci od 3 znaka Arrow nista,
2. string ima 3 znaka i jednak je "tcj" Arrow zapisi "fnqfmoz",
2. string ima 3 znaka i nije jednak je "tcj" Arrow zapisi njegov prvi znak, a ostale (ukljucivo i nul-znak!) pomakni za jedno mjesto u lijevo (tj. izbrisi taj prvi znak iz stringa).

Nakon petlje, zapisati stogod da je ostalo u stringu (max. dva znaka, no zapise se s obicnim %s). Simple. Cool



_________________
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
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 0:34 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

[quote="quark"]
Logično mi je da je loše stalno otvarati i zatvarati datoteke (naročito ako se može izbjeći), ali što bi se eventualno moglo dogoditi? Oštećenje podataka?[/quote]
Moglo bi se dogoditi da program radi užasno sporo, jer pri svakom otvaranju treba dio datoteke učitati u buffer u RAM-u, pa onda pri zatvaranju sve eventualne izmjene zapisati na disk i izvršiti dealokaciju. Ako se to često ponavlja, može postati čupavo. (Naravno, ne na ovim uvodnim primjerima, ali nikako nije dobro steći takvu naviku.)

[quote="vsego"][quote="mdoko"]
Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije [tt]ftell[/tt] i [tt]fseek[/tt].[/quote]
Ili [tt]rewind()[/tt]. :)[/quote]
[tt]rewind(fp)[/tt] je isto što i [tt]fseek(fp, 0, SEEK_SET)[/tt], pa mi se nije baš dalo posebno navoditi tu funkciju ;)
quark (napisa):

Logično mi je da je loše stalno otvarati i zatvarati datoteke (naročito ako se može izbjeći), ali što bi se eventualno moglo dogoditi? Oštećenje podataka?

Moglo bi se dogoditi da program radi užasno sporo, jer pri svakom otvaranju treba dio datoteke učitati u buffer u RAM-u, pa onda pri zatvaranju sve eventualne izmjene zapisati na disk i izvršiti dealokaciju. Ako se to često ponavlja, može postati čupavo. (Naravno, ne na ovim uvodnim primjerima, ali nikako nije dobro steći takvu naviku.)

vsego (napisa):
mdoko (napisa):

Nije dobra ideja repetitivno otvarati i zatvarati datoteku, pogotovo ako se to radi isključivo radi repozicioniranja. Za to služe funkcije ftell i fseek.

Ili rewind(). Smile

rewind(fp) je isto što i fseek(fp, 0, SEEK_SET), pa mi se nije baš dalo posebno navoditi tu funkciju Wink



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
vsego
Site Admin
Site Admin


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

PostPostano: 2:14 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

[quote="mdoko"][tt]rewind(fp)[/tt] je isto što i [tt]fseek(fp, 0, SEEK_SET)[/tt], pa mi se nije baš dalo posebno navoditi tu funkciju ;)[/quote]

Nije. [tt]rewind()[/tt] pocisti EOF i err flagove (sto je obicno pozeljno ako kreces od pocetka datoteke). Za [tt]fseek()[/tt] nije definirano standardom. Experiment je pokazao da na Win (XP, gcc od nekog Code::Blocks-a) [tt]fseek()[/tt] ne resetira nista, a na Lin (F16, gcc 4.6.3 20120306) resetira EOF, ali ne i err.
mdoko (napisa):
rewind(fp) je isto što i fseek(fp, 0, SEEK_SET), pa mi se nije baš dalo posebno navoditi tu funkciju Wink


Nije. rewind() pocisti EOF i err flagove (sto je obicno pozeljno ako kreces od pocetka datoteke). Za fseek() nije definirano standardom. Experiment je pokazao da na Win (XP, gcc od nekog Code::Blocks-a) fseek() ne resetira nista, a na Lin (F16, gcc 4.6.3 20120306) resetira EOF, ali ne i err.



_________________
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
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 13:41 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

[quote="vsego"][quote="mdoko"][tt]rewind(fp)[/tt] je isto što i [tt]fseek(fp, 0, SEEK_SET)[/tt], pa mi se nije baš dalo posebno navoditi tu funkciju ;)[/quote]
Nije. [tt]rewind()[/tt] pocisti EOF i err flagove (sto je obicno pozeljno ako kreces od pocetka datoteke). Za [tt]fseek()[/tt] nije definirano standardom. Experiment je pokazao da na Win (XP, gcc od nekog Code::Blocks-a) [tt]fseek()[/tt] ne resetira nista, a na Lin (F16, gcc 4.6.3 20120306) resetira EOF, ali ne i err.[/quote]
U pravu si. Nisam o tome razmišljao.
vsego (napisa):
mdoko (napisa):
rewind(fp) je isto što i fseek(fp, 0, SEEK_SET), pa mi se nije baš dalo posebno navoditi tu funkciju Wink

Nije. rewind() pocisti EOF i err flagove (sto je obicno pozeljno ako kreces od pocetka datoteke). Za fseek() nije definirano standardom. Experiment je pokazao da na Win (XP, gcc od nekog Code::Blocks-a) fseek() ne resetira nista, a na Lin (F16, gcc 4.6.3 20120306) resetira EOF, ali ne i err.

U pravu si. Nisam o tome razmišljao.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
piccola
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2009. (15:39:50)
Postovi: (D7)16
Sarma = la pohva - posuda
= 10 - 8

PostPostano: 18:39 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

Napišite program koji učitava jednu liniju teksta s najviše 18450 znakova. Tom tekstu treba izbrisati svaku 4. riječ, a ostalima izokrenuti redoslijed slova (same riječi ostaju u originalnom poretku). Tako dobiveni tekst treba ispisati.
Možete pretpostaviti da tekst sadrži samo slova i razmake.

[code:1]#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int main()
{
int i, l, d, br = 0, brisi;
char temp,s[18451];
scanf("%[^\n]", s);
if(s[0]==' ')
{
for(i=0; s[i] != '\0'; i++ )
{
if(br%4 == 0 )
while(isalpha(s[i]))
{
s[i]=s[i-1];
i++;
}
if(s[i]==' ' && isalpha(s[i+1]))
br++;
}
}
else
{
for(i=0; s[i] != '\0'; i++ )
{
if((br+1)%4 == 0 )
while(isalpha(s[i]))
{
s[i]=s[i-1];
i++;
}
if(s[i]==' ' && isalpha(s[i+1]))
br++;
}
}

for (i = 0; s[i] != '\0'; i++)
{
if (isspace(s[i]))
{
i++;
if (isalpha(s[i]))
{
l = i;
i++;
while (isalpha(s[i]))
{
d = i;
i++;
}
br++;

while (l < d)
{
temp = s[l];
s[l] = s[d];
s[d] = temp;
l++;
d--;
}

}
}
else
{
if (isalpha(s[i]))
{
l = i;
i++;
while (isalpha(s[i]))
{
d = i;
i++;
}
while (l < d)
{
temp = s[l];
s[l] = s[d];
s[d] = temp;
l++;
d--;
}
}
}
i--;
}

printf("%s", s);
system("pause");
}
[/code:1]

Može pomoć? Nisam baš na ti s programiranjem pa mi nije jasno u čemu bi mogao bit problem u ovom zadatku jer meni program za velik komad teksta radi dobro. Znam da nije baš najjednostavnije rješenje, al muči me što ne kužim u čemu je greška :?
Napišite program koji učitava jednu liniju teksta s najviše 18450 znakova. Tom tekstu treba izbrisati svaku 4. riječ, a ostalima izokrenuti redoslijed slova (same riječi ostaju u originalnom poretku). Tako dobiveni tekst treba ispisati.
Možete pretpostaviti da tekst sadrži samo slova i razmake.

Kod:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int main()
{
    int i, l, d, br = 0, brisi;
    char temp,s[18451];
    scanf("%[^\n]", s);
    if(s[0]==' ')
    {
     for(i=0; s[i] != '\0'; i++ )
     {
              if(br%4 == 0 )
                while(isalpha(s[i]))
                {
                    s[i]=s[i-1];
                    i++;
                }
              if(s[i]==' ' &&  isalpha(s[i+1]))
                    br++;
     }
    }
    else
    {
     for(i=0; s[i] != '\0'; i++ )
     {
              if((br+1)%4 == 0 )
                 while(isalpha(s[i]))
                 {
                     s[i]=s[i-1];
                     i++;
                 }
              if(s[i]==' ' &&  isalpha(s[i+1]))
                     br++;
     }
    }
   
    for (i = 0; s[i] != '\0'; i++)
    {
     if (isspace(s[i]))
     {
           i++;
           if (isalpha(s[i]))
           {
              l = i;
              i++;
              while (isalpha(s[i]))
              {
                    d = i;
                    i++;
              }
              br++;
                                         
              while (l < d)
              {
                    temp = s[l];
                    s[l] = s[d];
                    s[d] = temp;
                    l++;
                    d--;
              }
                                         
           }
     }
     else
     {
        if (isalpha(s[i]))
        {
           l = i;
           i++;
           while (isalpha(s[i]))
           {
                 d = i;
                 i++;
           }
           while (l < d)
           {
                 temp = s[l];
                 s[l] = s[d];
                 s[d] = temp;
                 l++;
                 d--;
           }
        }
     } 
     i--;
    }
   
printf("%s", s);
system("pause");
}


Može pomoć? Nisam baš na ti s programiranjem pa mi nije jasno u čemu bi mogao bit problem u ovom zadatku jer meni program za velik komad teksta radi dobro. Znam da nije baš najjednostavnije rješenje, al muči me što ne kužim u čemu je greška Confused


[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 ... 8, 9, 10, 11, 12, 13  Sljedeće
Stranica 9 / 13.

 
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