• Lunes 29 de Abril de 2024, 21:19

Autor Tema:  Alguien Sabe????  (Leído 2074 veces)

RaYBacK

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Alguien Sabe????
« en: Jueves 3 de Junio de 2004, 05:07 »
0
Hola comunidad.... tengo un problema q esperoo q me ayuden pq es de suma urgencia.... tengo q desarrollar un programa en c con al menos cinco metodos de ordenamiento, generados a travez de numeros aleatorios (minimo 5000) y q me entregue de cada ordenamiento el tiempo q se demora en ordenarlo, el numero de comparaciones e intercambios.... si alguien sabe por favor q me ayude pq es super importante......desde ya muchas gracias....

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Alguien Sabe????
« Respuesta #1 en: Jueves 3 de Junio de 2004, 05:23 »
0
Disculpa RaYBacK, pero aquí no le hacemos las tareas a nadie......Si has avanzado algo y te has quedado estancado, entonces postea tu código para ayudarte.....Pero si no has hecho nada, mejor comienza a hacerlo porque nadie lo va a hacer por ti.  :whistling:

Saludos,

Blag  :devil:

RaYBacK

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Alguien Sabe????
« Respuesta #2 en: Viernes 4 de Junio de 2004, 05:04 »
0
hola compadre gracias por responder al mensaje.... no es po r na pero yo no estoy pidiendo q me hagan la tarea, en mi mensaje decia claramente q necesito ayuda pq no tengo la mas minima idea de como hacerlo y he estado haciendo lo de los ordenamientos.... ahi se muestra mas o menos lo q tengo q hacer.........


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


#define TAM 5000
#define SALIR '7'


void menu();
int leer_opcion(void);
void generar (int arreglo[]);
void mostrar (int arreglo[]);
void burbuja (int arreglo[]);
void seleccion (int arreglo[]);
int menor (int arreglo[], int desde);

void insercion (int arreglo[]);
void quicksort (int arreglo[]);
void ord_rap (int arreglo[], int inf, int sup);




void main()
{
     int lista[TAM];
     int copia_arreglo[TAM];
     char opcion = 0;
     generar(lista);

     while (opcion != SALIR)
          {
          menu();
          opcion = leer_opcion();
          switch (opcion)
               {
               case '1':

          generar(lista);
          clrscr();
                    printf ("\n\n\tSe generaron los siguientes elementos:\n");
          mostrar (lista);
                    break;
               case '2':
          clrscr();
                    printf ("\n\n\tLos elementos del arreglo son:\n");
          mostrar (lista);
                    break;
               case '3':
          burbuja (lista);
          break;
               case '4':
          insercion (lista);
          break;
               case '5':
          quicksort (lista);
          break;
               case '6':
          seleccion (lista);
          break;



               }
          }


}

void menu()
{
     clrscr();
     printf ("\n\n\t\t\t\t   Menu:\n\n\n");
     printf ("\n\t\t\t1) Generar los elementos.");
     printf ("\n\t\t\t2) Mostrar los elementos.");
     printf ("\n\t\t\t3) Ordenamiento Burbuja.");
     printf ("\n\t\t\t4) Ordenamiento por Insercion.");
     printf ("\n\t\t\t5) Ordenamiento por Quicksort.");
     printf ("\n\t\t\t6) Ordenamiento por Seleccion." );
     printf ("\n\t\t\t7) Salir.");
     printf ("\n\n\t\t\t Ingrese la opcion : ");
}

int leer_opcion(void)
{
     char opcion;

     opcion = getchar();
     while (opcion < '1' || opcion > SALIR)
          {
     opcion = getchar();
          }

     return opcion;
}

void generar (int lista[])
{
     int i;
     srand ((unsigned) time(NULL));

     for (i=0; i<TAM; i++)
     lista = rand()%TAM;


}

void mostrar (int lista[])
{
     int i;

     for (i=0; i<TAM; i++)
     printf ("\n\tnumero[%2d] = %d", i, lista);

     printf ("\n\n\t");
     printf("Presione una tecla para volver al Menu: ");
     getch();
     }

