rendered paste body#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <malloc.h>
#define filename "pinakas.txt"
int menu(void);
int DimiourgiaPinaka (int *pinakas);
void EmfanisiPinaka(int *pinakas, int length);
void saveData(int *pinakas, int length);
void loadData(int *pinakas);
int bubblesort (int *pin,int megethos);
int insertionSort(int *pin,int megethos);
int quickSort(int a[], int left, int right,int diakoptis );
int euresi (int megethos);
//---------------------------------------------------------------------------------------------------------------------//
//SYNARTISI MAIN()//
int main(void)
{
int choice,*pinakas,megethos,memory,tyxaio_stoix,temp1,temp2,temp3;
pinakas=(int *)malloc(1*sizeof(int));
if(pinakas==NULL) printf("Den yparxei arketi mnini gia dimiourgia enos pinaka \n");
do{
choice=menu();
switch(choice){
case 1:megethos=DimiourgiaPinaka(pinakas); break;
case 2:saveData(pinakas,megethos);getch(); break;
case 3:loadData(pinakas);printf("megethos:%d\n",sizeof(pinakas)); break;
case 4:EmfanisiPinaka(pinakas,megethos); break;
case 5:temp1=bubblesort(pinakas,megethos);printf("Eginan %d antimetatheseis! \n",temp1); break;
case 6:temp2=insertionSort(pinakas,megethos);printf("Eginan %d antimetatheseis!\n",temp2);break;
case 7:temp3=quickSort(pinakas,0,megethos-1,1); printf("Eginan %d antimetatheseis!\n",temp3);break;
case 8:temp3=quickSort(pinakas,0,megethos-1,2);printf("Eginan %d antimetatheseis!\n",temp3); break;
case 9:temp3=quickSort(pinakas,0,megethos-1,3);printf("Eginan %d antimetatheseis! \n",temp3);break;
case 0:exit(0);
}
}while(1);
free(pinakas);
}
//---------------------------------------------------------------------------------------------------------------------//
int menu(void){
int choice;
do{
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* \n");
printf("1.Dimiourgia pinaka \n");
printf("2.Apothikeusi pinaka se arxeio \n");
printf("3.Anaktisi pinaka apo arxeio \n");
printf("4.Emfanisi pinaka \n");
printf("5.Bubblesort \n");
printf("6.Insertion Sort \n");
printf("7.Quick Sort 1 \n");
printf("8.Quick Sort 2 \n");
printf("9.Quick Sort 3 \n");
printf("0.Eksodos apo tin efarmogi \n");
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* \n");
printf("EPILOGH : ");
scanf("%d",&choice);
}while (choice!=0&&choice!=1 && choice!=2 && choice!=3 && choice!=4 && choice!=5
&&choice!=6 && choice!=7 && choice!=8 && choice!=9);
return choice;
}
//---------------------------------------------------------------------------------------------------------------------//
int DimiourgiaPinaka (int *pinakas)
{
int megethos,epilogi,key=0,i;
printf("Dwste to epithymito megethos tou pinaka :\n");
scanf("%d" , &megethos);
realloc(pinakas,megethos * sizeof(int));
if(pinakas==NULL) printf("Den yparxei arketi mnini gia dimiourgia enos pinaka \n");
while(key==0)
{
printf("Patiste 1 gia Ataksinomito pinaka h 2 gia Sxedon Taksinomimeno pinaka : \n");
scanf("%d",&epilogi);
if(epilogi==1)
{
printf("EPILOGH 1:Ataksinomitos pinakas --> to aitima sas einai se ekseliksi...\n");
srand(time(NULL));
for (i=0; i<megethos; i++)
{
pinakas[i]=rand()%10;
}
key=1;
}
else if (epilogi==2)
{
key=1;
}
else
{
printf("--------------------Dwsate lathos epilogi--------------------\n");
key=0;
}
}
return megethos;
}
//---------------------------------------------------------------------------------------------------------------------//
void EmfanisiPinaka(int *pinakas, int length)
{
int i;
for( i=0; i<length; i++)
{
printf(" To stoixeio %d tou pinaka einai : %d\n ",i+1,pinakas[i]);
}
}
//---------------------------------------------------------------------------------------------------------------------//
void saveData(int *pinakas, int length){
FILE *fp;
int i;
fp=fopen(filename,"wb");
if (fp == NULL) {
printf("To arxeio dn iparxei...\n");
exit(0);
}
for (i=0; i<=length-1; ++i) fprintf(fp, "%d ", pinakas[i]);
fclose(fp);
}
//---------------------------------------------------------------------------------------------------------------------//
void loadData(int *pinakas)
{
FILE *fp;
int i,mem;
int c;
i=0;
fseek(fp,0,SEEK_END);
mem=ftell(fp);
fseek(fp,0,SEEK_SET);
realloc(pinakas,mem);
if(pinakas==NULL) printf("Den yparxei arketi mnini gia dimiourgia enos pinaka \n");
fp=fopen(filename,"rb");
do {
c = fscanf(fp,"%d",pinakas[i]);
printf("%d\n",pinakas[i]);
i=i+1;
} while (c != EOF);
fclose(fp);
}
//---------------------------------------------------------------------------------------------------------------------//
int bubblesort (int pin[],int megethos)
{
int i,j,temp,c1=0;
for(i=0; i<megethos; i++)
{
for(j=0; j<(megethos-i-1); j++)
{
if(pin[j]>pin[j+1]) {
temp = pin[j];
pin[j] = pin[j+1];
pin[j+1] = temp;
c1=c1+1;
}
}
}
return c1;
}
//---------------------------------------------------------------------------------------------------------------------//
int insertionSort(int pin[],int megethos)
{
int i,j=0,temp,c2=0;
for(i=1; i<megethos; i++)
{
temp=pin[i];
j=i;
while((j>0)&&(pin[j-1]>temp))
{
pin[j] = pin[j-1];
j=j-1;
pin[j]=temp;
c2=c2+1;
}
}
return c2;
}
//---------------------------------------------------------------------------------------------------------------------//
int quickSort(int pin[], int left, int right,int diakoptis )
{
int timi_diax, min, max,temp,i,c3=0;
min = left;
max = right;
if(diakoptis==2 || diakoptis==3)
{
temp=euresi(right);
timi_diax = pin[temp];
}
if(diakoptis==3 && right<=100 )
{
c3=insertionSort(pin,right);
return c3;
}
timi_diax = pin[left];
while( left < right )
{
while( (pin[right] >= timi_diax) && (left < right) ) right--;
if( left != right )
{
pin[left] = pin[right];
left++;
c3=c3+1;
}
while( (pin[left] <= timi_diax) && (left < right) ) left++;
if( left != right )
{
pin[right] = pin[left];
right--;
c3=c3+1;
}
}
pin[left] = timi_diax;
timi_diax = left;
c3=c3+1;
left = min;
right = max;
if(diakoptis==1)
{
if( left < timi_diax ) quickSort(pin, left, timi_diax-1,1 );
if( right > timi_diax ) quickSort(pin, timi_diax+1, right,1 );
}
else if(diakoptis==2)
{
if( left < timi_diax ) quickSort(pin, left, timi_diax-1,2 );
if( right > timi_diax ) quickSort(pin, timi_diax+1, right,2 );
}
return c3;
}
//---------------------------------------------------------------------------------------------------------------------//
int euresi (int megethos)
{
int temp;
srand(time(NULL));
temp = rand()%megethos;
return temp;
}
//----------------------------------------------------TELOS ASKISIS-------------------------------------------------------//