Tiempo de ejecución

Iniciado por xavirus.g6, 27 Noviembre 2013, 22:31 PM

0 Miembros y 1 Visitante están viendo este tema.

xavirus.g6

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;
}

ivancea96

Ponlo entre las etiquetas para que sea más legible.
¿¿Por qué pones la letra pequeña al final??

erest0r

No se por qué, pero cuando veo que las letras se van haciendo mas pequeñas me causa mucha gracia  :D
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.

Vaagish