evo promjenila sam onaj 2. zadatak, sto god upisem radi, a zadace kazu da nije dobro :cry: :
Zadatak 2:
Napišite program koji čita datoteku "cjsqkyd.in", te ju prepisuje u datoteku "cjsqkyd.out" tako da u prepisivanju sva pojavljivanja stringa "hnd" zamijeni stringom "onnozlm".
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>
int main(void){
FILE *in, *out;
char c, *s;
int i=0, j, k, n=0, da;
in=fopen("cjsqkyd.in", "rt");
if(in==NULL) exit(0);
out=fopen("cjsqkyd.out", "wt");
if(out==NULL) exit (0);
while(fscanf(in,"%c", &c)>0) n++;
s=(char*)malloc((n+1)*sizeof(char));
rewind(in);
while(fscanf(in,"%c", &c)>0) {
s[i]=c;
i++;
}
for(i=0; s[i]!='\0'; i++){
if(s[i]!='h') fprintf(out,"%c",s[i]);
if(s[i]=='h'){
for(j=0; s[j]!='\0'; j++){
if(j==i+1 && s[j]!='n'){ fprintf(out,"%c",s[i]);
}
if(j==i+1 && s[j]=='n'){
for(k=0; s[k]!='\0'; k++){
if(k==j+1 && s[k]!='d'){
fprintf(out,"%c",s[i]);
}
if(k==j+1 && s[k]=='d'){fprintf(out,"%s","onnozlm");
i=i+2;}
}
}
}
}
}
fclose(in);
fclose(out);
free(s);
system("pause");
return 0;
}
[/code:1]
i zadnji zadatak iz te zadace me isto muci, sto god sam probala ispise dobro pa ne znam sto je krivo:
Zadatak 3:
Zadana je datoteka "wwpputoy.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 "wwpputoy.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.
[code:1]
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int d;
int m;
int g;
int k;
} datum;
int main(void){
FILE *in,*out;
int n,i,mini,j,n1=0,l,t;
datum *x,*x1=NULL;
if((in=fopen("wwpputoy.in","rt"))==NULL)
exit(1);
if((out=fopen("wwpputoy.out","wt"))==NULL)
exit(2);
fscanf(in,"%d",&n);
x=(datum *)malloc(n*sizeof(datum));
for(i=0;i<n;++i)
fscanf(in,"%d.%d.%d.",&x[i].d,&x[i].m,&x[i].g);
for(i=0;i<n;++i)
x[i].k=1;
for(i=0;i<n;++i){
for(j=i+1;j<n;++j)
if((x[j].d==x[i].d) && (x[j].m==x[i].m) && (x[j].g==x[i].g)) ++x[i].k;
t=1;
for(l=0;l<n1;++l)
if((x[i].d==x1[l].d) && (x[i].m==x1[l].m) && (x[i].g==x1[l].g)) t=0;
if(t==1){
++n1;
x1=(datum *)realloc(x1,n1*sizeof(datum));
x1[n1-1]=x[i];
}
}
for(i=0;i<n1-1;++i){
mini=i;
for(j=i+1;j<n1;++j)
if((x1[j].g<x1[mini].g) || ((x1[j].g==x1[mini].g)&&(x1[j].m<x1[mini].m)) || ((x1[j].g==x1[mini].g)&&(x1[j].m==x1[mini].m)&&(x1[j].d<x1[mini].d)))
mini=j;
if(mini>i){
datum tmp=x1[i];
x1[i]=x1[mini];
x1[mini]=tmp;
}
}
for(i=0;i<n1;++i)
fprintf(out,"%d#%d.%d.%d.\n",x1[i].k,x1[i].d,x1[i].m,x1[i].g);
free(x);
free(x1);
fclose(in); fclose(out);
system("pause");
return 0;
}
[/code:1]
evo promjenila sam onaj 2. zadatak, sto god upisem radi, a zadace kazu da nije dobro :
Zadatak 2:
Napišite program koji čita datoteku "cjsqkyd.in", te ju prepisuje u datoteku "cjsqkyd.out" tako da u prepisivanju sva pojavljivanja stringa "hnd" zamijeni stringom "onnozlm".
Napomena: Nemojte uvoditi ograničenja na duljinu datoteke i/ili pojedinih linija i riječi u datoteci.
Kod: |
#include<stdio.h>
#include<stdlib.h>
int main(void){
FILE *in, *out;
char c, *s;
int i=0, j, k, n=0, da;
in=fopen("cjsqkyd.in", "rt");
if(in==NULL) exit(0);
out=fopen("cjsqkyd.out", "wt");
if(out==NULL) exit (0);
while(fscanf(in,"%c", &c)>0) n++;
s=(char*)malloc((n+1)*sizeof(char));
rewind(in);
while(fscanf(in,"%c", &c)>0) {
s[i]=c;
i++;
}
for(i=0; s[i]!='\0'; i++){
if(s[i]!='h') fprintf(out,"%c",s[i]);
if(s[i]=='h'){
for(j=0; s[j]!='\0'; j++){
if(j==i+1 && s[j]!='n'){ fprintf(out,"%c",s[i]);
}
if(j==i+1 && s[j]=='n'){
for(k=0; s[k]!='\0'; k++){
if(k==j+1 && s[k]!='d'){
fprintf(out,"%c",s[i]);
}
if(k==j+1 && s[k]=='d'){fprintf(out,"%s","onnozlm");
i=i+2;}
}
}
}
}
}
fclose(in);
fclose(out);
free(s);
system("pause");
return 0;
}
|
i zadnji zadatak iz te zadace me isto muci, sto god sam probala ispise dobro pa ne znam sto je krivo:
Zadatak 3:
Zadana je datoteka "wwpputoy.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 "wwpputoy.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.
Kod: |
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int d;
int m;
int g;
int k;
} datum;
int main(void){
FILE *in,*out;
int n,i,mini,j,n1=0,l,t;
datum *x,*x1=NULL;
if((in=fopen("wwpputoy.in","rt"))==NULL)
exit(1);
if((out=fopen("wwpputoy.out","wt"))==NULL)
exit(2);
fscanf(in,"%d",&n);
x=(datum *)malloc(n*sizeof(datum));
for(i=0;i<n;++i)
fscanf(in,"%d.%d.%d.",&x[i].d,&x[i].m,&x[i].g);
for(i=0;i<n;++i)
x[i].k=1;
for(i=0;i<n;++i){
for(j=i+1;j<n;++j)
if((x[j].d==x[i].d) && (x[j].m==x[i].m) && (x[j].g==x[i].g)) ++x[i].k;
t=1;
for(l=0;l<n1;++l)
if((x[i].d==x1[l].d) && (x[i].m==x1[l].m) && (x[i].g==x1[l].g)) t=0;
if(t==1){
++n1;
x1=(datum *)realloc(x1,n1*sizeof(datum));
x1[n1-1]=x[i];
}
}
for(i=0;i<n1-1;++i){
mini=i;
for(j=i+1;j<n1;++j)
if((x1[j].g<x1[mini].g) || ((x1[j].g==x1[mini].g)&&(x1[j].m<x1[mini].m)) || ((x1[j].g==x1[mini].g)&&(x1[j].m==x1[mini].m)&&(x1[j].d<x1[mini].d)))
mini=j;
if(mini>i){
datum tmp=x1[i];
x1[i]=x1[mini];
x1[mini]=tmp;
}
}
for(i=0;i<n1;++i)
fprintf(out,"%d#%d.%d.%d.\n",x1[i].k,x1[i].d,x1[i].m,x1[i].g);
free(x);
free(x1);
fclose(in); fclose(out);
system("pause");
return 0;
}
|
|