Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dragon_hack en 30 Julio 2010, 16:28 pm



Título: [ayuda][c++]ordenar arreglo
Publicado por: dragon_hack en 30 Julio 2010, 16:28 pm
tengo un problema grande al no entender la estrutura del metodo de ordenamiento "burbuja" me podrian ayudar en algo? vean el arreglo que trato de ordenar.

Código:
#include <iostream>
 using namespace std;
int main()
{
    const int tama = 10;
int a[tama] = {5,50,20,10,10,8,3,2,6,1};
//imprimos el arreglo con los valores iniciales
cout<<"arreglo antes de ordenar......"<<endl;
cout<<endl;
cout<<endl;
for (int j =0; j <tama; j++)
cout<< j << a[j] <<endl;


cout<<endl;
cout<<endl;
cout<<"arreglo despues de ordenar..........."<<endl;
cout<<endl;
cout<<endl;

for (int i = 1; i <tama; i++ ){
for (j = 0; j <tama - i ; j++){

if ( a[j]> a[j + 1]) {

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

for (j =0; j <tama; j++) {
cout<< j << a[ j ] <<endl;
}
//pausamos despues de que muestre el resultado el programa
system("pause");
return 0;
} //fin del programa


Título: Re: [ayuda][c++]ordenar arreglo
Publicado por: N3r0 en 31 Julio 2010, 00:15 am
Hola como estas mira tenes dos problemas por empezar en el ordenamiento utilizas una variable llamada temp que  no declaras en ningun lado y segundo en el for
Código
  1. for (j = 0; j <tama - i ; j++)
  2.  
te falto el int
Código
  1. for (int j = 0; j <tama - i ; j++)
  2.  

cuando declaras la variable en la sección de inicializacion de una estructura for su alcanse esta acotado al for.

aca esta modificado y funciona:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.        int temp=0;
  9.        const int tama = 10;
  10. int a[tama] ={5,50,20,10,10,8,3,2,6,1};
  11. //imprimos el arreglo con los valores iniciales
  12. cout<<"arreglo antes de ordenar......"<<endl;
  13. cout<<endl;
  14. cout<<endl;
  15.  
  16.        for (int j =0; j <tama; j++) {
  17. cout<<j<<" "<<a[j]<<endl;
  18. }
  19.  
  20. cout<<endl;
  21. cout<<"arreglo despues de ordenar..........."<<endl;
  22. cout<<endl;
  23. cout<<endl;
  24.  
  25. for (int i = 0; i <tama; i++ ){
  26. for (int j = 0; j <(tama- i); j++){
  27.  
  28. if ( a[j]> a[j + 1]) {
  29.  
  30. temp = a[j];
  31. a[j] = a[j + 1] ;
  32. a[j + 1] = temp;
  33. }
  34. }
  35. }
  36.  
  37. for (int j =0; j <tama; j++) {
  38.                             cout<<j<<" "<<a[j]<<endl;
  39. }
  40.  
  41.        system("PAUSE");
  42.        return EXIT_SUCCESS;
  43. }
  44.  
  45.  
  46.  

Saludos Cualquier otro problema no dudes en consultar.



Título: Re: [ayuda][c++]ordenar arreglo
Publicado por: cbug en 31 Julio 2010, 00:48 am
En realidad no sé si funciona, pero fijate que analizarás un elemento que no corresponde, ejemplo

Código:
i = 1, luego j se comparará con i = 1.

En realidad:

Código
  1. for(int i = 0; i < n - 1; i++)
  2.    for(int j = 0; j < n; j++)
  3.        If(...)
  4.           swap(...,...)


Título: Re: [ayuda][c++]ordenar arreglo
Publicado por: dragon_hack en 31 Julio 2010, 21:18 pm
muy interesantes sus aclaraciones, pero no me respondieron mi duda principal: como funciona el metodo de la burbuja? y la sintaxis para este caso cual seria???

PD: gracias por el arreglo del code  ;D


Título: Re: [ayuda][c++]ordenar arreglo
Publicado por: Littlehorse en 31 Julio 2010, 21:20 pm
 Burbuja (http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja)
burbuja C site:foro.elhacker.net (http://www.google.com.ar/#hl=es&source=hp&q=burbuja+C+site%3Aforo.elhacker.net&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=44521399c06f7275)

 :D

Saludos!