elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  DUDA - Comparar estructuras dentro de arrays (Quiniela)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA - Comparar estructuras dentro de arrays (Quiniela)  (Leído 2,434 veces)
Josogalar

Desconectado Desconectado

Mensajes: 2


Ver Perfil
DUDA - Comparar estructuras dentro de arrays (Quiniela)
« en: 4 Enero 2014, 19:16 pm »

Buenas a todos, al igual que otro compañero que ha estado posteando por el foro soy estudiante de matemáticas y necesito que me hechéis una mano para la quiniela que nos ha mandado el profesor de informática, ya que he agotado todos los recursos de los que dispongo y no tengo forma de continuar.

Mi quiniela sigue el siguiente proceso:

1.- TOMA DE DATOS.

2.- REVISAR DATOS O EMPEZAR CON LA QUINIELA.

3.- AL EMPEZAR CON LA QUINIELA, SE COMPARAN TODAS LAS CANTIDADES DE LA ESTRUCTURA ENTRE DOS EQUIPOS CONCRETOS EXCEPTO EL NOMBRE.


- Al empezar el programa supongamos que Equipos[0].nombre es ''Barsa'' y que Equipos[1].nombre es ''Madrid''.

La idea sería la siguiente:

Se crean dos enteros para las puntuaciones punt0 y punt 1 con valor 0 ambas.

PROGRAMA: ¿Que equipo quieres elegir?
USER: Madrid

PROGRAMA: ¿Que otro equipo quieres comparar?
USER: Barsa

Y una vez elegidos excepto el primer dato de ambas estructuras que son los nombres los demás se compararan a mi antojo al estilo de:

Código
  1. if (equipos[0].victorias < equipos[1].victorias)
  2.    punt1=punt1+10;
  3. else
  4.  {
  5.    punt0=punt0+10;
  6.  }
  7.  
  8. if (equipos[0].derrotas < equipos[1].derrotas)
  9.    punt0=punt0+7;
  10. else
  11.  {
  12.    punt1=punt1+7;
  13.  }

....

Así con todas las variables que tendré que añadir de jugar en casa, lesionados, etc tanto a la estructura como a estas comparaciones con diversas puntuaciones.

4.- EL USUARIO DECIDE NO COMPARAR MAS EQUIPOS Y SE CIERRA EL PROGRAMA.

¿Podríais ayudarme por favor? :) Muchas gracias de antemano.

Os dejo todo lo que llevo de código.

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. main (void)
  6.  
  7. {
  8.   struct equipo{
  9.          char nombre[30]; //Nombre del equipo.
  10.          int victorias; //Cuantas victorias tiene.
  11.          int derrotas; //Posicion en la liga.
  12.          int empates; //Empates dentro de la liga.
  13.   };
  14.  
  15.   struct equipo equipos[14]; //N es el numero de equipos y asi decidimos el ancho del vector.
  16.   int i;
  17.  
  18.   for(i=0;i<14;i++){                                  //Rellenamos el vector con las caracteristicas de cada equipo.
  19.      printf("----Equipo Numero: %d----\n",i+1);  
  20.  
  21.      printf("\n Nombre(TODO JUNTO): ");  //NOMBRE  
  22.      scanf("%s",equipos[i].nombre);
  23.  
  24.      printf("\n Victorias totales: "); //VICTORIAS
  25.      scanf("%d",&equipos[i].victorias);
  26.  
  27.      printf("\n Derrotas totales: "); //DERROTAS
  28.      scanf("%d",&equipos[i].derrotas);
  29.  
  30.      printf("\n Empates totales: "); //EMPATES
  31.      scanf("%d",&equipos[i].empates);
  32.      printf("\n");
  33.   }
  34.   int opcion;
  35.   printf("PARA COMPROBAR DATOS PULSE 1");-
  36.   printf("\n");
  37.   printf("SI QUIERE EMPEZAR LA QUINIELA PULSE 2");
  38.   printf("\n");
  39.   printf("\n");
  40.   scanf("%d",&opcion);
  41.   switch(opcion)
  42. {
  43. case 1:
  44.  
  45.                for(i=0; i<14;i++){                                
  46.                printf("\n - %s -\n",equipos[i].nombre);
  47.                printf("\n");
  48.                printf("\n");
  49.                printf("Victorias: %d\n",equipos[i].victorias);
  50.                printf("Derrotas: %d\n",equipos[i].derrotas);
  51.                printf("Empates: %d\n",equipos[i].empates);
  52.                printf("\n");
  53.                }
  54.  
  55.                printf("Empezamos con la quiniela\n");    
  56.  
  57.                //Aqui ya me atasco
  58. break;
  59.  
  60. case 2:
  61.  
  62. printf("Empezamos con la quiniela\n");    
  63.  
  64.                //Aqui ya me atasco              
  65.          break;
  66.  
  67. default:
  68. printf("Ha ingresado un numero no valido\n");
  69. break;
  70. }
  71.  
  72.   system ("pause");
  73.   return 0;
  74. }


En línea

SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: DUDA - Comparar estructuras dentro de arrays (Quiniela)
« Respuesta #1 en: 4 Enero 2014, 21:33 pm »

mm a ver, no entiendo exactamente lo que quieres hacer:

 el programa en si lo que hace es comparar 2 equipos con la misma estructura, correcto?.

si este es el caso, no tiene sentido un array de 14 componentes para almacenar los equipos... con 2 te vale y pones una opcion para sobrescribir los campos de las estructuras en caso de querer comparar otros equipos diferentes.

