Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 19:16 sri, 23. 5. 2012 Naslov: |
|
|
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] |
|
piccola Forumaš(ica)

Pridružen/a: 30. 11. 2009. (15:39:50) Postovi: (D7)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
true.false Forumaš(ica)

Pridružen/a: 12. 10. 2011. (17:37:39) Postovi: (28)16
|
Postano: 18:25 čet, 24. 5. 2012 Naslov: |
|
|
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?? 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.
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] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 18:48 čet, 24. 5. 2012 Naslov: |
|
|
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] |
|
true.false Forumaš(ica)

Pridružen/a: 12. 10. 2011. (17:37:39) Postovi: (28)16
|
Postano: 19:21 čet, 24. 5. 2012 Naslov: |
|
|
[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..
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 20:00 čet, 24. 5. 2012 Naslov: |
|
|
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:
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. 
|
|
[Vrh] |
|
true.false Forumaš(ica)

Pridružen/a: 12. 10. 2011. (17:37:39) Postovi: (28)16
|
|
[Vrh] |
|
homoviator Forumaš(ica)

Pridružen/a: 31. 01. 2011. (18:42:32) Postovi: (3A)16
|
Postano: 21:41 čet, 24. 5. 2012 Naslov: |
|
|
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] |
|
quark Forumaš(ica)


Pridružen/a: 22. 10. 2011. (16:47:39) Postovi: (DA)16
Spol: 
|
|
[Vrh] |
|
Zenon Forumaš(ica)


Pridružen/a: 09. 09. 2011. (19:14:43) Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]
|
Postano: 19:50 pet, 25. 5. 2012 Naslov: |
|
|
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!
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;
} |
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Zenon Forumaš(ica)


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

Pridružen/a: 11. 10. 2011. (17:06:13) Postovi: (79)16
|
Postano: 0:33 sub, 26. 5. 2012 Naslov: |
|
|
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] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 0:37 sub, 26. 5. 2012 Naslov: |
|
|
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?
_________________ 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. 
|
|
[Vrh] |
|
malalodacha Forumaš(ica)

Pridružen/a: 11. 10. 2011. (17:06:13) Postovi: (79)16
|
|
[Vrh] |
|
homoviator Forumaš(ica)

Pridružen/a: 31. 01. 2011. (18:42:32) Postovi: (3A)16
|
Postano: 9:50 sub, 26. 5. 2012 Naslov: |
|
|
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 ....
Description: |
|
 Download |
Filename: |
ornmc.in.txt |
Filesize: |
148 Bytes |
Downloaded: |
124 Time(s) |
|
|
[Vrh] |
|
fejky Forumaš(ica)

Pridružen/a: 23. 06. 2010. (16:53:45) Postovi: (3D)16
Spol: 
|
|
[Vrh] |
|
gflegar Forumaš(ica)


Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol: 
|
|
[Vrh] |
|
|