Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ERIK546 en 20 Junio 2012, 22:08 pm



Título: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: ERIK546 en 20 Junio 2012, 22:08 pm
Hola a todos, como dice el título no es un programa muy complicado sin embargo no he podido hacer ejecutar de una manera correcta al marcarme error en el ejecutable. Solicito su ayuda les dejo el código, supongo que el problema se encuentra en la dimensión del arreglo. Gracias de antemano.
Código:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   
       int i,j, aux;
       int arreglo[5];
       printf("Programa que ordena de menor a mayor 5 numeros e imprime los impares\n");
       printf("Introduce los numeros\n");
       for(i=0;i<=4;i++){
                        scanf("%d",arreglo[i]);
                         }
       for(i=0;i<=4;i++){
                         for(j=i+1;j<=4;j++){
                                             if(arreglo[i]>arreglo[j]){
                                                                       arreglo[i]=aux;
                                                                       arreglo[i]=arreglo[j];
                                                                       arreglo[j]=aux;
                                                                       }
                                             }
                         }
       for(i=0;i<=4;i++){
                         printf("El ordenamiento queda de la siguiente manera: %d\n",arreglo[i]);
                         }
       for(i=0;i<=4;i++){
                         if((arreglo[i]/2)!=0){
                                               printf("Los numeros impares son: %d\n",arreglo[i]);
                                               }
                         }
 
  system("PAUSE");
  return 0;
}


Título: Re: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: maxim_o en 20 Junio 2012, 22:31 pm
No lo he mirado mucho... pero asi a ojo parece un error en la asignacion en el if...
Código
  1. arreglo[i]=aux;
  2. arreglo[i]=arreglo[j];
  3. arreglo[j]=aux;
  4.  

Código
  1. aux=arreglo[i];
  2. arreglo[i]=arreglo[j];
  3. arreglo[j]=aux;
  4.  


Título: Re: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: The Swash en 20 Junio 2012, 23:15 pm
Hola,

Tienes 2 problemas:
  • Utilizas mal el término de intercambiar valor entre 2 variables.
  • Utilizas mal el término de punteros.

Tus errores recaen en la variable que le pasas al "scanf", debe ser un puntero. Entonces debe ser "&arreglo(i)" y en la utilización incorrecta del intercambio de variables.

Te recomiendo tratar de indentar mejor, mira que se ve un poco más claro.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  
  7.       int i,j, aux;
  8.       int arreglo[5];
  9.       printf("Programa que ordena de menor a mayor 5 numeros e imprime los impares\n");
  10.       printf("Introduce los numeros\n");
  11.       for(i=0;i<=4;i++)
  12.       {
  13.           scanf("%d",&arreglo[i]);
  14.       }
  15.       for(i=0;i<=4;i++)
  16.       {
  17.           for(j=i+1;j<=4;j++)
  18.           {
  19.               if(arreglo[i]>arreglo[j])
  20.               {
  21.                   aux = arreglo[i];
  22.                   arreglo[i] = arreglo[j];
  23.                   arreglo[j] = aux;
  24.               }
  25.           }
  26.       }
  27.       for(i=0;i<=4;i++)
  28.       {
  29.           printf("El ordenamiento queda de la siguiente manera: %d\n",arreglo[i]);
  30.       }
  31.       for(i=0;i<=4;i++)
  32.       {
  33.           if((arreglo[i]%2)!=0)
  34.           {
  35.               printf("Los numeros impares son: %d\n",arreglo[i]);
  36.           }
  37.       }
  38.       system("PAUSE");
  39.       return 0;
  40. }

Un saludo,
Iván Portilla.


Título: Re: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: ERIK546 en 20 Junio 2012, 23:17 pm
No lo he mirado mucho... pero asi a ojo parece un error en la asignacion en el if...
Código
  1. arreglo[i]=aux;
  2. arreglo[i]=arreglo[j];
  3. arreglo[j]=aux;
  4.  

Código
  1. aux=arreglo[i];
  2. arreglo[i]=arreglo[j];
  3. arreglo[j]=aux;
  4.  
Lo he intentado pero sigue marcándome dicho error.


Título: Re: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: maxim_o en 20 Junio 2012, 23:49 pm
Mira tambien lo que te dijo The swash...
En el scanf debes pasarle una direccion de memoria &arreglo


Título: Re: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: overxfl0w13 en 21 Junio 2012, 01:01 am
Me apetecía practicar con C++ que me estoy poniendo otra vez con él, mírate este código :)

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int array[5],x=0,i=0,temp;
  7. for (x=0;x<=4;x++)
  8. {
  9. cout << "Inserta el valor " << x <<endl;
  10. cin >> array[x];
  11. }
  12. for (x=0;x<=4;x++)
  13. {
  14. for (i=0;i<=3;i++)
  15. {
  16. if(array[i] > array[i+1])
  17. {
  18. temp = array[i];
  19. array[i] = array[i+1];
  20. array[i+1] = temp;
  21. }
  22. }
  23. }
  24. cout <<"Ordenamiento: " <<endl;
  25. for (x=0;x<=4;x++)
  26. {
  27. cout << array[x] << endl;
  28. }
  29. cout << "IMPARES:"<<endl;
  30. for (x=0;x<=4;x++)
  31. {
  32. if(array[x] % 2 != 0)
  33. {
  34. cout << "Valor-->" << array[x]<<endl;
  35. }
  36. }
  37.  
  38. return 0;
  39. }
  40.  


Título: Re: Ordenar 5 números de menor a mayor e imprimir los números impares
Publicado por: ERIK546 en 23 Junio 2012, 00:36 am
Hola,

Tienes 2 problemas:
  • Utilizas mal el término de intercambiar valor entre 2 variables.
  • Utilizas mal el término de punteros.

Tus errores recaen en la variable que le pasas al "scanf", debe ser un puntero. Entonces debe ser "&arreglo(i)" y en la utilización incorrecta del intercambio de variables.

Te recomiendo tratar de indentar mejor, mira que se ve un poco más claro.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  
  7.       int i,j, aux;
  8.       int arreglo[5];
  9.       printf("Programa que ordena de menor a mayor 5 numeros e imprime los impares\n");
  10.       printf("Introduce los numeros\n");
  11.       for(i=0;i<=4;i++)
  12.       {
  13.           scanf("%d",&arreglo[i]);
  14.       }
  15.       for(i=0;i<=4;i++)
  16.       {
  17.           for(j=i+1;j<=4;j++)
  18.           {
  19.               if(arreglo[i]>arreglo[j])
  20.               {
  21.                   aux = arreglo[i];
  22.                   arreglo[i] = arreglo[j];
  23.                   arreglo[j] = aux;
  24.               }
  25.           }
  26.       }
  27.       for(i=0;i<=4;i++)
  28.       {
  29.           printf("El ordenamiento queda de la siguiente manera: %d\n",arreglo[i]);
  30.       }
  31.       for(i=0;i<=4;i++)
  32.       {
  33.           if((arreglo[i]%2)!=0)
  34.           {
  35.               printf("Los numeros impares son: %d\n",arreglo[i]);
  36.           }
  37.       }
  38.       system("PAUSE");
  39.       return 0;
  40. }

Un saludo,
Iván Portilla.
Muchas gracias ha corrido a la perfección.