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 ... 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
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: 19:16 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

nisam bas gledao kod, imam previse posla, ali za [tt]abc abc abc def ghi
[/tt] vrati [tt]cba cba cba ___ ihg[/tt] sta nije dobro, trebalo bi vratiti valjda [tt]cba cba cba ihg[/tt] pa probaj promijeniti dio koda odgovoran za taj dio

tamo sam dodao _ umjesto razmaka, jer se nisu bas lijepo prikazivali, ali dakle, ispada da ti rijec zamijenis s razmacima (kazem, nisam gledao kod, al na ovom primjeru tako ispada...)
nisam bas gledao kod, imam previse posla, ali za abc abc abc def ghi
vrati cba cba cba ___ ihg sta nije dobro, trebalo bi vratiti valjda cba cba cba ihg pa probaj promijeniti dio koda odgovoran za taj dio

tamo sam dodao _ umjesto razmaka, jer se nisu bas lijepo prikazivali, ali dakle, ispada da ti rijec zamijenis s razmacima (kazem, nisam gledao kod, al na ovom primjeru tako ispada...)



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


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

PostPostano: 19:20 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

Aha, znači riječi treba skroz maknut...e, nisam tako skužila zdk, sad ću ispravit. Hvala :)
Aha, znači riječi treba skroz maknut...e, nisam tako skužila zdk, sad ću ispravit. Hvala Smile


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


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

PostPostano: 19:29 sri, 23. 5. 2012    Naslov: Citirajte i odgovorite

Pa, pise da treba "izbrisati" (ne pise "zamijeniti s razmacima"). Takodjer, makni ono [tt]system("pause");[/tt] s kraja. To ti ionako ne treba ako nisi u DevC++.
Pa, pise da treba "izbrisati" (ne pise "zamijeniti s razmacima"). Takodjer, makni ono system("pause"); s kraja. To ti ionako ne treba ako nisi u DevC++.



_________________
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
true.false
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 10. 2011. (17:37:39)
Postovi: (28)16
Sarma = la pohva - posuda
= 9 - 0

PostPostano: 18:25 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

Moze mi netko reci zasto mi aplikacija za zadace ne prihvaca slijedeci program.. Sam ne vidim gresku. Mozda postoji primjer za koji ne daje dobar string?? :? Bio bi zahvalan ako me netko prosvijetli :)
Zadatak je glasio: Napišite program koji učitava jednu liniju teksta s najviše 17924 znakova. Tom tekstu treba izbrisati svaku 3. 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>

int main(void){
char string[17925];
int k=0, i=0, brojac=1, o, j, r;
char temp;
printf("Unesi string:\n");
scanf(" %[^\n]", string);
for(i=0;string[i]!='\0';i++){
if(string[i]==' ')brojac++;
if(brojac%3==0){
while(1){
i++;
k++;
if(string[i]==' '||string[i]=='\0')break;
}
brojac++;
}
string[i-k]=string[i];
}
string[i-k]='\0';
// izbacena svaka treca rijec..
k=0;
i=0;
while(1){
if(string[i]==' '||string[i]=='\0')break;
k++;
i++;
}
o=k-1;
for(j=0;j<k/2;j++){
temp=string[j];
string[j]=string[o];
string[o]=temp;
o--;
}
// invertirana prva rijec..
for(i=0;string[i]!='\0';i++){
k=0;
if(string[i]==' '){
r=1;
while(1){
if(string[i+r]==' '||string[i+r]=='\0')break;
k++;
r++;
}
o=k;
for(j=1;j<=k/2;j++){
temp=string[i+j];
string[i+j]=string[i+o];
string[i+o]=temp;
o--;
}
}
i=i+k;
}
// invertirane ostale rijeci..
printf("%s", string);
return 0;
}
[/code:1]
Moze mi netko reci zasto mi aplikacija za zadace ne prihvaca slijedeci program.. Sam ne vidim gresku. Mozda postoji primjer za koji ne daje dobar string?? Confused Bio bi zahvalan ako me netko prosvijetli Smile
Zadatak je glasio: Napišite program koji učitava jednu liniju teksta s najviše 17924 znakova. Tom tekstu treba izbrisati svaku 3. 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>

