Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jmjusto en 20 Febrero 2018, 03:40 am



Título: Programa de votos en C
Publicado por: jmjusto en 20 Febrero 2018, 03:40 am
Hola, soy nuevo aquí, espero estén todos bien. Soy principiante aún pero tengo muchas ganas de aprender, tengo un problema con una tarea que se nos asignó en clase, es la siguiente :

Una emisora de radio quiere hacer un concurso en el que proponen a sus oyentes los títulos de 10 canciones, a las que ha numerado del 1 al 10. Cada participante debe llamar para dar los números de 3 títulos por orden de preferencia decreciente. De cada oyente se recoge cédula, edad, sexo y sus tres preferencias de canciones, de cada canción hay que recoger código (1-10), género (P-pop, R-rap, K-rock, T-Romántica).
Se le dan 3 puntos a la canción que el oyente nombra en 1er lugar, 2 puntos a la que indica en 2º lugar y 1 punto a la 3ª.

Se pide hacer un programa que realice las siguientes tareas:

1.   Leer y almacenar los votos emitidos por cada oyente.
2.   Calcular los votos obtenidos por cada canción e indicar cuáles son la 1º y 2ª canción más votada.
3.   Al final de la emisión se reparten puntos entre los oyentes que han concursado de la siguiente manera: 30 puntos si entre las 3 canciones votadas está la 1ª, 20 puntos si está la 2ª y 10 puntos suplementarios si han acertado los dos títulos más votados.
4.   Se desea obtener el número del oyente que más puntos ha obtenido, ya que se le dará un premio.

Hasta ahora nos han enseñado funciones,arrays y estructuras, apreciaría mucho si me pueden ayudar con este ejercicio, gracias ! ;D


Título: Re: Programa de votos en C
Publicado por: stderr en 20 Febrero 2018, 07:06 am
Está interesante!! Pero antes de nada queremos ver lo que tienes hecho y que dudas te atañen, un saludo!


Título: Re: Programa de votos en C
Publicado por: jmjusto en 20 Febrero 2018, 15:13 pm
La tarea la asignaron en la noche de ayer...Te sorprenderás pero esto es lo que tengo :

Código
  1. struct Oyente{
  2.    int cedula;
  3.    int edad;
  4.    int sexo;
  5. };
  6. typedef struct Info OYENTE;
  7. int n=0;
  8. INFO aux;
  9. int main()
  10. {
  11. printf("Programa de votos\n");
  12. printf("Diga la cantidad de usuarrios\n");
  13. scanf("%d",&n);
  14.    OYENTE misoyentes[n];
  15.    return 0;
  16. }

Aún estoy verde en varias cosas y no sé como proceder en el problema  :(


· Los codigos deben ir en etiquetas GeSHi
· No se debe hacer doble post, el otro tema fue borrado debido que ya hay uno abierto sobre el tema
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Programa de votos en C
Publicado por: stderr en 20 Febrero 2018, 16:39 pm
Bastante verde sí...

Empieza por definir lo que necesitas, podrías definir una cabecera con los tipos de datos, no ibas mal con el "Oyente", pero seguramente la cedula sea una string (char[]), también te pide sus 3 canciones favoritas, etc...

Código
  1. //Género de las canciones
  2. typedef enum {
  3.    Pop, Rap, Rock, Romantica
  4. } Genero;
  5.  
  6. //Sexo de los oyentes
  7. typedef enum {
  8.    Femenino, Masculino, Otro
  9. } Sexo;
  10.  
  11. //Canción con los datos requeridos
  12. typedef struct {
  13.    unsigned short codigo;
  14.    char* nombre;
  15.    Genero genero;
  16. } Cancion;
  17.  
  18. //Oyente con los datos requeridos
  19. typedef struct {
  20.    char* cedula;
  21.    Sexo sexo;
  22.    unsigned short edad;
  23.    Cancion canciones[3];
  24. } Oyente;
  25.  

Ten en cuenta que para resolver este problema necesitas manejar ficheros y punteros por todos lados, así que ya puedes espabilar!


Título: Re: Programa de votos en C
Publicado por: jmjusto en 20 Febrero 2018, 17:12 pm
Gracias! Aunque ahí radica el problema, sólo nos han enseñado de estructuras,funciones y arrays nada más. Entonces necesito una función para guardar y calcular los votos emitidos verdad ? Y para almacenar los votos un array ?


Título: Re: Programa de votos en C
Publicado por: stderr en 20 Febrero 2018, 19:13 pm
Perdón supuse que tenías que guardar en ficheros, pero si sabes manejar arrays seguramente debas resolver el problema por ese camino.

Ahora que ya tienes las estructuras, puedes empezar a preguntarte qué necesitas para trabajar:

- 1 array donde quepan 10 canciones
- 1 array donde quepan los oyentes (los oyentes, como puedes comprobar en las estructuras, ya almacenan sus 3 votos en su array de canciones)

Una vez tengas toda esa memoria reservada, el siguiente paso es pedir al usuario que ingrese toda esa información (canciones y oyentes) o ponerla directamente en el código para probar más fácil la aplicación.

Siguiente: recorrer el array de oyentes y sus arrays de canciones para determinar cuales son la 1ra y la 2da más votadas.

Siguiente: recorrer el array de oyentes y sus canciones para comprobar si habría que asignarle puntos por tener una de las canciones más votadas entre sus favoritas. Durante este recorrido podrías crear un array donde guardes la cedula del oyente y la suma de sus puntos (lo ideal sería un campo puntuacion en la estructura del oyente, el cual irías acumulando), para más tarde obtener la cédula del que mayor puntuación ha obtenido y mostrarlo en pantalla.


Título: Re: Programa de votos en C
Publicado por: jmjusto en 20 Febrero 2018, 19:43 pm
Comprendo , gracias ! Me pondré a hacer el código y luego te lo muestro