Estoy empezando en C++ y ya al segundo lab nos pide un problemazo que me quede flipando.Solo se que tengo que hacerla usando un vector(una matriz unidimensional) pero como????ayuda!!!! Gracias
El programa a diseñar ha de permitir insertar 3 jugadores, que se han de ir almacenando en un
vector en posiciones consecutivas. Los campos a almacenar para cada jugador serán los
siguientes:
– Dorsal (puede tomar los valores desde 1 hasta 25)
– Puesto (base, escolta, alero, ala-pivot y pivot)
– Número de canastas
– Número de asistencias
– Número de rebotes
– Valor del jugador
Todos los datos se pedirán por pantalla excepto el valor del jugador, que se calculará
atendiendo a:
- Cada canasta tendrá un valor de 3 puntos.
- Cada asistencia tendrá un valor de 2 puntos.
- Cada rebote tendrá un valor de 1 punto.
Una vez concluida la inserción de jugadores el programa solicitará por teclado un dorsal. A
continuación el programa ha de localizar, para el jugador de ese dorsal, el porcentaje del “Valor
del jugador ” que tiene respecto al mejor jugador que ocupe su mismo puesto.
Dicho porcentaje se calculará de la siguiente manera por tanto:
porcentaje(dorsal)=100xvalor jugador(dorsal)=maximo i{valor del jugador(i)/......
Por ejemplo, dados los participantes de la siguiente tabla, si se introduce el dorsal número 4 el
resultado ha de ser 75%, ya que en el puesto del jugador de dorsal número 4 (alero), el jugador
con mayor “Valor del jugador” tiene 80 puntos (dorsal 23), y 100 x 60 / 80 es 75.
Que no entiendes?
Está bastante explicadito lo que tienes que ir haciendo, solo es ponerse.
Lo primero, te pide a gritos que utilizes un array de struct:
Es solo un esquema. Lo suyo es que lo entiendas y lo hagas tu por tu cuenta. Además, me apuesto mi mano derecha a que no compila y tiene algún fallo ya que lo he hecho en 5 minutos sin probarlo ni nada. También tendría que tener un bucle que vaya pidiendo dorsales y calcule los porcentajes para que se puedan pedir más de uno.
A programar se aprende programando! no copies el código, guíate de él!
Si no se entiende algo (por ejemplo lo del strcmp) pregunta.
Saludos.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Veo muy poca versatilidad en
Veo muy poca versatilidad en tu codigo. Parece mas un codigo escrito en C, que en C++. A mi juicio, pide a gritos crear una clase Jugador con todos sus atributos, y para manejar cadenas de texto, lo suyo es usar la clase string no?
Aunque bueno cada uno lo hace a su manera...
Un saludo ;)
Por supuesto
Claro, yo tambien hubiese creado una clase jugador, hubiese metido los jugadores dentro de una lista list <Jugador>, etc. etc. Pero se supone que al comenzar a programar no se conocen ni las clases ni los arrays dinámicos, ni las listas... Así que no les voy a poner una cosa que no entiendan.
Saludos
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Gracias
Lo he hecho en mi manera pero claro con tu ayuda.MUchas gracias,y dejo aqui lo que me salio
#include <iostream>
#include <strings.h>
using namespace std;
struct jugador_baloncesto {
int dorsal;
string puesto;
int canastas;
int asistencias;
int rebotes;
int valor;
};
int main()
{
jugador_baloncesto Jugador[4];
for (int i=1; i<4; i++)
{
cout << "Introduce dorsal: ";
cin >> Jugador[i].dorsal;
cout << "El puesto: ";
cin >> Jugador[i].puesto;
cout << "Numero de canastas: ";
cin >> Jugador[i].canastas;
cout << "Introduce asistencias: ";
cin >> Jugador[i].asistencias;
cout << "Nr rebotes: ";
cin >> Jugador[i].rebotes;
Jugador[i].valor=Jugador[i].canastas*3 + Jugador[i].asistencias*2 + Jugador[i].rebotes;
cout << "El valor del jugador " << i << " es: " << Jugador[i].valor << endl;
} int p;
int jugador_buscado;
int jugador_maximo;
int dorsal_buscado;
cout<<" Introduzca el dorsal buscado :";
cin>> dorsal_buscado;
for (int i=1; i<4; i++)
{
if (Jugador[i].dorsal==dorsal_buscado)
{
jugador_buscado = i;
}
}
for (int i=1; i<4; i++)
{
if (Jugador[i].puesto==Jugador[jugador_buscado].puesto && Jugador[i].valor >Jugador[jugador_buscado])
}
cin>> jugador_maximo;
p=100*Jugador[i].valor/jugador_maximo;
cout<<"El porcentaje es : " << p << endl;
return 0;
}
ERROR!!
Hola catalina. Bien por ti por hacerlo a tu manera. Es mucho más fácil en la mayoría de los casos crear el programa desde cero que adaptar uno ya existente (si es lo suficientemente pequeño).
No he ejecutado el código, pero a simple vista he visto un par de errores que son bastante comunes cuando se está aprendiendo a programar (o se ha aprendido a programar en Pascal xD):
- En C y en muchos lenguajes, los arrays se empiezan a indexar por 0, es decir array [0] es la primera posicion, array [1] es la segunda, etc.
- Si haces un for (int i=1;i<4;i++)en realidad solo itera 3 veces: i=1, i=2, i=3!! Te recomiendo que i empiece en 0 en lugar de 1 EN GENERAL. Otra opción es que empiece en 1 y la condición sea i<=4 en lugar de i<4 e indexes el vector como array [i-1] (aunque la segunda te parezca mejor al principio, a la larga seguro que eliges la primera por comodidad). Con el tiempo la frase for (int i=0; i<x; i++) será la sentencia que más usualmente escribas y no tendrás ni que pensarlo xD.
- Aunque no es un error fijar el numero de jugadores a 4, si quieres añadir un jugador más, puede ser un follón. Te recomiendo crearte una constante const int num_max_jugadores=4; y sustituir todos los 4 del código por esta constante!!
- Antes de cout << "introduzca el dorsal..." CREO que te faltaría un while (!salir) donde salir será un int salir=0; y al final del while (que abarca el resto del código sin el return) pondría cout << "Salir?"; cin >> si_no; if (!strcmp (si_no, "no"))salir=1;
Básicamente para que puedas realizar varias consultas sin tener que reintroducir los datos! (imagínate que en lugar de ser 4 jugadores fuesen 1 millón y cada vez que quieres calcular el porcentaje tienes que introducirlos).
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
puesto
hola catalina yo tengo esa misma practica y mi pregunta era comohiciste con lo del puesto ? llegaste a hacerlocomo dato enumerado porque miprofesora todavia no dio esa teoria y a ver si me aclaras esa parte .. gracias
C++
Hola.Todavia no he acabado el programa,no me funciona solo hasta la mitad.Lo del puesto...buena pregunta.No se lo que le voy hacer porque de tipo string no me reconoce la libreria string.h.Tal vez lo dejo tipo char o voy a ponerlo con enum a ver si me sale.A ti te salio ?
String y enum
Hola. Si aún no habeis dado los enum, podeis hacerlo con enteros constantes, es decir, en lugar de poner :
podeis poner:
Si aún no habeis dado las constantes, quitad la palabra const ;).
Catalina, si es el compilador de C++ prueba a incluir string sin .h o cstring:
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
c++ y mas
Ahora ademas de esto,tenemos que agregar al programa...no se como pero lo voy a intentar.Quien quiere ayudarme le agradesco.
Partiendo del código desarrollado en la práctica anterior, se pide:
- Realizar los cambios necesarios para permitir gestionar varios equipos (Se deberá almacenar un
código de equipo).
- Estructurar el código mediante subprogramas, haciendo especial hicapié en el correcto uso de
variables globales, locales y el paso de parámetros.
Como mínimo se deberán implemetar los siguientes subprogramas:
- Insertar club
- Insertar jugador
- Cálculo del porcentaje del “Valor del jugador ”
- Visualizar datos del club
- Visualizar jugador
- Crear un menú con las siguientes opciones:
- Insertar club
- Insertar jugador
- Calucalar valor
- Visualizar club
- Visualizar jugador
- Cálculo del porcentaje del “Valor del jugador ”
Clubes
Bueno, esta vez creo que no voy a escribir nada de código porque creo que no es necesario. Simplemente hay que darse cuenta que un Club está compuesto de un código entero y varios Jugadores (las palabras en negrita tienen una traducción directa a C++...). En el problema se pide gestionar varios clubes. Para las funciones simplemente hay que darse cuenta qué datos necesitan para obtener el resultado y pasárselos como parámetros. Como consejo adicional, no uséis datos globales si no son constantes (por ejemplo, el número máximo de jugadores o de clubes), a no ser que se pida lo contrario, como que el array de clubes sea global. Yo lo crearía en el main y se pasa como param a las funciones.
No digo nada para no meter la pata, ya que se trata de que lo penséis vosotros. Como antes, creo que solo es ponerse. Sin embargo si os atascáis o tenéis alguna duda decidlo y doy más pistas ;).
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
A ver que me sale esta
A ver que me sale esta noche.No he entendido todos tus consejos pero algunos si me dan alguna ideaa....