[C con Clase] Duda con estructuras

Diego diegoartesanal en gmail.com
Dom Jul 15 19:44:29 CEST 2012


¿Qué tal Oscar?, estuve revisando el código , prueba esto:

Al último for , agregale una llave que abarque el bloque de los dos if, con
eso debería resolverse tu problema (están en negrita).


for(n=0; n<=5; n++)*{*
    if (lista[n].puntos > mayorp)
    {
        mayorp = lista[n].puntos;
        strcpy(mayorj, lista[n].nombre);
    }

    if (lista[n].puntos < menorp)
    {
        menorp = lista[n].puntos;
        strcpy(menorj, lista[n].nombre);
    }
*}*

Saludos desde Perú
Diego.

El 15 de julio de 2012 10:27, Oscar <pelucheloko en hotmail.com> escribió:

>   Hola que tal
>
> Tengo dos códigos fuentes de dos programas, uno de ellos (el primero que
> posteo) es el original hecho por el autor en C, el segundo es mío y hecho
> en C++.
>
> El mío no funciona correctamente, el programa pide 6 nombres de jugadores
> y 6 puntuaciones, el programa al final muestra el nombre del jugador con
> más puntos y el que menos.
>
> El del autor funciona ok, pero a mí me da el valor del jugador con menos
> puntos incorrecto ¿por qué? No alcanzo a ver por mi mismo la diferencia.
>
> Muchas gracias y un saludo.
>
> Código original del autor:
>
> #include <stdio.h>
> #include <string.h>
>
> /* Definimos la estructura del array. */
> struct registro {
>     char jugador[50];
>     int puntos;
> };
>
>
>
> int main (void)
> {
>     struct registro lista[6];
>     int i;
>     int max_puntos;
>     int min_puntos;
>     char max_jugador[50];
>     char min_jugador[50];
>
>     /* Rellenamos la lista de seis jugadores. */
>
>     /* Pedimos al usuario el nombre y la puntuacion de
>     seis jugadores y los almacenamos en el array. */
>     for (i=0; i<=5; i++)
>     {
>         printf("\nEscriba el nombre del jugador %d: ", i+1);
>         gets(lista[i].jugador);
>         printf("Escriba su puntuacion de: ");
>         scanf("%d", &lista[i].puntos);
>         fflush(stdin);
>     }
>
>     /* Mostramos el nombre del jugador con mas
>     puntos y el nombre del jugador con menos. */
>
>     /* Tomamos la puntuacion del primer jugador de la
>     lista, y su nombre, como la maxima y la minima. */
>     max_puntos=lista[0].puntos;
>     strcpy(max_jugador, lista[0].jugador);
>     min_puntos=lista[0].puntos;
>     strcpy(min_jugador, lista[0].jugador);
>
>     for (i=1; i<=5; i++)
>     {
>         /* Comprobamos si el jugador actual
>         tiene el maximo de puntos. */
>         if (lista[i].puntos>max_puntos)
>         {
>             max_puntos=lista[i].puntos;
>             strcpy(max_jugador, lista[i].jugador);
>         }
>
>         /* Comprobamos si el jugador actual
>         tiene el minimo de puntos. */
>         if (lista[i].puntos<min_puntos)
>         {
>             min_puntos=lista[i].puntos;
>             strcpy(min_jugador, lista[i].jugador);
>         }
>
>     }
>
>     /* Mostramos el nombre del jugador con mas puntos
>     y el nombre del jugador con menos puntos. */
>     printf("\nJugador con mas puntos: %s", max_jugador);
>     printf("\nJugador con menos puntos: %s", min_jugador);
>
>     /* Hacemos una pausa hasta que el usuario pulse Intro */
>     fflush(stdin);
>     printf("\n\nPulse Intro para finalizar...");
>     getchar();
> }
>
>
>
> ************* Mi código : ****************
>
> #include <iostream>
> #include <stdio.h>
> #include <string.h>
>
> using namespace std;
>
> struct Tjugadores {
>     char nombre[100];
>     int puntos;
> };
>
> int main()
> {
>     struct Tjugadores lista[6];
>     char mayorj[100];
>     char menorj[100];
>     int mayorp;
>     int menorp;
>     int n;
>
> for (n=0; n<=5; n++)
>     {
>         cout << "Ponga el nombre del jugador : ";
>         cin >> lista[n].nombre;
>         cout << "Nota de " << lista[n].nombre << " : ";
>         cin >> lista[n].puntos;
>     }
>
> mayorp = lista[0].puntos;
> menorp = lista[0].puntos;
> strcpy (mayorj, lista[0].nombre);
> strcpy (menorj, lista[0].nombre);
>
>
> for(n=0; n<=5; n++)
>     if (lista[n].puntos > mayorp)
>     {
>         mayorp = lista[n].puntos;
>         strcpy(mayorj, lista[n].nombre);
>     }
>     if (lista[n].puntos < menorp)
>     {
>         menorp = lista[n].puntos;
>         strcpy(menorj, lista[n].nombre);
>     }
> cout << "El jugador con mas puntos es : " << mayorj << endl;
> cout << "El jugador con menor puntos es : " << menorj << endl;
> }
>
> Un saludo y gracias
>
>
> *Oscar *
>
> Administrador de sistemas.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120715/44baa9d5/attachment.html>


Más información sobre la lista de distribución Cconclase