[C con Clase] Duda con estructuras

Oscar pelucheloko en hotmail.com
Dom Jul 15 17:27:01 CEST 2012


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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120715/321244d7/attachment.html>


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