[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