Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con proyecto de C++

Estas en el tema de Problema con proyecto de C++ en el foro de C/C++ en Foros del Web. Saludos, soy nuevo en el foro, gracias a los que se tomen su tiempo tratando de ayudarme. Estoy trabajando con un proyecto para sacar estadísticas ...
  #1 (permalink)  
Antiguo 19/04/2015, 08:57
 
Fecha de Ingreso: abril-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Pregunta Problema con proyecto de C++

Saludos, soy nuevo en el foro, gracias a los que se tomen su tiempo tratando de ayudarme.

Estoy trabajando con un proyecto para sacar estadísticas a jugadores de pelota. La situación es que quisiera integrarle a lo que ya esta hecho, Clases y Listas para ir entendiendo mejor el lenguaje, pero cada vez que trato de integrar una clase o una lista en este código me da errores. Si alguien pudiera orientarme el camino o darme un ejemplo donde o como pudiera integrar Clases y Listas, seria grandioso y por supuesto explicarme porque, aquí esta el código:

Código:
#include <iostream>
#include <iomanip>

using namespace std;

const int MAXLASTNAME = 20;
const int MAXFIRSTNAME = 10;
const int MAXPLAYERS = 20;

struct Baseball {
	char FirstName[MAXFIRSTNAME+1];
	char LastName[MAXLASTNAME+1];
	float AB;
	float singles;
	float doubles;
	float triples;
	float HR;
	float walks;
};

void checkPlayers(int &players);
int getData(Baseball[]);
void showData(Baseball[], int);

int main()
{
	Baseball stats[MAXPLAYERS];

	int players = getData(stats);
	showData(stats, players);

}

int getData(Baseball stats[])
{
	int i, players;

	cout << "How many players would you like to enter data for(1-20): ";
	cin >> players;
	cout << endl;

	checkPlayers(players);

	for(i=0;i<players;i++) {
		cout <<	"Please enter player #" << i+1 << "'s first name: ";
		cin >> stats[i].FirstName;

		cout << "Please enter player #" << i+1 << "'s last name: ";
		cin >> stats[i].LastName;

		cout << "Please enter the number of at bats for player #" << i+1 << ": ";
		cin >> stats[i].AB;

		cout << "Please enter the number of singles for player #" << i+1 << ": ";
		cin >> stats[i].singles;

		cout << "Please enter the number of doubles for player #" << i+1 << ": ";
		cin >> stats[i].doubles;

		cout << "Please enter the number of triples for player #" << i+1 << ": ";
		cin >> stats[i].triples;

		cout << "Please enter the number of home runs for player #" << i+1 << ": ";
		cin >> stats[i].HR;

		cout << "Please enter the number of walks for player #" << i+1 << ": ";
		cin >> stats[i].walks;
	}

	double calcBA, calcSA, calcOBA;
	double sum = 0;

	for(i=0; i<players; i++)
    	sum += (stats[i].singles + stats[i].doubles + stats[i].triples + stats[i].HR);

	cout.precision(3);
	cout.setf(ios::fixed);
	calcBA = sum / (stats[i].AB);
	calcSA = (stats[i].singles + (2*stats[i].doubles) + (3*stats[i].triples) + (4*stats[i].HR)) / (stats[i].AB);
	calcOBA = (sum + stats[i].walks) / (stats[i].AB + stats[i].walks);

    return players;
}

void showData(Baseball stats[], int players)
{
	int i;
	cout << endl << endl;
	cout << "Here is the data that you entered, in a nice chart format!\n\n";


	cout << "First Name" << setw(14) << "Last Name" << setw(6) << "AB" << setw(6) << "1B" << setw(6) << "2B";
	cout << setw(6) << "3B" << setw(6) << "HR" << setw(6) << "BB" << setw(6) << "BA" << setw(6) << "SA";
	cout << setw(6) << "OBA" << "\n";


	cout << "----------" << setw(14) << "---------" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--";
	cout << setw(6) << "--" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--";
	cout << setw(6) << "---" << "\n";


	for(i=0; i<players; i++)
	{
		cout << stats[i].FirstName
		     << setw(14) << stats[i].LastName
		     << setw(6) << stats[i].AB
		     << setw(6) << stats[i].singles
		     << setw(6) << stats[i].doubles
		     << setw(6) << stats[i].triples
		     << setw(6) << stats[i].HR
		     << setw(6) << stats[i].walks
		     << endl;
	}


}