int main(void){
    char string[17925];
    int k=0, i=0, brojac=1, o, j, r;
    char temp;
    printf("Unesi string:\n");
    scanf(" %[^\n]", string);
    for(i=0;string[i]!='\0';i++){
        if(string[i]==' ')brojac++;
        if(brojac%3==0){
            while(1){
            i++;
            k++;
            if(string[i]==' '||string[i]=='\0')break;
            }
          brojac++;
        }
        string[i-k]=string[i];
    }
    string[i-k]='\0';
    // izbacena svaka treca rijec..
    k=0;
    i=0;
    while(1){
        if(string[i]==' '||string[i]=='\0')break;
        k++;
        i++;
    }
    o=k-1;
    for(j=0;j<k/2;j++){
        temp=string[j];
        string[j]=string[o];
        string[o]=temp;
        o--;
    }
    // invertirana prva rijec..
    for(i=0;string[i]!='\0';i++){
        k=0;
        if(string[i]==' '){
            r=1;
            while(1){
            if(string[i+r]==' '||string[i+r]=='\0')break;
            k++;
            r++;
            }
            o=k;
            for(j=1;j<=k/2;j++){
               temp=string[i+j];
               string[i+j]=string[i+o];
               string[i+o]=temp;
               o--;
            }
        }
        i=i+k;
    }
// invertirane ostale rijeci..
    printf("%s", string);
return 0;
}
 


