pozz,
duuuboko san zapela na datotekama pa ako neko ima vrimena da pogleda ovaj kod i upozori me na greske u njemu (sigurno ih ima 1001 ) :puppydogeyes:
zasto mi se odmah prozor zatvori, a stavila san system("PAUSE")? (Vjezbam na windows-u).
hvala puuuno!
[size=9][color=#999999]Added after 57 seconds:[/color][/size]
[code:1]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char ime[51], prezime[51];
int ocjena[2];
}student;
int main(){
FILE *in1, *in2, *out;
int i, j, ocjena[2];
char ime[51], prezime[51];
student *a=NULL;
in1=fopen("ma.txt", "rt");
if(in1==NULL){
fprintf(stderr, "Ne mogu otvoriti datoteku ma!\n");
exit(1);
}
in2=fopen("la.txt", "rt");
if(in2==NULL){
fclose(in1);
fprintf(stderr, "Ne mogu otvoriti datoteku la!\n");
exit(2);
}
out=fopen("sve.txt", "wt");
if(out==NULL){
fclose(in1);
fclose(in2);
fprintf(stderr, "Ne mogu otvoriti datoteku za pisanje!\n");
exit(3);
}
int n=0;
while(fscanf(in1, "%[^;];%[^;];%d ", ime, prezime, ocjena[0])==3) n++;
rewind(in1);
a=(student*)malloc(n*sizeof(student));
if(a==NULL){
printf("Nema mjesta za alokaciju liste studenata!!!\n");
exit(4);
}
i=0;
while(fscanf(in1, "%[^;];%[^;];%d ", a[i].ime, a[i].prezime, &a[i].ocjena[0])==3) i++;
fclose(in1);
i=0;
while(fscanf(in2, "%[^;];%[^;];%d", ime, prezime, &ocjena[1])==3){
if((strcmp(a[i].ime, ime)!=0) || (strcmp(a[i].prezime, prezime)!=0)){
a=(student*)realloc(a, (++n)*sizeof(student));
strcpy(a[n-1].ime, ime);
strcpy(a[n-1].prezime, prezime);
a[n-1].ocjena[1]=ocjena[1];
}
else a[i].ocjena[1]=ocjena[1];
i++;
}
fclose(in2);
for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
if(strcmp(a[i].prezime, a[j].prezime)>0){
student tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
if(strcmp(a[i].prezime, a[j].prezime)==0 && strcmp(a[i].ime, a[i].ime)>0){
student tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
for(i=0; i<n; i++){
fprintf(out, "%s;%s;", a[i].ime, a[i].prezime);
if(!(a[i].ocjena[0])){
a[i].ocjena[0]='-';
fprintf(out, "%c;", a[i].ocjena[0]);
}
else fprintf(out, "%d;", a[i].ocjena[0]);
if(!(a[i].ocjena[1])){
a[i].ocjena[1]='-';
fprintf(out, "%c;", a[i].ocjena[1]);
}
else fprintf(out, "%d\n", a[i].ocjena[1]);
}
fclose(out);
free(a);
system("PAUSE");
return 0;
}
[/code:1]
pozz,
duuuboko san zapela na datotekama pa ako neko ima vrimena da pogleda ovaj kod i upozori me na greske u njemu (sigurno ih ima 1001 )
zasto mi se odmah prozor zatvori, a stavila san system("PAUSE")? (Vjezbam na windows-u).
hvala puuuno!
Added after 57 seconds:
Kod: | #include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char ime[51], prezime[51];
int ocjena[2];
}student;
int main(){
FILE *in1, *in2, *out;
int i, j, ocjena[2];
char ime[51], prezime[51];
student *a=NULL;
in1=fopen("ma.txt", "rt");
if(in1==NULL){
fprintf(stderr, "Ne mogu otvoriti datoteku ma!\n");
exit(1);
}
in2=fopen("la.txt", "rt");
if(in2==NULL){
fclose(in1);
fprintf(stderr, "Ne mogu otvoriti datoteku la!\n");
exit(2);
}
out=fopen("sve.txt", "wt");
if(out==NULL){
fclose(in1);
fclose(in2);
fprintf(stderr, "Ne mogu otvoriti datoteku za pisanje!\n");
exit(3);
}
int n=0;
while(fscanf(in1, "%[^;];%[^;];%d ", ime, prezime, ocjena[0])==3) n++;
rewind(in1);
a=(student*)malloc(n*sizeof(student));
if(a==NULL){
printf("Nema mjesta za alokaciju liste studenata!!!\n");
exit(4);
}
i=0;
while(fscanf(in1, "%[^;];%[^;];%d ", a[i].ime, a[i].prezime, &a[i].ocjena[0])==3) i++;
fclose(in1);
i=0;
while(fscanf(in2, "%[^;];%[^;];%d", ime, prezime, &ocjena[1])==3){
if((strcmp(a[i].ime, ime)!=0) || (strcmp(a[i].prezime, prezime)!=0)){
a=(student*)realloc(a, (++n)*sizeof(student));
strcpy(a[n-1].ime, ime);
strcpy(a[n-1].prezime, prezime);
a[n-1].ocjena[1]=ocjena[1];
}
else a[i].ocjena[1]=ocjena[1];
i++;
}
fclose(in2);
for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
if(strcmp(a[i].prezime, a[j].prezime)>0){
student tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
if(strcmp(a[i].prezime, a[j].prezime)==0 && strcmp(a[i].ime, a[i].ime)>0){
student tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
for(i=0; i<n; i++){
fprintf(out, "%s;%s;", a[i].ime, a[i].prezime);
if(!(a[i].ocjena[0])){
a[i].ocjena[0]='-';
fprintf(out, "%c;", a[i].ocjena[0]);
}
else fprintf(out, "%d;", a[i].ocjena[0]);
if(!(a[i].ocjena[1])){
a[i].ocjena[1]='-';
fprintf(out, "%c;", a[i].ocjena[1]);
}
else fprintf(out, "%d\n", a[i].ocjena[1]);
}
fclose(out);
free(a);
system("PAUSE");
return 0;
}
|
|