Si por el contrario lo que quieres es comparar mas de 2 equipos, pongamos N equipos, seria necesario un array de N componentes donde guardar cada equipo de tipo structura y cuyos campos tendrias que ir introduciendolos tu para cada equipo con el fin de poder compararlos entre ellos.

Personalmente me parece mucho mas facil de hacerlo de la primera forma si puedes elegir.



« Última modificación: 5 Enero 2014, 12:45 pm por SoyelRobert » En línea

getting louder!
SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: DUDA - Comparar estructuras dentro de arrays (Quiniela)
« Respuesta #2 en: 4 Enero 2014, 22:06 pm »

mira a ver que tal esto:

Código
  1. #include <stdio.h>
  2. main (void)
  3.  
  4. {
  5.   struct equipo{
  6.          int victorias; //Cuantas victorias tiene.
  7.          int derrotas; //Posicion en la liga.
  8.          int empates; //Empates dentro de la liga.
  9.   }equipo1,equipo2;
  10.  
  11. otravez:
  12.  
  13.      printf("----Equipo Numero 1----\n");
  14.  
  15.      printf("\n Victorias totales: "); //VICTORIAS
  16.      scanf("%d",&equipo1.victorias);
  17.  
  18.      printf("\n Derrotas totales: "); //DERROTAS
  19.      scanf("%d",&equipo1.derrotas);
  20.  
  21.      printf("\n Empates totales: "); //EMPATES
  22.      scanf("%d",&equipo1.empates);
  23.      printf("\n");
  24.  
  25.  
  26.      printf("----Equipo Numero 2----\n");
  27.  
  28.      printf("\n Victorias totales: "); //VICTORIAS
  29.      scanf("%d",&equipo2.victorias);
  30.  
  31.      printf("\n Derrotas totales: "); //DERROTAS
  32.      scanf("%d",&equipo2.derrotas);
  33.  
  34.      printf("\n Empates totales: "); //EMPATES
  35.      scanf("%d",&equipo2.empates);
  36.      printf("\n");
  37.  
  38.  
  39.      /*ahora comparamos los equipos*/
  40.  
  41. int cont1=0, cont2=0;
  42.  
  43. if(equipo1.victorias>equipo2.victorias) cont1 ++;
  44. else cont2 ++;
  45.  
  46. if(equipo1.empates>equipo2.empates) cont1 ++;
  47. else cont2 ++;
  48.  
  49. if(equipo1.derrotas<equipo2.derrotas) cont1 ++;
  50. else cont2 ++;
  51.  
  52. printf("El equipo1 ha acumulado: %d puntos mientras que el equipo2: %d, por tanto: ",cont1,cont2);
  53.  
  54. if(cont1>cont2)puts("el equipo1 es mejor que  el equipo2.");
  55. if(cont1<cont2)puts("el equipo2 es mejor que el equipo1.");
  56. if(cont1==cont2)puts("son igual de buenos ambos equipos.");
  57.  
  58. cont1=0;
  59.  
  60. puts("\n\n Desea comparar otros equipos diferentes (1 = si / 0 = no)? ");
  61. scanf("%d",&cont1);
  62.  
  63. if(cont1==1) goto otravez;
  64.  
  65. return 0;
  66.  
  67. }
  68.  

PD. lo siento por no indentarlo pero no soy capaz de ello  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
« Última modificación: 4 Enero 2014, 22:12 pm por SoyelRobert » En línea

getting louder!
Josogalar

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: DUDA - Comparar estructuras dentro de arrays (Quiniela)
« Respuesta #3 en: 5 Enero 2014, 09:36 am »

Muchísimas gracias, con la corrección conceptual que has hecho de que solo hay que reservar un array de dimensión 2, todas las comparaciones se vuelven muy sencillas.

Creo que ya puedo ponerme a trabajar fusionando mi código y el tuyo.

Un saludo y que empiezes el año con buen pie.  ;-)
En línea

SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: DUDA - Comparar estructuras dentro de arrays (Quiniela)
« Respuesta #4 en: 5 Enero 2014, 12:34 pm »

jaja nada hombre :), pero nisiquiera he usado un array de dim 2, solo con 2 variables equipo1 y equipo2.

Sospecho que lo que a ti te han podido es algo un pelín mas complejo... lo digo porque no he usado en ningún momento los punteros que tu has dicho. si puedes subes el enunciado de la practica y nos aseguramos

feliz año ;D
« Última modificación: 5 Enero 2014, 12:36 pm por SoyelRobert » En línea

getting louder!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con arrays dentro de arrays « 1 2 »
PHP
Servia 11 6,806 Último mensaje 10 Marzo 2011, 09:04 am
por Servia
Duda: ¿Como especificar parámetros dentro de estructuras de una función?
ASM
.:UND3R:. 2 3,533 Último mensaje 13 Mayo 2012, 18:53 pm
por .:UND3R:.
Comparar arrays en C
Programación C/C++
jc1992 2 4,888 Último mensaje 8 Febrero 2013, 17:15 pm
por BatchianoISpyxolo
Estructuras dentro de Estructuras (Visual Basic 2013)
.NET (C#, VB.NET, ASP)
Tazmania40 0 1,670 Último mensaje 3 Marzo 2017, 21:44 pm
por Tazmania40
Uso de Estructuras dentro de Estructuras en C
Programación C/C++
Ghio97 0 1,477 Último mensaje 27 Agosto 2019, 05:44 am
por Ghio97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines