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;
}
Ponlo entre las etiquetas para que sea más legible.
¿¿Por qué pones la letra pequeña al final??
No se por qué, pero cuando veo que las letras se van haciendo mas pequeñas me causa mucha gracia :D
Haa no no.. jajaja
Suerte!