Anuncio

Colapsar
No hay ningún anuncio todavía.

ordenar tres números

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • ordenar tres números

    Hola, tengo un problemita que me han propuesto, consiste en ordenar tres números de menor a mayor usando C++, yo se ordenarlos usando arreglos, defino un vector y luego los ordeno comparando cada una de sus componentes.

    Pero la pregunta es, usando solamente for y do/while sin usar arreglos, lograr ordenar esos 3 números.

    Lo he estado pensando, pero sin usar arreglos no se me ocurre como.

    Gracias de antemano.

  • #2
    Re: ordenar tres números

    a que le llamas "arreglo"

    Comentario


    • #3
      Re: ordenar tres números

      Escrito por Dramey Ver mensaje
      a que le llamas "arreglo"
      Un arreglo es una matriz.

      Escrito por N30F3B0 Ver mensaje
      Hola, tengo un problemita que me han propuesto, consiste en ordenar tres números de menor a mayor usando C++, yo se ordenarlos usando arreglos, defino un vector y luego los ordeno comparando cada una de sus componentes.

      Pero la pregunta es, usando solamente for y do/while sin usar arreglos, lograr ordenar esos 3 números.

      Lo he estado pensando, pero sin usar arreglos no se me ocurre como.

      Gracias de antemano.
      La ventaja de usar bucles es precisamente que puedes ir cambiando una variable (la que controla el bucle) en cada iteración. Así que si no quieres usar matrices, ¿por qué usar bucles?

      Una forma de hacerlo, sin bucles ni nada, es usar las funciones max y min (el del medio será el que no sea igual a ninguno de los dos).
      La única alternativo a ser Físico era ser etéreo.
      @lwdFisica

      Comentario


      • #4
        Re: ordenar tres números

        Escrito por pod Ver mensaje
        Un arreglo es una matriz.
        Así que si no quieres usar matrices, ¿por qué usar bucles?
        Estaba ayudando a una amiga , le pregunté si le habían enseñando a usar arreglos y me comentó que todavía no, la idea era usar solamente do, while y do/while y para hacerlo de ese modo no se me ocurrió no se me ocurrió ... por lo menos no una solución cortita.

        He ideado una solución grande pero no funciona (es decir no es una solución ), acá parte del código:

        [php]//ENCONTRANDO EL NUMERO MENOR
        i=0;
        while(x<=y&&x<=z&& i<1)
        {
        p=x;
        i=i+1;
        i++;
        }
        i=0;
        while(z<=x&&z<=y&& i<1)
        {
        p=y;
        i=i+1;
        i++;
        }
        i=0;
        while(y<=x&&y<=z&& i<1)
        {
        r=y;
        i=i+1;
        i++;
        }[/php]Yo supongo que lo anterior debería de servir para identificar al número menor, pero al hacer un codigo similar para el numero mayor y luego hallar el del centro restando, no sale los resultados esperados al ejecutar el programa.

        Usando arreglos es mas sencillo ... así:
        [php]
        #include<iostream.h>
        #include<stdio.h>
        #include<stdlib.h>
        #include<conio.h>
        #include<math.h>
        void main()
        {
        clrscr();
        int b[3],i,j,t,n;
        n=0;
        for(i=0;i<=2;i++)
        {
        n=n+1;
        cout<<"ESCRIBA el "<<n<<"o numero"<<endl;
        cin>>b[i];
        }
        b[0]=4*b[0];
        b[1]=5*b[1];
        b[2]=6*b[2];
        for(i=0; i<2; i++) {
        for (j=i+1; j<3; j++) {
        do{
        t=b[j];
        b[j]=b[i];
        b[i]=t;
        }while(b[j]<b[i]);
        }
        }
        n=0;
        for(i=0;i<=2;i++)
        {
        n=n+1;
        cout<<"posicion "<<n<<"o es "<<b[i]<<endl;
        }
        getch();
        }[/php]En realidad primero pedían ingresar tres numeros, luego al primero aumentarlo en 4 veces a segundo en 5 y al tercero en 6 para finalmente ordenar los resultados obtenidos.

        Un saludo.

        Comentario


        • #5
          Re: ordenar tres números

          Escrito por N30F3B0 Ver mensaje
          [php]//ENCONTRANDO EL NUMERO MENOR
          i=0;
          while(x<=y&&x<=z&& i<1)
          {
          p=x;
          i=i+1;
          i++;
          }
          i=0;
          while(z<=x&&z<=y&& i<1)
          {
          p=y;
          i=i+1;
          i++;
          }
          i=0;
          while(y<=x&&y<=z&& i<1)
          {
          r=y;
          i=i+1;
          i++;
          }[/php]
          No acabo de entender este código... las líneas "i=i+1" y "i++" hacen exactamente lo mismo, ¿no? Luego, en los bucles no hay nada que cambie el valor de "x" o de "y", por lo que las asignaciones siempre son lo mismo.

          Una forma realmente chorra de hacer este problema sería:

          [php]#include <iostream>

          using namespace std;

          int main()
          {
          int a,b,c,i,x;

          cout<<"\nESCRIBA el 1r numero: "<<endl;
          cin>>a;
          cout<<"\nESCRIBA el 2o numero: "<<endl;
          cin>>b;
          cout<<"\nESCRIBA el 3r numero: "<<endl;
          cin>>c;

          i = 0;

          while (!(a<=b && b<=c))
          {
          if (rand() % 100 > 50)
          {
          x = a; a = b; b = x;
          };
          if (rand() % 100 > 50)
          {
          x = a; a = c; c = x;
          };

          i++;
          }

          cout<<"Ordenacion conseguida en "<< i << " iteracion(es).\n";
          cout<<a<<" <= "<<b<<" <= "<< c << "\n";
          }[/php]Como ves, lo que hace es intercambiar "a veces" las variables, para esperar acabar dando con la combinación correcta. Un ejemplo:

          Código:
          ESCRIBA el 1r numero: 
          3                     
          
          ESCRIBA el 2o numero:
          2
          
          ESCRIBA el 3r numero:
          1
          Ordenacion conseguida en 6 iteracion(es).
          1 <= 2 <= 3
          La única alternativo a ser Físico era ser etéreo.
          @lwdFisica

          Comentario


          • #6
            Re: ordenar tres números

            Escrito por pod Ver mensaje
            No acabo de entender este código... las líneas "i=i+1" y "i++" hacen exactamente lo mismo, ¿no? Luego, en los bucles no hay nada que cambie el valor de "x" o de "y", por lo que las asignaciones siempre son lo mismo.
            Esa parte del código solamente permite encontrar el número menor, eso del i++ e "i+1" (funcionan para lo mismo escribí de demás).

            Mi idea era con ese código encontrar el numero menor, y guardarlo en "p", de cada uno de esos "while" solo uno iba a servir para guardar uno de los valores en "p" dependiendo de en cual de los casos se cumpla la condición que va en el interior del while. Es decir el "while" primero comprueba si el número es el menor y si es así o guarda en "p", de lo contrario no hace nada.

            Luego de eso con un código similar, se podria encontrar el número mayor, y guardarlo digamos en "r" ... para finalmente obtener el número central haciendo "x+y+z-p-q".

            A mi la idea me parece correcta salvo que no este comprendiendo como funciona el "while".

            Comentario


            • #7
              Re: ordenar tres números

              Escrito por N30F3B0 Ver mensaje
              Esa parte del código solamente permite encontrar el número menor, eso del i++ e "i+1" (funcionan para lo mismo escribí de demás).

              Mi idea era con ese código encontrar el numero menor, y guardarlo en "p", de cada uno de esos "while" solo uno iba a servir para guardar uno de los valores en "p" dependiendo de en cual de los casos se cumpla la condición que va en el interior del while. Es decir el "while" primero comprueba si el número es el menor y si es así o guarda en "p", de lo contrario no hace nada.

              Luego de eso con un código similar, se podria encontrar el número mayor, y guardarlo digamos en "r" ... para finalmente obtener el número central haciendo "x+y+z-p-q".

              A mi la idea me parece correcta salvo que no este comprendiendo como funciona el "while".
              Es que tal y como están esos while's, no hacen nada más que funcionar como un "if" normal...

              El primero hará p=x si x es menor que las otras dos variables. El segundo hará p=y si z (?) es el más pequeño de los tres. El tercero hará r=y si "y" es el menor que los tres. ¿Estás seguro que esto te va a ordenarlas variables?
              La única alternativo a ser Físico era ser etéreo.
              @lwdFisica

              Comentario


              • #8
                Re: ordenar tres números

                Escrito por pod Ver mensaje
                El primero hará p=x si x es menor que las otras dos variables. El segundo hará p=y si z (?) es el más pequeño de los tres. El tercero hará r=y si "y" es el menor que los tres. ¿Estás seguro que esto te va a ordenarlas variables?
                No pod, el segundo no será igual que el primero la idea es la siguiente:

                • Con los primeros 3 "while" encuentro al menor ... hasta ahí no hay problema porque al parecer también estamos de acuerdo en eso, el dato menor se guarda en "p"
                • Los siguientes tres "while" los usaré para encontrar el mayor, así como en el primero coloqué "x<=y&&x<=z" y así para "y" e "z" ... para hallar el mayor la cosa será al revés, por ejemplo en el primer while sería asi "x>=y&&x>=z" y para los dos que siguien análogamente ... ¿eso me daría que el mayor es el dato que se guarda en "r" verdad?
                • Y para el número central no utilizo "while" si no solamente le resto a la suma de las tres variables ingresadas, los numeros p y q hallados en los dos pasos anteriores.

                Sobre si estoy seguro, yo diría que si, salvo que se me esté pasando algún detalle, si es así que alguien me lo haga notar

                Comentario


                • #9
                  Re: ordenar tres números

                  Escrito por N30F3B0 Ver mensaje
                  [php]
                  i=0;
                  while(z<=x&&z<=y&& i<1)
                  {
                  p=y;
                  i=i+1;
                  i++;
                  }[/php]
                  Aquí p valdrá y si z es el menor. Esto seguro que está mal.
                  La única alternativo a ser Físico era ser etéreo.
                  @lwdFisica

                  Comentario


                  • #10
                    Re: ordenar tres números

                    Escrito por pod Ver mensaje
                    Aquí p valdrá y si z es el menor. Esto seguro que está mal.
                    Ya entiendo ... debo de poner "y" ahí se me paso ese detalle

                    Comentario

                    Contenido relacionado

                    Colapsar

                    Trabajando...
                    X