[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: 18:48 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

nesmijes napisat unesi string,
zbog razmaka prije postotka u [tt]scanf(" %[^\n]", string); [/tt] ces preskociti prve bjeline, ako je uneseni string bio ' aaa', tebi ce biti 'aaa', mislim da to nije ideja zadatka

again, nisam gledao ostatak koda... ako ovo nije dosta, budem onda
nesmijes napisat unesi string,
zbog razmaka prije postotka u scanf(" %[^\n]", string); ces preskociti prve bjeline, ako je uneseni string bio ' aaa', tebi ce biti 'aaa', mislim da to nije ideja zadatka

again, nisam gledao ostatak koda... ako ovo nije dosta, budem onda



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


Pridružen/a: 12. 10. 2011. (17:37:39)
Postovi: (28)16
Sarma = la pohva - posuda
= 9 - 0

PostPostano: 19:21 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

[quote="Gino"]nesmijes napisat unesi string,
zbog razmaka prije postotka u [tt]scanf(" %[^\n]", string); [/tt] ces preskociti prve bjeline, ako je uneseni string bio ' aaa', tebi ce biti 'aaa', mislim da to nije ideja zadatka

again, nisam gledao ostatak koda... ako ovo nije dosta, budem onda[/quote]

Ispravio sam to sto je receno, ali opet javlja gresku, tj. ne prihvaca kod.. :?
Gino (napisa):
nesmijes napisat unesi string,
zbog razmaka prije postotka u scanf(" %[^\n]", string); ces preskociti prve bjeline, ako je uneseni string bio ' aaa', tebi ce biti 'aaa', mislim da to nije ideja zadatka

again, nisam gledao ostatak koda... ako ovo nije dosta, budem onda


Ispravio sam to sto je receno, ali opet javlja gresku, tj. ne prihvaca kod.. Confused


[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: 19:47 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

rijeci mogu biti odvojene i npr. tabovima, ti taj simbol tretiras kao svako drugo slovo, mislim da to nije ok i idem jos malo gledat kod, al nadam se da ce vec s ovim radit... :D
rijeci mogu biti odvojene i npr. tabovima, ti taj simbol tretiras kao svako drugo slovo, mislim da to nije ok i idem jos malo gledat kod, al nadam se da ce vec s ovim radit... Very Happy



_________________
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: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 20:00 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

Prvo, uzastopne razmake ti broji kao (prazne) rijeci. Tako ce ti ova dva ulaza dati razlicite rezultate:
[code:1]a b c d
a b c d[/code:1]
Prvom ce ispravno obrisati "c", a drugom (neispravno) "b".

Drugo,
[code:1] for(i=0;string[i]!='\0';i++){
if(string[i]==' ')brojac++;
if(brojac%3==0){
while(1){
i++;
k++;
if(string[i]==' '||string[i]=='\0')break;
}
brojac++;
}
string[i-k]=string[i];
}[/code:1]
ovo trivijalno odleti preko nul-znaka: unutrasnja petlja dodje na [tt]i[/tt] takav da je [tt]s[i] == '\0'[/tt], onda inkrement for-petlje ode na mjesto iza i tko zna kuda odleti nakon toga. Ako ode predaleko, moze srusiti program.

Rad s rijecima je lijepo objasnjen na predavanjima.
Prvo, uzastopne razmake ti broji kao (prazne) rijeci. Tako ce ti ova dva ulaza dati razlicite rezultate:
Kod:
a b c d
a  b c d

Prvom ce ispravno obrisati "c", a drugom (neispravno) "b".

Drugo,
Kod:
    for(i=0;string[i]!='\0';i++){
        if(string[i]==' ')brojac++;
        if(brojac%3==0){
            while(1){
            i++;
            k++;
            if(string[i]==' '||string[i]=='\0')break;
            }
          brojac++;
        }
        string[i-k]=string[i];
    }

ovo trivijalno odleti preko nul-znaka: unutrasnja petlja dodje na i takav da je s[i] == '\0', onda inkrement for-petlje ode na mjesto iza i tko zna kuda odleti nakon toga. Ako ode predaleko, moze srusiti program.

Rad s rijecima je lijepo objasnjen na predavanjima.



_________________
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
true.false
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 10. 2011. (17:37:39)
Postovi: (28)16
Sarma = la pohva - posuda
= 9 - 0

PostPostano: 21:01 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

[quote="vsego"]Prvo, uzastopne razmake ti broji kao (prazne) rijeci.
[/quote]

Da! Nisam razmisljao o tome da ce biti uzastopnih razmaka... :)
Hvala! 8)
vsego (napisa):
Prvo, uzastopne razmake ti broji kao (prazne) rijeci.


Da! Nisam razmisljao o tome da ce biti uzastopnih razmaka... Smile
Hvala! Cool


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


Pridružen/a: 31. 01. 2011. (18:42:32)
Postovi: (3A)16
Sarma = la pohva - posuda
= 6 - 5

PostPostano: 21:41 čet, 24. 5. 2012    Naslov: Citirajte i odgovorite

Zad:
Napišite program koji èita datoteku "ornmc.in", te ju prepisuje u datoteku "ornmc.out" tako da u prepisivanju sva
pojavljivanja stringa "sww" zamijeni stringom "nqvsj".
Napomena: Nemojte uvoditi ogranièenja na duljinu datoteke i/ili pojedinih linija i rijeèi u datoteci.
[code:1]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *f,*g;
char s1[4],s2[6],c,ch,cha,b;
int i,j,br=0,k=0;
strcpy (s1,"sww");
strcpy (s2,"nqvsj");
printf("%s",s1);
if((f=fopen("ornmc.in.txt","rt"))==0)
exit(-1);
if((g=fopen("ornmc.out.txt","wt"))==0)
exit(-1);
while(fscanf(f,"%c",&b)==1) br++;
while(k<br)
{
fscanf(f,"%c",&c);
if (c==s1[0])
{
fscanf(f,"%c",&ch);
if (ch==s1[1])
{
fscanf(f,"%c",&cha);
if (cha==s1[2])
{
for(i=0;s2[i]!='\0';i++)
fprintf(g,"%c",s2[i]);

}else fprintf(g,"%c%c%c",c,ch,cha);
}
else fprintf(g,"%c%c",c,ch);

}
else fprintf(g,"%c",c);
k++;
}



fclose(f);
fclose(g);
return 0;

}


[/code:1]

Koliko je "legalan" ovaj kod? Ako mi netko može napisati sve greske?
Hvala unaprijed...
Zad:
Napišite program koji èita datoteku "ornmc.in", te ju prepisuje u datoteku "ornmc.out" tako da u prepisivanju sva
pojavljivanja stringa "sww" zamijeni stringom "nqvsj".
Napomena: Nemojte uvoditi ogranièenja na duljinu datoteke i/ili pojedinih linija i rijeèi u datoteci.
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
    FILE *f,*g;
    char s1[4],s2[6],c,ch,cha,b;
    int i,j,br=0,k=0;
    strcpy (s1,"sww");
    strcpy (s2,"nqvsj");
    printf("%s",s1);
    if((f=fopen("ornmc.in.txt","rt"))==0)
    exit(-1);
    if((g=fopen("ornmc.out.txt","wt"))==0)
    exit(-1);
    while(fscanf(f,"%c",&b)==1) br++;
    while(k<br)
    {
            fscanf(f,"%c",&c);
            if (c==s1[0])
            {
                fscanf(f,"%c",&ch);
                if (ch==s1[1])
                {
                    fscanf(f,"%c",&cha);
                    if (cha==s1[2])
                    {
                        for(i=0;s2[i]!='\0';i++)
                        fprintf(g,"%c",s2[i]);

                    }else fprintf(g,"%c%c%c",c,ch,cha);
                }
                else fprintf(g,"%c%c",c,ch);

            }
            else fprintf(g,"%c",c);
            k++;
    }



    fclose(f);
    fclose(g);
    return 0;

}




Koliko je "legalan" ovaj kod? Ako mi netko može napisati sve greske?
Hvala unaprijed...


[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: 11:31 pet, 25. 5. 2012    Naslov: Citirajte i odgovorite

[code:1]while(fscanf(f,"%c",&b)==1) br++;[/code:1] :shock:

S ovim [tt]fscanf[/tt] već dođeš na kraj datoteke i svi daljnji fscanfovi nemaju što (u)čitati. Gore je upravo o tome raspravljano.
Kod:
while(fscanf(f,"%c",&b)==1) br++;
Shocked

S ovim fscanf već dođeš na kraj datoteke i svi daljnji fscanfovi nemaju što (u)čitati. Gore je upravo o tome raspravljano.


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


Pridružen/a: 09. 09. 2011. (19:14:43)
Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]

PostPostano: 19:50 pet, 25. 5. 2012    Naslov: Citirajte i odgovorite

Treći zadatak iz zadaće:
Zadana je datoteka "veust.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 "veust.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.
Napomena: Datumi u ulaznoj datoteci bit će ispravni, tj. ne treba provjeravati da su korektni.
Uputa: Ovaj zadatak najlakše je riješiti upotrebom dinamički alociranog polja struct-ova.

Primjer: Ako ulazna datoteka sadrži

5
1.1.1.
2.2.2.
13.1.2010.
1.1.1.
6.6.666.

onda izlazna treba biti

2/1.1.1.
1/2.2.2.
1/6.6.666.
1/13.1.2010.

Meni izbaci
1/0.1.1.
2/1.1.1.
1/2.2.2.
1/6.6.666.
1/13.1.2010.
i nije mi jasno od kuda mu ova nula kad radim pridruživanje po učitanim varijablama, a nigdje u datoteci nema nule :S Znači sve valja do na prvi red ispisa.
Molio bih da pronađete grešku.
Unaprijed hvala! :thankyou:

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

typedef struct _datum{
int d;
int m;
int g;
int koliko;
}datum;

