[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