Ordenar 5 números de menor a mayor e imprimir los números impares

Iniciado por ERIK546, 20 Junio 2012, 22:08 PM

0 Miembros y 2 Visitantes están viendo este tema.

ERIK546

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.

#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;
}

maxim_o

No lo he mirado mucho... pero asi a ojo parece un error en la asignacion en el if...
Código (cpp) [Seleccionar]

arreglo[i]=aux;
arreglo[i]=arreglo[j];
arreglo[j]=aux;


Código (cpp) [Seleccionar]

aux=arreglo[i];
arreglo[i]=arreglo[j];
arreglo[j]=aux;

The Swash

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.

#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])
              {
                  aux = arreglo[i];
                  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;
}


Un saludo,
Iván Portilla.

ERIK546

Cita de: 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 (cpp) [Seleccionar]

arreglo[i]=aux;
arreglo[i]=arreglo[j];
arreglo[j]=aux;


Código (cpp) [Seleccionar]

aux=arreglo[i];
arreglo[i]=arreglo[j];
arreglo[j]=aux;

Lo he intentado pero sigue marcándome dicho error.

maxim_o

Mira tambien lo que te dijo The swash...
En el scanf debes pasarle una direccion de memoria &arreglo

overxfl0w13

#5
Me apetecía practicar con C++ que me estoy poniendo otra vez con él, mírate este código :)

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
int array[5],x=0,i=0,temp;
for (x=0;x<=4;x++)
{
cout << "Inserta el valor " << x <<endl;
cin >> array[x];
}
for (x=0;x<=4;x++)
{
for (i=0;i<=3;i++)
{
if(array[i] > array[i+1])
{
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}
}
cout <<"Ordenamiento: " <<endl;
for (x=0;x<=4;x++)
{
cout << array[x] << endl;
}
cout << "IMPARES:"<<endl;
for (x=0;x<=4;x++)
{
if(array[x] % 2 != 0)
{
cout << "Valor-->" << array[x]<<endl;
}
}

return 0;
}
[/url]

ERIK546

Cita de: 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.

#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])
              {
                  aux = arreglo[i];
                  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;
}


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