int main(void){
FILE *in, *out;
datum *niz, temp;
int n, i, j, brojac=0, a, b, c;

if( (in = fopen("veust.txt", "r")) == NULL ) exit(1);
if( (out = fopen("van.txt", "w")) == NULL ) exit(2);

fscanf(in, "%d", &n);
niz=(datum*)calloc(n, sizeof(datum));

for( i=0; i<n; i++ ){
fscanf(in, " %d.%d.%d.", &a, &b, &c);
for(j=0; j<n; j++)
if( niz[j].d==a && niz[j].m==b && niz[j].g==c ){ // ako postoji, koliko++ i izadi iz petlje
niz[j].koliko++;
break;
}
if(j==n) niz[brojac].d=a; niz[brojac].m=b; niz[brojac].g=c; niz[brojac++].koliko=1; // odvrtio je petlju, takav ne postoji, napravi novog, brojac++
}

for( i=0; i<brojac; i++ ) // sortiranje po godini
for ( j=i+1; j<brojac; j++ )
if ( niz[i].g > niz[j].g ){
temp=niz[i];
niz[i]=niz[j];
niz[j]=temp;
}

for( i=0; i<brojac; i++ ) // sortiranje po mjesecu
for ( j=i+1; j<brojac; j++ )
if ( niz[i].m > niz[j].m && niz[i].g == niz[j].g ){
temp=niz[i];
niz[i]=niz[j];
niz[j]=temp;
}

for( i=0; i<brojac; i++ ) // sortiranje po danu
for ( j=i+1; j<brojac; j++ )
if ( niz[i].d > niz[j].d && niz[i].g == niz[j].g && niz[i].d == niz[j].m ){
temp=niz[i];
niz[i]=niz[j];
niz[j]=temp;
}

for( i=0; i<brojac; i++) // ispis u datoteku
fprintf(out, "%d/%d.%d.%d.\n", niz[i].koliko, niz[i].d, niz[i].m, niz[i].g);

fclose(in); fclose(out);
free(niz);
return 0;
}[/code:1]
Treći zadatak iz zadaće:
Zadana je datoteka "veust.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 "veust.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.
Napomena: Datumi u ulaznoj datoteci bit će ispravni, tj. ne treba provjeravati da su korektni.
Uputa: Ovaj zadatak najlakše je riješiti upotrebom dinamički alociranog polja struct-ova.

Primjer: Ako ulazna datoteka sadrži

5
1.1.1.
2.2.2.
13.1.2010.
1.1.1.
6.6.666.

onda izlazna treba biti

2/1.1.1.
1/2.2.2.
1/6.6.666.
1/13.1.2010.

Meni izbaci
1/0.1.1.
2/1.1.1.
1/2.2.2.
1/6.6.666.
1/13.1.2010.
i nije mi jasno od kuda mu ova nula kad radim pridruživanje po učitanim varijablama, a nigdje u datoteci nema nule :S Znači sve valja do na prvi red ispisa.
Molio bih da pronađete grešku.
Unaprijed hvala! Thank you

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

typedef struct _datum{
   int d;
   int m;
   int g;
   int koliko;
}datum;

int main(void){
   FILE *in, *out;
   datum *niz, temp;
   int n, i, j, brojac=0, a, b, c;

   if( (in = fopen("veust.txt", "r")) == NULL ) exit(1);
   if( (out = fopen("van.txt", "w")) == NULL ) exit(2);

   fscanf(in, "%d", &n);
   niz=(datum*)calloc(n, sizeof(datum));

   for( i=0; i<n; i++ ){
      fscanf(in, " %d.%d.%d.", &a, &b, &c);
      for(j=0; j<n; j++)
         if( niz[j].d==a && niz[j].m==b && niz[j].g==c ){      // ako postoji, koliko++ i izadi iz petlje
            niz[j].koliko++;
            break;
         }
      if(j==n) niz[brojac].d=a; niz[brojac].m=b; niz[brojac].g=c; niz[brojac++].koliko=1; // odvrtio je petlju, takav ne postoji, napravi novog, brojac++
   }

   for( i=0; i<brojac; i++ )         // sortiranje po godini
      for ( j=i+1; j<brojac; j++ )
         if ( niz[i].g > niz[j].g ){
            temp=niz[i];
            niz[i]=niz[j];
            niz[j]=temp;
         }

   for( i=0; i<brojac; i++ )         // sortiranje po mjesecu
      for ( j=i+1; j<brojac; j++ )
         if ( niz[i].m > niz[j].m && niz[i].g == niz[j].g ){
            temp=niz[i];
            niz[i]=niz[j];
            niz[j]=temp;
         }

   for( i=0; i<brojac; i++ )         // sortiranje po danu
      for ( j=i+1; j<brojac; j++ )
         if ( niz[i].d > niz[j].d && niz[i].g == niz[j].g && niz[i].d == niz[j].m ){
            temp=niz[i];
            niz[i]=niz[j];
            niz[j]=temp;
         }

   for( i=0; i<brojac; i++)            // ispis u datoteku
      fprintf(out, "%d/%d.%d.%d.\n", niz[i].koliko, niz[i].d, niz[i].m, niz[i].g);

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



_________________
It's a wonderful, wonderful life!
[tex]\heartsuit \ \mathcal{PMF-MO} \ \heartsuit[/tex]
[tex]\mathbb Z\Sigma\mathbb N\emptyset\mathbb N[/tex]
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


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

PostPostano: 20:40 pet, 25. 5. 2012    Naslov: Citirajte i odgovorite

[code:1] if(j==n) niz[brojac].d=a; niz[brojac].m=b; niz[brojac].g=c; niz[brojac++].koliko=1;[/code:1]
Ne fale li ovdje neke viticaste zagrade? ;)

Usput, lakse je usporedbu raditi tako da definiras
[code:1]int f(datum d) {
return 400*d.g + 31*d.m + d.d;
}[/code:1]
i onda usporedjujes
[code:1]if (f(niz[i]) > f(niz[j]))...[/code:1]
umjesto da tri puta radis iste petlje sa sve kompliciranijim uvjetima.
Kod:
      if(j==n) niz[brojac].d=a; niz[brojac].m=b; niz[brojac].g=c; niz[brojac++].koliko=1;

Ne fale li ovdje neke viticaste zagrade? Wink

Usput, lakse je usporedbu raditi tako da definiras
Kod:
int f(datum d) {
  return 400*d.g + 31*d.m + d.d;
}

i onda usporedjujes
Kod:
if (f(niz[i]) > f(niz[j]))...

umjesto da tri puta radis iste petlje sa sve kompliciranijim uvjetima.



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


Pridružen/a: 09. 09. 2011. (19:14:43)
Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]

PostPostano: 21:35 pet, 25. 5. 2012    Naslov: Citirajte i odgovorite

Lol. Ako je greška u sintaksi, tražim grešku u razmišljanju, a kad pogrešno razmišljam, siguran sam da sam pogrešno napisao što sam htio :lol:

I nadao sam se nećem ovakvom za usporedbu. It rings a bell ( prvi semestar :P ) :happy:

Hvala Vam! :thankyou:

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

Ne prihvaća mi rješenje :S
Probao sam provjeriti za još par njih i po mojoj procjeni valja. Nije mi jasno zašto ne prihvaća. Molim pomoć!
[code:1]...[/code:1]

Možda ovaj zadnji [tt]\n[/tt] ?

Unaprijed hvala! :thankyou:

EDIT: Upravo ovo: "Možda ovaj zadnji [tt]\n[/tt] ?"
Lol. Ako je greška u sintaksi, tražim grešku u razmišljanju, a kad pogrešno razmišljam, siguran sam da sam pogrešno napisao što sam htio Laughing

I nadao sam se nećem ovakvom za usporedbu. It rings a bell ( prvi semestar Razz ) Happy

Hvala Vam! Thank you

Added after 46 minutes:

Ne prihvaća mi rješenje :S
Probao sam provjeriti za još par njih i po mojoj procjeni valja. Nije mi jasno zašto ne prihvaća. Molim pomoć!
Kod:
...


