Test Foro de elhacker.net SMF 2.1

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.

#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

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

te falto el int

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


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:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
       int temp=0;
       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<<"arreglo despues de ordenar..........."<<endl;
cout<<endl;
cout<<endl;

for (int i = 0; i <tama; i++ ){
for (int 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 (int j =0; j <tama; j++) {
                            cout<<j<<" "<<a[j]<<endl;
}

       system("PAUSE");
       return EXIT_SUCCESS;
}




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

i = 1, luego j se comparará con i = 1.

En realidad:

Código (cpp) [Seleccionar]
for(int i = 0; i < n - 1; i++)
    for(int j = 0; j < n; j++)
        If(...)
           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!