elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ordenamiento de numeros problema con la salida
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenamiento de numeros problema con la salida  (Leído 2,530 veces)
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Ordenamiento de numeros problema con la salida
« en: 23 Abril 2014, 00:08 am »

Hola como estan.

Tengo la siquiente duda este es mi algoritmo

El problema que tengo es que la salida no me sale correctamente alguien sabe a que se deba esto.
No se por que a mi me sale 0.

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. main()
  5. {
  6. int a[] = {35, 82, 30, 28, 19};
  7. int temp;
  8.  
  9.        //numero de iteraciones = n-v
  10. //Numero de veces que se repetira para ordenar = v
  11. //Numero de datos = n = 5
  12. for(int v = 0; v <= 5-1; v++)
  13. {
  14. cout << endl;
  15. for(int i = 0; i <= 5-v; i++)
  16. {
  17. if(a[i] < a[i-1])   //Evaluacion si el numero a su Izq es menor
  18. {
  19. temp = a[i];
  20. a[i] = a[i-1];
  21. a[i-1] = temp;
  22. }
  23. }
  24.  
  25. for (int i = 0; i<5 ; i++) //Salida
  26.   cout<< a[i] <<" ";
  27. }
  28. return 0;
  29. }

Pero mi salida con 5-v


salida con otra Pc con 5-v


mi salida con 4-v es como la salida de otra pc o como la segunda imagen

saludos muchas gracias.


« Última modificación: 23 Abril 2014, 00:10 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Ordenamiento de numeros problema con la salida
« Respuesta #1 en: 23 Abril 2014, 01:11 am »

El problema que tengo es que la salida no me sale correctamente alguien sabe a que se deba esto. No se por que a mi me sale 0.

Se debe a la condición de if de esa forma tu estas comparando el array con posiciones no existentes deberia quedar asi

Código
  1. for(int v = 0; v <= 5-1; v++){
  2.   cout << endl;
  3.   for (int i = 0; i <= 5-v; i++){
  4.       if( a[i] > a[i+1] ) {  //Evaluacion si el numero a su Izq es menor
  5. temp = a[i];
  6. a[i] = a[i+1];
  7. a[i+1] = temp;
  8. }
  9. }

Saludos..


En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Ordenamiento de numeros problema con la salida
« Respuesta #2 en: 23 Abril 2014, 01:21 am »

Hola

veo que solo cambiaste le < por > lo que eso hace es ordenarlos de mayor a menor

5 es el numero de datos el en arreglo y cuando v,  5 - 0 = 5 asi que en ningun momento se pasa las posiciones del arreglo.

Nota: tomando a V=0

Gracias por contestar.
« Última modificación: 23 Abril 2014, 01:29 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Ordenamiento de numeros problema con la salida
« Respuesta #3 en: 23 Abril 2014, 01:58 am »

veo que solo cambiaste le < por > lo que eso hace es ordenarlos de mayor a menor

Compila y ejecuta los ordena de menor a mayor
veo que solo cambiaste le < por > lo que eso hace es ordenarlos de mayor a menor

En la primera iteración del segundo for el valor de i es cero en el if teniendo encuenta esto tu estas comparando el primer indice del array con la posición -1 que no existe.

Saludos..

En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Ordenamiento de numeros problema con la salida
« Respuesta #4 en: 23 Abril 2014, 02:36 am »

Hola no se si estoy confundido

Compila y ejecuta los ordena de menor a mayor
y no se si ves las imagenes

pero las misma instruccion en diferente pc cambia.

segun yo nunca llega a -1.

ya que si tengo

n   v  k
5 - 0  5
5 - 1  4
5 - 2  3
5 - 3  2 
5 - 4  1

Jamas llega a -1 en las iteraciones ya sea a la catidad de operaciones que debe de hacer, o en manejo datos del arreglo que se esta haciendo.

Es lo mismo como si cambiaras 5-v por 5-v-1 la ejecucion te daria un resultado correcto. pero ese no es el tema

Gracias por responder.
En línea

Lo que se puede imaginar... se puede programar.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ordenamiento de numeros problema con la salida
« Respuesta #5 en: 23 Abril 2014, 02:50 am »

segun yo nunca llega a -1.
En la primera iteración del bucle interno el valor del contador "i" es cero y en el condicional ocurre el problema que menciona Blaster:
Código
  1. for (int i = 0; i <= 5-v; i++){
  2.   // Primera iteracion, i == 0
  3.   if (a[i] < a[i-1]) // i, i - 1 ==> 0, 0 - 1

Otro error se encuentra en la primera iteración del bucle externo: con la variable "v" igual a cero el bucle interno iterara con su contador "i" tomando los valores 0 .. 5 (seis iteraciones).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Ordenamiento de numeros problema con la salida
« Respuesta #6 en: 23 Abril 2014, 03:14 am »

hola

ya entendi.

solo cambien la inicializacion de la variables
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. main()
  5. {
  6. int a[] = {35, 82, 30, 28, 19};
  7. int temp;
  8.  
  9. //Numero de veces que se repetira para ordenar = v
  10. //Numero de datos = n = 5
  11. for(int v = 1; v <= 5-1; v++)
  12. {
  13. cout << endl;
  14. for(int i = 1; i <= 5-v; i++)
  15. {
  16. if(a[i] < a[i-1])   //Evaluacion si el numero a su Izq es menor
  17. {
  18. temp = a[i];
  19. a[i] = a[i-1];
  20. a[i-1] = temp;
  21. }
  22. }
  23.  
  24. for (int i = 0; i<5 ; i++) //Salida
  25.   cout<< a[i] <<" ";
  26. }
  27. return 0;
  28. }



ya que la salida con el for de Blaster en el segundo comentario era esta por eso creo que me confundi.



saludos y muchas gracias.

PD: gracias por apuntar donde estaba el error

Código
  1.    for (int i = 0; i <= 5-v; i++){
  2.      // Primera iteracion, i == 0
  3.      if (a[i] < a[i-1]) // i, i - 1 ==> 0, 0 - 1
En línea

Lo que se puede imaginar... se puede programar.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Problema] Programa para averiguar números pares entre 2 números
Programación Visual Basic
Dreamaker 3 5,847 Último mensaje 21 Mayo 2010, 23:45 pm
por Shell Root
ordenamiento de numeros en shellsort
Programación C/C++
angedu63 2 3,626 Último mensaje 26 Septiembre 2010, 20:29 pm
por [L]ord [R]NA
Problema de ordenamiento
.NET (C#, VB.NET, ASP)
luis456 8 4,041 Último mensaje 13 Marzo 2015, 15:14 pm
por luis456
Ayuda con ordenamiento de nombres y numeros
Java
Tada 3 1,970 Último mensaje 2 Abril 2016, 23:44 pm
por LaiaxanIV
Ayuda comparacion y ordenamiento de numeros
ASM
ivanto534 3 2,957 Último mensaje 8 Julio 2016, 17:52 pm
por xv0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines