[C con Clase] Duda con estructuras

Oscar pelucheloko en hotmail.com
Dom Jul 15 20:32:13 CEST 2012


Gracias Álvaro por tu ayuda, efectivamente era eso 

Un saludo

From: Álvaro Gómez Uría 
Sent: Sunday, July 15, 2012 7:46 PM
To: Lista de correo sobre C y C++ 
Subject: Re: [C con Clase] Duda con estructuras

Hola Oscar, 
creo que encontré el problema, y es que no encerras todas las sentencias del ultimo FOR con una llave. O sea, tendrias que ponerlo así:

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;
}

Porque si mal no me parece, al no poner las llaves, solo entra al primer if.
Espero que eso te ayude.

Saludos

El 15 de julio de 2012 17: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




--------------------------------------------------------------------------------
_______________________________________________
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/829aa925/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: wlEmoticon-smile[1].png
Type: image/png
Size: 1041 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120715/829aa925/attachment.png>


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