Možda ovaj zadnji \n ?

Unaprijed hvala! Thank you

EDIT: Upravo ovo: "Možda ovaj zadnji \n ?"



_________________
It's a wonderful, wonderful life!
[tex]\heartsuit \ \mathcal{PMF-MO} \ \heartsuit[/tex]
[tex]\mathbb Z\Sigma\mathbb N\emptyset\mathbb N[/tex]
[Vrh]
Korisnički profil Pošaljite privatnu poruku
malalodacha
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 10. 2011. (17:06:13)
Postovi: (79)16
Sarma = la pohva - posuda
-24 = 9 - 33

PostPostano: 0:33 sub, 26. 5. 2012    Naslov: Citirajte i odgovorite

int main()
{
FILE *f,*g;
f=fopen("pftycevt.in.txt","rt");
g=fopen("pftycevt.out.txt","wt");
char *s,c;
int i=0;
s=(char*)malloc(sizeof(char));
s[0]='\0';
while(fscanf(f,"%c",&c)==1);
{
s=(char*)realloc(s,(i+2)*sizeof(char));
s[i]=c;
s[i+1]='\0';
i+=1;
}
for(i=0;s[i]!='\0';i++)
fprintf(g,"%c",s[i]);
fclose(f);
fclose(g);
return 0;
}


može mi netko reći zašto mi ovaj string ne radi dobro, tj, ono što piše u ulaznoj datoteci ne pospremi u string kako bih ja htio?
int main()
{
FILE *f,*g;
f=fopen("pftycevt.in.txt","rt");
g=fopen("pftycevt.out.txt","wt");
char *s,c;
int i=0;
s=(char*)malloc(sizeof(char));
s[0]='\0';
while(fscanf(f,"%c",&c)==1);
{
s=(char*)realloc(s,(i+2)*sizeof(char));
s[i]=c;
s[i+1]='\0';
i+=1;
}
for(i=0;s[i]!='\0';i++)
fprintf(g,"%c",s[i]);
fclose(f);
fclose(g);
return 0;
}


može mi netko reći zašto mi ovaj string ne radi dobro, tj, ono što piše u ulaznoj datoteci ne pospremi u string kako bih ja htio?


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


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

PostPostano: 0:37 sub, 26. 5. 2012    Naslov: Citirajte i odgovorite

Obicno ovakve kodove ne gledam (vidi mi sig), ali ovo se ne moze ne primijetiti:
[tt]while(fscanf(f,"%c",&c)==1)[color=red][size=17][b];[/b][/size][/color][/tt]

Zasto string ispisujes u petlji, znako po znak, a ne s [tt]%s[/tt]? :shock:
Obicno ovakve kodove ne gledam (vidi mi sig), ali ovo se ne moze ne primijetiti:
while(fscanf(f,"%c",&c)==1);

Zasto string ispisujes u petlji, znako po znak, a ne s %s? Shocked



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


Pridružen/a: 11. 10. 2011. (17:06:13)
Postovi: (79)16
Sarma = la pohva - posuda
-24 = 9 - 33

PostPostano: 1:24 sub, 26. 5. 2012    Naslov: Citirajte i odgovorite

ma to sam i na onaj drugi način pokušao, pa nije išlo, pa kad sam ovako, onda nisam promijenio
ma to sam i na onaj drugi način pokušao, pa nije išlo, pa kad sam ovako, onda nisam promijenio


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


Pridružen/a: 31. 01. 2011. (18:42:32)
Postovi: (3A)16
Sarma = la pohva - posuda
= 6 - 5

PostPostano: 9:50 sub, 26. 5. 2012    Naslov: Citirajte i odgovorite

