All pastes #763639 Raw Edit

Someone

public text v1 · immutable
·published 2007-11-06 17:03 UTC
rendered paste body
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 5


struct Foititis {
	char am[10];
	char epi[20];
	char ono[20];
	float mo;
};

struct IFoititis {
	char am[10];
	int dief;
};



main () {

struct Foititis f;
struct IFoititis *fi, temp;
int pl,m=0,i,j,synexeia;

FILE *dataf,*indexf;

dataf=fopen("foitites.dat","rb+");

if(!dataf) {
	dataf=fopen("foitites.dat","wb");
	indexf=fopen("foitites.ndx","wb");
	fclose(indexf);
	pl=0;
}
else {
	indexf=fopen("foitites.ndx","rb");
	fseek(indexf,0,SEEK_END);
	pl=ftell(indexf) /sizeof(struct IFoititis);
	fclose(indexf);
	fseek(dataf,0,SEEK_END);
}

m=pl;

fi=malloc((pl+N)*sizeof(struct IFoititis));

printf("\n\nEISAGWGI EGGRAFON\n\n");

do {
	printf("\nEisagogi am: ");
	scanf("%S", &f.am);
	printf("\nEisagwgi epithetou: ");
	scanf("%s", &f.epi);
	printf("\nEisagwgi onomatos: ");
	scanf("%s", &f.ono);
	printf("\nEisagwgi mesou orou: ");
	scanf("%f", &f.mo);

	fwrite(&f,sizeof(struct Foititis),1,dataf);
	
	strcpy(fi[m].am,f.am);
	fi[m].dief=m;
	m++;

	printf("\n\n Thelete nea eisagwgi (1=NAI, 0=OXI):");
	scanf("&d", &synexeia);
	
} while( synexeia==1 && m<pl+N);

fclose(dataf);

indexf=fopen("foitites.ndx","rb+");
fseek(indexf,0,SEEK_END);

for (i=pl; i<m; i++) 
	fwrite(&fi[i],sizeof(struct IFoititis), 1, indexf);

fclose(indexf);


indexf= fopen("foitites.ndx","rb");
fseek(indexf,0,SEEK_END);
pl=ftell(indexf)/sizeof(struct IFoititis);
fseek(indexf,0,SEEK_SET);
fread(&fi[0],sizeof(struct IFoititis),pl,indexf);
fclose(indexf);

selection_sort(fi,pl);

indexf=fopen("foitites.ndx","wb");
fwrite(&fi[0],sizeof(struct IFoititis),pl,indexf);
fclose(indexf);

free(fi);

}


void selection_sort(struct IFoititis x[],int D) {

	int i,j,t;
	struct IFoititis temp;

	for (i=0; i<D-1; i++) {
		t=i;
		for (j=i+1; j<D; j++)
			if(strcmp(x[t].am,x[j].am)>0)
				t=j;
		temp=x[i];
		x[i]=x[t];
		x[t]=temp;
	}
}