Debate Programadores de C++ a mi

  1. #1
    ForoParalelo: Miembro Avatar de ZER81
    Registro
    11 Jul, 15
    Ubicación
    Casa de topota madre
    Mensajes
    18,823
    Me gusta (Dados)
    369
    Me gusta (Recibidos)
    2831

    Programadores de C++ a mi

    Estoy creando un programa que vas metiendo nombres de ciudades con sus temperaturas y te tiene que decir la ciudad con la maxima temperatura:

    He conseguido sacar la temperatura maxima pero la ciudad no tengo ni idea de como sacarla.

    De momento tengo esto:

    #include <iostream>
    using namespace std;

    int main(){
    double N, n_act;
    string ciudad;
    cout << "Introuce la ciudad, y su temperatura: ";
    cin >> ciudad >> N;
    n_act = N;
    while (N!= 0.0 && ciudad!= "nada"){
    if (N > n_act){
    n_act = N ;

    }

    cin >> ciudad;
    cin >> N;
    }
    cout << "La temperatura es: " << n_act << " y la ciudad es: " << ciudad << endl;

  2. #2
    ForoParalelo: Miembro Avatar de Romdrin
    Registro
    21 May, 14
    Ubicación
    En la puta city center
    Mensajes
    377
    Me gusta (Dados)
    95
    Me gusta (Recibidos)
    105
    EDIT: A ver, por lo que entiendo tu vas introduciendo ciudades con sus temperaturas y te va diciendo la máxima. En que momento quieres que pare el programa? Quieres que te saque la temperatura maxima cada vez que introduces una nueva o cuando decides no introducir más?
    Última edición por Romdrin; 26/09/2015 a las 13:13

  3. #3
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    Nunca he trabajdo en C++ pero creo que te puedo echar una mano. Creo que seria interesante crear un array asociativo o algo similar (yo suelo utilizar el formato json para hacer este tipo de cosas pero no se como se aplican en C++), entonces he buscando y he encontrado la clase map que hace algo parecido (http://www.cplusplus.com/reference/map/map/at/). Entonces la idea es que haga rellenes map con:
    {
    {"ciudad":valor},
    {"ciudad1":valor1},
    ...
    }

    De esa forma luego tendrias una temperatura asociadad a una ciudad y luego para obtener el valor maximo de la temperatura recorres el segundo valor y cuando se da la condicion de que N>n_act tienes la temperatura y la ciudad.

    Este ejemplo hace lo mismo pero en vez de con ciudad - T lo hace con antonimos. (http://kengine.sourceforge.net/tutor...stdmap-eng.htm)

    Ahora el problema viene es si quieres relacionar mas datos con la ciudad (temperatura, habitantes, nº de playas...).


    Un consejo, el nombre de las variables que sea representativo de lo que es el valor.. por ejemplo la temperatura yo lo llamaria t en vez de N.

    EDIT:
    Esto no tiene sentido si dejas ciudad y N escuchando al input (no sabia que eso se podia hacer). Pense que una vez introducidos los datos ya no se podian incresar mas.
    Última edición por micosil12; 26/09/2015 a las 13:35

  4. #4
    ForoParalelo: Miembro Avatar de ZER81
    Registro
    11 Jul, 15
    Ubicación
    Casa de topota madre
    Mensajes
    18,823
    Me gusta (Dados)
    369
    Me gusta (Recibidos)
    2831
    Cita Iniciado por Romdrin Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    EDIT: A ver, por lo que entiendo tu vas introduciendo ciudades con sus temperaturas y te va diciendo la máxima. En que momento quieres que pare el programa? Quieres que te saque la temperatura maxima cada vez que introduces una nueva o cuando decides no introducir más?
    Cuando pone los ultimos valores que son temperatura 0.0 y ciudad nada es decir tu vas poniendo: 26.3 zaragoza 25.2 malaga 0.0 nada.
    Te tiene que decir la ciudad con mas temperatura es zaragoza

  5. #5
    ForoParalelo: Miembro Avatar de Romdrin
    Registro
    21 May, 14
    Ubicación
    En la puta city center
    Mensajes
    377
    Me gusta (Dados)
    95
    Me gusta (Recibidos)
    105
    Vale creo que ya entendí el código entero hahaha. A mi así me funciona:
    Código:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(){
        double N, n_act;
        string ciudad, c_act;
        cout << "Introuce la ciudad, y su temperatura: ";
        cin >> ciudad >> N;
        n_act = N;
        c_act = ciudad;
        while (N!= 0.0 && ciudad!= "nada"){
            if (N > n_act){
                n_act = N ;
                c_act = ciudad;
        }
    
        cin >> ciudad;
        cin >> N;
        }
        cout << "La temperatura es: " << n_act << " y la ciudad es: " << c_act << endl;
    }

  6. #6
    ForoParalelo: Miembro Avatar de Tizon
    Registro
    19 Dec, 14
    Mensajes
    5,555
    Me gusta (Dados)
    784
    Me gusta (Recibidos)
    1420
    Tienes que crear una estructura o clase tipo este por ejemplo:

    ClassCiudadTemp{
    int temp;
    String Ciudad
    }

    Siendo una clase tendrás la ventaja de poder implementar métodos propios.

    Luego puedes tranquilamente crear un arrai.

    ClassCiudadTemp MiAlmacenDeCiudades[];

    Así tendrás un arrai de elementos dónde por el índice tienes al mismo tiempo el nombre de la ciudad y la temperatura.

    Lo suyo sería crear una colección, así el tamaño es dinámico, pero no quiero liarte más la cosa. Igual he escrito algo mal, hace tiempo que no escribo código en C++

  7. #7
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    Cita Iniciado por Romdrin Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Vale creo que ya entendí el código entero hahaha. A mi así me funciona:
    Código:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(){
        double N, n_act;
        string ciudad, c_act;
        cout << "Introuce la ciudad, y su temperatura: ";
        cin >> ciudad >> N;
        n_act = N;
        c_act = ciudad;
        while (N!= 0.0 && ciudad!= "nada"){
            if (N > n_act){
                n_act = N ;
                c_act = ciudad;
        }
    
        cin >> ciudad;
        cin >> N;
        }
        cout << "La temperatura es: " << n_act << " y la ciudad es: " << c_act << endl;
    }
    No entiendom uy bien como funciona ese while. (ni en tu ejemplo ni el primero). Supuestamente le das una condicion que si se cumple una vez se cumple siempre no ? no hay nada que haga cambiar N o ciudad una vez entrado en el loop

  8. #8
    ForoParalelo: Miembro Avatar de oscarlcantabria
    Registro
    09 Sep, 15
    Mensajes
    865
    Me gusta (Dados)
    588
    Me gusta (Recibidos)
    141
    Si

    Enviado desde mi movil mediante Tapatalk

  9. #9
    ForoParalelo: Miembro Avatar de Romdrin
    Registro
    21 May, 14
    Ubicación
    En la puta city center
    Mensajes
    377
    Me gusta (Dados)
    95
    Me gusta (Recibidos)
    105
    Cita Iniciado por micosil12 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    No entiendom uy bien como funciona ese while. (ni en tu ejemplo ni el primero). Supuestamente le das una condicion que si se cumple una vez se cumple siempre no ? no hay nada que haga cambiar N o ciudad una vez entrado en el loop
    Fue lo que me lió al principio, pero si te fijas tiene dos cin dentro del while, con lo cual tu vas introduciendo nuevos datos de ciudades y temperaturas. En el momento en que introduces nada y 0 el while para. Es un poco lioso porque el texto de introducir la ciudad y la temperatura queda fuera, pero realmente sigues pudiendo introducir más datos.
    No se si me entiendes, soy nulo dando explicaciones hahaha

  10. #10
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    Cita Iniciado por Romdrin Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Fue lo que me lió al principio, pero si te fijas tiene dos cin dentro del while, con lo cual tu vas introduciendo nuevos datos de ciudades y temperaturas. En el momento en que introduces nada y 0 el while para. Es un poco lioso porque el texto de introducir la ciudad y la temperatura queda fuera, pero realmente sigues pudiendo introducir más datos.
    No se si me entiendes, soy nulo dando explicaciones hahaha
    te has explicado perfectamente. No sabia que esa variable quedaba a la escucha, ya te digo que no me muevo mucho por los C's

  11. #11
    ForoParalelo: Miembro Avatar de ZER81
    Registro
    11 Jul, 15
    Ubicación
    Casa de topota madre
    Mensajes
    18,823
    Me gusta (Dados)
    369
    Me gusta (Recibidos)
    2831
    Cita Iniciado por Romdrin Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Vale creo que ya entendí el código entero hahaha. A mi así me funciona:
    Código:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(){
        double N, n_act;
        string ciudad, c_act;
        cout << "Introuce la ciudad, y su temperatura: ";
        cin >> ciudad >> N;
        n_act = N;
        c_act = ciudad;
        while (N!= 0.0 && ciudad!= "nada"){
            if (N > n_act){
                n_act = N ;
                c_act = ciudad;
        }
    
        cin >> ciudad;
        cin >> N;
        }
        cout << "La temperatura es: " << n_act << " y la ciudad es: " << c_act << endl;
    }
    mis 10

  12. #12
    ForoParalelo: Miembro Avatar de ZER81
    Registro
    11 Jul, 15
    Ubicación
    Casa de topota madre
    Mensajes
    18,823
    Me gusta (Dados)
    369
    Me gusta (Recibidos)
    2831
    Cita Iniciado por Romdrin Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Fue lo que me lió al principio, pero si te fijas tiene dos cin dentro del while, con lo cual tu vas introduciendo nuevos datos de ciudades y temperaturas. En el momento en que introduces nada y 0 el while para. Es un poco lioso porque el texto de introducir la ciudad y la temperatura queda fuera, pero realmente sigues pudiendo introducir más datos.
    No se si me entiendes, soy nulo dando explicaciones hahaha
    Si es verdad tienes razon, puedes meter mas datos pero se supone que cuando metes temperatura 0.0 y ciudad nada, tienes que parar de meter datos sino se jode todo

  13. #13
    ForoParalelo: Miembro Avatar de Romdrin
    Registro
    21 May, 14
    Ubicación
    En la puta city center
    Mensajes
    377
    Me gusta (Dados)
    95
    Me gusta (Recibidos)
    105
    Cita Iniciado por micosil12 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    te has explicado perfectamente. No sabia que esa variable quedaba a la escucha, ya te digo que no me muevo mucho por los C's
    Cita Iniciado por ZER81 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    mis 10
    Una versión más personalizada a mi gusto:
    Código:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(){
        double temp, temp_act;
        string ciudad, c_act;
        cout << "Introduce la ciudad: ";
        cin >> ciudad;
        cout << "Introduce la temperatura de " << ciudad << ": ";
        cin >> temp;
        temp_act = temp;
        c_act = ciudad;
        while (temp!= 0.0 && ciudad!= "nada"){
            if (temp > temp_act){
                temp_act = temp ;
                c_act = ciudad;
        }
        cout << "Introduce otra ciudad: ";
        cin >> ciudad;
        cout << "Introduce la temperatura de " << ciudad << ": ";
        cin >> temp;
        }
        cout << "La temperatura es: " << temp_act << " y la ciudad es: " << c_act << endl;
    }

  14. #14
    ForoParalelo: Miembro Avatar de ZER81
    Registro
    11 Jul, 15
    Ubicación
    Casa de topota madre
    Mensajes
    18,823
    Me gusta (Dados)
    369
    Me gusta (Recibidos)
    2831
    Cita Iniciado por Romdrin Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Una versión más personalizada a mi gusto:
    Código:
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(){
        double temp, temp_act;
        string ciudad, c_act;
        cout << "Introduce la ciudad: ";
        cin >> ciudad;
        cout << "Introduce la temperatura de " << ciudad << ": ";
        cin >> temp;
        temp_act = temp;
        c_act = ciudad;
        while (temp!= 0.0 && ciudad!= "nada"){
            if (temp > temp_act){
                temp_act = temp ;
                c_act = ciudad;
        }
        cout << "Introduce otra ciudad: ";
        cin >> ciudad;
        cout << "Introduce la temperatura de " << ciudad << ": ";
        cin >> temp;
        }
        cout << "La temperatura es: " << temp_act << " y la ciudad es: " << c_act << endl;
    }
    Si mas elegante la verdad

  15. #15
    Haxballero Avatar de AveFelix
    Registro
    07 Apr, 13
    Mensajes
    4,599
    Me gusta (Dados)
    10885
    Me gusta (Recibidos)
    1925
    Hay una máxima que se aplica enormemente en programación y es que la solución más sencilla siempre suele ser la correcta. No hay que meterse a usar estructuras complejas cuando el programa no lo necesite, lo importante es buscar un algoritmo sencillo que cumpla con las condiciones del problema, y eso es independiente del lenguaje utilizado.

  16. #16
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    Cita Iniciado por AveFelix Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Hay una máxima que se aplica enormemente en programación y es que la solución más sencilla siempre suele ser la correcta. No hay que meterse a usar estructuras complejas cuando el programa no lo necesite, lo importante es buscar un algoritmo sencillo que cumpla con las condiciones del problema, y eso es independiente del lenguaje utilizado.
    Bueno, eso pensaba yo justo antes de entrar a este post. Lo que hubiese hecho (ya que los lenguajes por los que me muevo facilitan esto) es crear un json y al ser un formato estructurado el problema se resolveria de manera sencilla. Pero en este caso el entorno permite (y parece una solucion sencilla) que una vez efecutado el while se puedan seguir añadiendo valores. No tenia ni idea que se podia hacer eso (en mi entorno no se permite), entonces lo de "independiente del lenguaje utilizado" habria que ponerlo entre comillas: '"independiente del lenguaje utilizado"' xD. El entorno tambien importa.
    Última edición por micosil12; 26/09/2015 a las 13:57

  17. #17
    ForoParalelo: Miembro Avatar de ZER81
    Registro
    11 Jul, 15
    Ubicación
    Casa de topota madre
    Mensajes
    18,823
    Me gusta (Dados)
    369
    Me gusta (Recibidos)
    2831
    Que nada chicos que muchisimas gracias a todos...

  18. #18
    Haxballero Avatar de AveFelix
    Registro
    07 Apr, 13
    Mensajes
    4,599
    Me gusta (Dados)
    10885
    Me gusta (Recibidos)
    1925
    Cita Iniciado por micosil12 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Bueno, eso pensaba yo justo antes de entrar a este post. Lo que hubiese hecho (ya que los lenguajes por los que me muevo facilitan esto) es crear un json y al ser un formato estructurado el problema se resolveria de manera sencilla. Pero en este caso el entorno permite (y parece una solucion sencilla) que una vez efecutado el while se puedan seguir añadiendo valores. No tenia ni idea que se podia hacer eso (en mi entorno no se permite), entonces lo de "independiente del lenguaje utilizado" habria que ponerlo entre comillas: '"independiente del lenguaje utilizado"' xD. El entorno tambien importa.
    No entiendo a qué te refieres con eso. Tampoco sé a qué entornos te refieres, pero no creo que en ningún lenguaje no se pueda hacer un bucle de lectura, manipular dos variables con el nombre de la ciudad y la temperatura correspondientes al máximo, y ejecutar instrucciones de comparación para actualizar esos valores. No es necesario hacer estructuras complejas si sólo necesitas el máximo, ya que se puede ir actualizando conforme se va leyendo. Otra cosa sería elaborar un ranking de ciudades con todas las introducidas, cosa que no se pide.

  19. #19
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    Cita Iniciado por AveFelix Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    No entiendo a qué te refieres con eso. Tampoco sé a qué entornos te refieres, pero no creo que en ningún lenguaje no se pueda hacer un bucle de lectura, manipular dos variables con el nombre de la ciudad y la temperatura correspondientes al máximo, y ejecutar instrucciones de comparación para actualizar esos valores. No es necesario hacer estructuras complejas si sólo necesitas el máximo, ya que se puede ir actualizando conforme se va leyendo. Otra cosa sería elaborar un ranking de ciudades con todas las introducidas, cosa que no se pide.
    Entiendo lo que quieres decir pero no se si has leido un poco el codigo y es que dentro del while hay un par de variables que siguen escuchando valores hasta que le dices . Yo no contaba con esa herramienta ya que no en todos los entornos se puede utilizar esto.

  20. #20
    Remove Kebab Avatar de Spetsnaz
    Registro
    08 May, 15
    Mensajes
    9,890
    Me gusta (Dados)
    4713
    Me gusta (Recibidos)
    3588
    Yo el "int main(){"
    lo ponía como

    int main()
    {

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •