Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - xavirus.g6

#1
Programación C/C++ / Tiempo de ejecución
27 Noviembre 2013, 22:31 PM
Tengo problemas con un programa que calcula el tiempo de ejecución de 4 métodos de ordenación. el error es..."ld returned 1 exit status" el programa es este...



#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int o,total;
//////////////////////////



//Metodo 1 BURBUJA//


void _sort4() { /*Ordena por metodo burbuja*/
FILE *archivo;
int z=0;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Burbuja.-\n");
while (z<1){

long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}

float total,inicio, final,ttotal;
inicio=clock();// INICIO tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/


printf("\nArreglo ordenado:\n");
/*Metodo burbuja*/
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
} /*Fin burbuja*/

for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC;
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );

z++;
if(z==1)
{fprintf (archivo, "\nEl promedio del metodo 1 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}

//Metodo 2 SHELLSORT//


void shellsort() {

FILE*archivo;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Shellsort.-\n");

int z=0;
while (z<1)
{
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// Inicio tiempo

int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("posicion[%i] cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/


printf("\nArreglo ordenado:\n");

/*Metodo shellsort*/

int mas, aux;

mas = n/2;
while (mas > 0)
{
for (i=mas; i < n; i++)
{
j = i;
aux = a;
while ((j >= mas) && (a[j-mas] > aux))
{
a[j] = a[j - mas];
j = j - mas;
}
a[j] = aux;
}
mas /= 2;

}
/*Fin shellsort*/

for(i=0;i<n;i++)
{

printf("Posicion %i Cifra %i \n ",i,a);
}

final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo, "%f",&total );
fprintf (archivo, "\n%f",total );

z++;
if(z==1000)
{fprintf (archivo, "\nEl promedio del metodo 2 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
system("pause");

fclose(archivo);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//Método Quick Sort

void quicksort () {

FILE*archivo;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Quicksort.-\n");

int z=0;
while (z<1)
{
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;

inicio=clock();// Inicio tiempo

int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/

printf("\nArreglo ordenado:\n");

/* Metodo quicksort*/

void quick(int A[n],int inf, int sup){
     int elem_div = A;
     int temp ;
     int i = inf - 1 , j = sup;
     int cont = 1;

     if (inf >= sup)   
          return;
     while (cont)
          {
          while (A[++i] < elem_div);
          while (A[--j] > elem_div);
         
          if (i < j)
               {
               temp = A;
               A = A[j];
               A[j] = temp;
               }
          else
              cont = 0;
          }
     
     temp = A;
     A = A;
     A = temp;

     quick (A, inf, i - 1);
     quick (A, i + 1, sup);
     }

// fin metodo quicksort

for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );

z++;
if(z==1000)
{fprintf (archivo, "\nEl promedio del metodo 3 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//Metodo 4 HEAPSORT//


void Heapsort() { /*Ordena por metodo Heapsort*/
FILE *archivo;
int z=0;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo heapsort.-\n");
while (z<1){

long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}

float total,inicio, final,ttotal;
inicio=clock();// INICIO TIEMPO
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/


printf("\nArreglo ordenado:\n");
/*Metodo Heapsort*/
int I, s, f, ivalue,N ;
    for ( I = N - 1 ; I > 0 ; I-- )
    {
        ivalue = a ;
        a = a[0] ;
        f = 0 ;

        if ( I == 1 )
            s = -1 ;
        else
            s = 1 ;

        if ( I > 2 && a[2] > a[1] )
            s = 2 ;

        while ( s >= 0 && ivalue < a )
        {
            a[f] = a ;
            f = s ;
            s = 2 * f + 1 ;

            if ( s + 1 <= I - 1 && a < a[s + 1] )
                s++ ;
            if ( s > I - 1 )
                s = -1 ;
        }
        a[f] = ivalue ;
    } /*Fin Heapsort*/

for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin Tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total transcurrido
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );

z++;
if(z==1)
{fprintf (archivo, "\nEl promedio del metodo 1 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



int main() {
printf("\n\t1.-\tMetodo Burbuja\n");
printf("\t2.-\tMetodo Shellsort\n");
printf("\t3.-\tMetodo Quicksort\n");
printf("\t4.-\tMetodo heapsort\n");
printf("\t5.-\tSalida\n");
printf("\n\tEscoja una opcion=> ");
scanf("%d",&o);
while (o!=5){



switch (o)
{

case 1: _sort4 ();

break;

case 2: shellsort();

break;

case 3: quicksort ();

break;

case 4: heapsort ();

break;

}


printf("\n\t1.-\tMetodo Burbuja\n");
printf("\t2.-\tMetodo Shellsort\n");
printf("\t3.-\tMetodo Quicksort\n");
printf("\t4.-\tMetodo heapsort\n");
printf("\t5.-\tSalir\n");
printf("\tEscoja una opcion=> ");
scanf("%d",&o);
}


return 0;
}