void burbuja (int lista[])
{
     int i, j;
     int temp;

     for (i=1; i<TAM; i++)
          for (j=0; j<TAM - i; j++)
          if (lista[j] > lista[j+1])
                    {

          temp = lista[j];
          lista[j] = lista[j+1];
          lista[j+1] = temp;
                    }

     clrscr();
     printf ("\n\n\tOrdenamiento burbuja.");
     printf ("\n\tEl arreglo ordenado es:\n");
     mostrar (lista);
}




void seleccion (int lista[])
{
     int i;
     int temp, pos_men;

     for (i=0; i<TAM - 1; i++)
          {

     pos_men = menor(lista, i);
     temp = lista;
     lista = lista [pos_men];
     lista [pos_men] = temp;
          }

     clrscr();
     printf ("\n\n\tOrdenamiento por selecci¢n.");
     printf ("\n\tEl arreglo ordenado es:\n");
     mostrar (lista);
}

int menor (int lista[], int desde)
{
     int i, menor;

     menor = desde++;
     for (i=desde; i<TAM; i++)
     if (lista < lista[menor])
               menor = i;

 return menor;
}

void insercion (int lista[])
{
     int i, j, temp;

     for (i=1; i<TAM; i++)
          {
     temp = lista;
          j = i - 1;
     while ( (lista[j] > temp) && (j >= 0) )
               {
          lista[j+1] = lista[j];
               j--;
               }

     lista[j+1] = temp;
          }

     clrscr();
     printf ("\n\n\tOrdenamiento por inserci¢n.");
     printf ("\n\tEl arreglo ordenado es:\n");
     mostrar (lista);
}



void quicksort (int lista[])
{
     ord_rap (lista, 0, TAM - 1);

     clrscr();
     printf ("\n\n\tOrdenamiento por Quicksort.");
     printf ("\n\tEl arreglo ordenado es:\n");
     mostrar (lista);
}

void ord_rap (int lista[], int inf, int sup)
{
     int elem_div = lista;
     int temp ;
     int i = inf - 1, j = sup;
     int cont = 1;

     if (inf >= sup)
          return;

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


     temp = lista;
     lista = lista;
     lista = temp;


     ord_rap (lista, inf, i - 1);
     ord_rap (lista, i + 1, sup);
}



eso es loq llevo avanzao y me falta un metodo mas..... ahora si espero q me puedas ayudar y los q tienen conocimiento tb.... saludos :comp:

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Alguien Sabe????
« Respuesta #3 en: Viernes 4 de Junio de 2004, 13:49 »
0
Tampoco era necesario poner todo el código, no hay que ser tan escueto como al principio ni tan explícito como ahora. Lo mejor es que pongas el fragmento de código con el que tienes problemas, o que pidas sugerencias para hacer cosas concretas. Yo todavía no tengo muy claro cuál es tu problema, necesitas otro método de ordenación??, no sabes como contar el tiempo o los movimientos??

  Espero que especifiques un poco más lo que necesitas para que podamos echarte una mano.

Saludos.

RaYBacK

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Alguien Sabe????
« Respuesta #4 en: Viernes 4 de Junio de 2004, 23:13 »
0
:huh:  :huh:  :huh: hola loco gracias por responder...... mi principal problema radica en q no tengo idea en colocar el tiempo y la cantidad de intercambios y de comparaciones q se realizan en los metodos de ordenamiento,  por ejemplo despues q se haya ordenado la lista en el burbuja al final tiene q entregar el numero de comparaciones, intercambios y e l tiempo q se demoro en ordenarlos.............he tratado pero no me resulta nada, soy principiante en esto y no se como hacerlo.... espero q me ayuden....

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Alguien Sabe????
« Respuesta #5 en: Viernes 4 de Junio de 2004, 23:48 »
0
El tiempo antes y despues de llamar a las funciones.
La cantidad de intercambios las sacas por la teoria de cada metodo, no en la practica por que te ralentiza el proceso.
QliX=D! - From the top of Tsunami