void checkPlayers(int &players)
{
	while((players < 0) || (players > 20)) {
		cout << "Invalid value entered!!!\n";
		cout << "A valid value is between 0 and 20 inclusive!";
		cout << "Please reenter your answer: ";
		cin >> players;
	}
}
  #2 (permalink)  
Antiguo 19/04/2015, 09:24
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Problema con proyecto de C++

Hola, te pregunto: te refieres usar la clase (o contendedor) std::list y crear clases en lugar de tus estructuras?

De ser así por qué usar los contenedores std::list, tambien tienes los std::vector o los std::maps.

Y de qué manera has intentado hacerlo o que errores has encontrado.

Saludos
  #3 (permalink)  
Antiguo 19/04/2015, 11:39
 
Fecha de Ingreso: abril-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema con proyecto de C++

Cita:
Iniciado por dmorill Ver Mensaje
Hola, te pregunto: te refieres usar la clase (o contendedor) std::list y crear clases en lugar de tus estructuras?

De ser así por qué usar los contenedores std::list, tambien tienes los std::vector o los std::maps.

Y de qué manera has intentado hacerlo o que errores has encontrado.

Saludos
Saludos, gracias por responder. Quisiera reemplazar las estructuras por clases y agregar Listas, simples o enlazadas.

Para las clases trate algo asi:

Código:
class Players {
    float AB,singles,doubles,triples,HR,walks;
  public:
 void checkPlayers(int &players);
 int getData(Baseball[]);
 void showData(Baseball[], int)
} players;
  #4 (permalink)  
Antiguo 20/04/2015, 00:02
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problema con proyecto de C++

Cita:
Iniciado por johnsnow669 Ver Mensaje
Saludos, gracias por responder. Quisiera reemplazar las estructuras por clases y agregar Listas, simples o enlazadas.
No me ha terminado de quedar claro... ¿qué dudas concretas tienes a la hora de migrar ese código a otro con orientado a objetos?
  #5 (permalink)  
Antiguo 20/04/2015, 08:28
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Problema con proyecto de C++

Hola

Cita:
Iniciado por johnsnow669 Ver Mensaje
Saludos, gracias por responder. Quisiera reemplazar las estructuras por clases y agregar Listas, simples o enlazadas.
Es decir, deseas una clase player Y crear una lista para poder guardar los players dentro de ella. Has manejado listas antes en c++? lo digo porque las listas no permiten el acceso mediante operadores [] (por ejemplo lista1[i] no es válido) el acceso es mediante iteradores (punteros). Lo bueno es que comparte la mayoría de métodos que los demás contenedores. Cómo lo creas? muy fácil.

Código C++:
Ver original
  1. list<player> L;

Cita:
Iniciado por johnsnow669 Ver Mensaje
Para las clases trate algo asi:

Código:
class Players {
    float AB,singles,doubles,triples,HR,walks;
  public:
 void checkPlayers(int &players);
 int getData(Baseball[]);
 void showData(Baseball[], int)
} players;
Te recomendaría ver un hilo en este foro que dice "para que sirve un constructor" pues en tu clase te falta un constructor entre otras cosas. Te mandaré un pequeño ejemplo:

Código C++:
Ver original
  1. include <iostream>
  2. #include <list>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class player{
  8.     string _nombre;
  9.     int _edad;
  10. public:
  11.     player(string nombre, int edad) : _nombre(nombre), _edad(edad) {};   //constructor
  12.     void mostrarPlayer();
  13. };
  14. void player::mostrarPlayer(){
  15.     cout << _nombre << " " << _edad << endl;
  16. }
  17. int main(){
  18.  
  19.     list<player> L;     //crear lista
  20.     L.push_back(player("daniel", 27));
  21.     L.push_back(player("juan", 2));
  22.     L.push_back(player("pepito", 10));
  23.  
  24.     list<player>::iterator it;  //voy a mostrar los players
  25.     for (it = L.begin(); it != L.end(); it++){
  26.         it->mostrarPlayer(); //esto igual es (*it).mostrarPlayer();
  27.     }
  28.  
  29.     cin.sync();
  30.     cin.get();
  31.     return 0;
  32. }

saludos

Etiquetas: char, int, lista, proyecto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.