All pastes #769893 Raw Edit

Mine

public text v1 · immutable
·published 2007-11-11 19:10 UTC
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 swap(int *x , int *y);
 void bubblesort (int *pin,int megethos);
 void insertionSort(int *pin,int megethos);
 void quickSort(int a[], int left, int right,int diakoptis );
int euresi (int megethos);


int main(void)
{
    int choice,*pinakas,megethos,memory,tyxaio_stoix;
    pinakas=(int *)malloc(1*sizeof(int));
    
     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:bubblesort(pinakas,megethos); break;
	   case 6:insertionSort(pinakas,megethos);break;
	   case 7:quickSort(pinakas,0,megethos-1,1); break;
	   case 8:quickSort(pinakas,0,megethos-1,2); break;
	   case 9:break;
	   case 0:exit(0);
	   }
	 }while(1);
         
    
    free(pinakas);
    
    } 
      
    
    
    int menu(void){
  int choice;
  do{
	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("choice: ");
	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;
                  printf("%d\n",pinakas[i]);
              }            
              printf("megethos:%d\n",megethos);     
              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("I couldn't open pinakas.txt for writing.\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;
     fp=fopen(filename,"rb");
     fseek(fp,0,SEEK_END);
     mem=ftell(fp);
      fseek(fp,0,SEEK_SET);
     i=0;
     //free(pinakas);
     //pinakas=malloc(mem*sizeof(int));
     realloc(pinakas,mem);
   
    if(pinakas==NULL) printf("Den yparxei arketi mnini gia dimiourgia enos pinaka \n");
    printf("%d\n",mem);
   
	/*while(feof(fp)==1)
	{
                    fscanf(fp,"%d \n",&pinakas[i]);
                    printf("%d",pinakas[i]);
                    i=i+1;

     }*/
     for(i=0; i<mem/4; i++) 
     {
              fscanf(fp,"%d \n",&pinakas[i]);
                    printf("%d",pinakas[i]);
              }
     fclose(fp);
    
} 
     

int swap(int *x , int *y)
{
 int temp;
 
 temp=*y;
 *x=*y;
 *y=temp;
}
 
 
 
void bubblesort (int pin[],int megethos)
{
 int i,j,temp;
 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;                                                      
                                      }
          }
}

printf("Ta stoixeia tou pianka meta tin taxinomisi einai:\n");

                        for(i=0; i<megethos; i++) printf("%d\n",pin[i]);
 
}
 
 
 
 
void insertionSort(int pin[],int megethos)
{
        int i,j=0,temp;

                        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;
                                }
                        }                      
                        printf("Ta stoixeia tou pianka meta tin taxinomisi einai:\n");
                        for(i=0; i<megethos; i++) printf("%d\n",pin[i]);
                        
 
}
 
  
    
      
void quickSort(int pin[], int left, int right,int diakoptis )
{
  int timi_diax, min, max,temp,counter=0;

  min = left;
  max = right;
  if(diakoptis==2) 
  {
                   temp=euresi(right);
                   timi_diax = pin[temp];
  }
                   
  timi_diax = pin[left];

  while( left < right )
  {
     while( (pin[right] >= timi_diax) && (left < right) )  right--;
           
        if( left != right )
            {
             pin[left] = pin[right];
             left++;
             counter=counter+1;
            }

     while( (pin[left] <= timi_diax) && (left < right) )  left++;

        if( left != right )
            {
             pin[right] = pin[left];
             right--;
             counter=counter+1;
            }
  }

  pin[left] = timi_diax;
  timi_diax = left;
  counter=counter+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 );
          }   
printf("Eginan %d antimetatheseis!",counter);
  
}
   
      
          
int euresi (int megethos)
      {
          int temp;
          srand(time(NULL));
          temp = rand()%megethos;
          return temp;
          }