Napišite program koji čita datoteku "ornmc.in", te ju prepisuje u datoteku "ornmc.out" tako da u prepisivanju sva pojavljivanja stringa "sww" zamijeni stringom "nqvsj".
Napomena: Nemojte uvoditi ograničenja na duljinu datoteke i/ili pojedinih linija i riječi u datoteci.
[code:1]
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *f,*g;
char s1[4],s2[6],c,ch,cha;
int i;
strcpy (s1,"sww");
strcpy (s2,"nqvsj");
if((f=fopen("ornmc.in.txt","rt"))==0)
exit(-1);
if((g=fopen("ornmc.out.txt","wt"))==0)
exit(-1);
while(1)
{
if(fscanf(f,"%c",&c)!=1) break;
if (c==s1[0])
{
if(fscanf(f,"%c",&ch)!=1) break;
if (ch==s1[1])
{
if(fscanf(f,"%c",&cha)!=1) break;
if (cha==s1[2])
{
for(i=0;s2[i]!='\0';i++)
fprintf(g,"%c",s2[i]);

}else fprintf(g,"%c%c%c",c,ch,cha);
}
else fprintf(g,"%c%c",c,ch);

}
else fprintf(g,"%c",c);

}
fclose(f);
fclose(g);
return 0;

}
[/code:1]
Meni za primjer u jednoj teksutulnoj datoteci ispisuje dobro, ali zadaća javlja gresku... pa može pomoć ....ako netko vidi gdje bi mogla biti greska/e.... hvala unaprijed....[/list]

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

Evo primjera datoteke ....
Napišite program koji čita datoteku "ornmc.in", te ju prepisuje u datoteku "ornmc.out" tako da u prepisivanju sva pojavljivanja stringa "sww" zamijeni stringom "nqvsj".
Napomena: Nemojte uvoditi ograničenja na duljinu datoteke i/ili pojedinih linija i riječi u datoteci.
Kod:

#include <stdio.h>
#include <string.h>
int main(void)
{
    FILE *f,*g;
    char s1[4],s2[6],c,ch,cha;
    int i;
    strcpy (s1,"sww");
    strcpy (s2,"nqvsj");
    if((f=fopen("ornmc.in.txt","rt"))==0)
    exit(-1);
    if((g=fopen("ornmc.out.txt","wt"))==0)
    exit(-1);
    while(1)
    {
            if(fscanf(f,"%c",&c)!=1) break;
            if (c==s1[0])
            {
                if(fscanf(f,"%c",&ch)!=1) break;
                if (ch==s1[1])
                {
                    if(fscanf(f,"%c",&cha)!=1) break;
                    if (cha==s1[2])
                    {
                        for(i=0;s2[i]!='\0';i++)
                        fprintf(g,"%c",s2[i]);

                    }else fprintf(g,"%c%c%c",c,ch,cha);
                }
                else fprintf(g,"%c%c",c,ch);

            }
            else fprintf(g,"%c",c);

    }
    fclose(f);
    fclose(g);
    return 0;

}

Meni za primjer u jednoj teksutulnoj datoteci ispisuje dobro, ali zadaća javlja gresku... pa može pomoć ....ako netko vidi gdje bi mogla biti greska/e.... hvala unaprijed....[/list]

Added after 1 minutes:

Evo primjera datoteke ....





ornmc.in.txt
 Description:

Download
 Filename:  ornmc.in.txt
 Filesize:  148 Bytes
 Downloaded:  124 Time(s)

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


Pridružen/a: 23. 06. 2010. (16:53:45)
Postovi: (3D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
12 = 15 - 3

PostPostano: 9:59 sub, 26. 5. 2012    Naslov: Citirajte i odgovorite

Pogledaj koje ime trebas ucitati, te koje ti ucitavas.
Pogledaj koje ime trebas ucitati, te koje ti ucitavas.


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 10:01 sub, 26. 5. 2012    Naslov: Citirajte i odgovorite

Sto ti ispisuje za
[code:1]
ssww
[/code:1]
?
Sto ti ispisuje za
Kod:

ssww

?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
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 ... 9, 10, 11, 12, 13  Sljedeće
Stranica 10 / 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