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)
| | |-+  Ayuda con borrado en estructuras anidadas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con borrado en estructuras anidadas  (Leído 3,373 veces)
JHodges

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Ayuda con borrado en estructuras anidadas
« en: 10 Junio 2015, 18:30 pm »

Hola, tengo un problema con structs anidados.
tengo estos dos structs:  

Código
  1. typedef struct jugadors{
  2.                   char nombre_j[20];
  3.                   char apellido_j[20];
  4.                   int dorsal;
  5.            }tjugador;
  6.  
  7.    struct equip{
  8.                 char nombre_e[20];
  9.                 int ano_fundacio;
  10.                 tjugador plantilla[25];
  11.                 int qt_jug;
  12.                 }equipos[20];
y un apartado del programa es borrar el jugador introduciendo el nombre del equipo y su dorsal.
Tengo este codigo:
Código
  1. printf("Introduce Nombre Equipo:\n");
  2. scanf("%s", nombre_aux);
  3. fflush(stdin);
  4.  
  5. i=0;
  6. while((i<equipos[i].qt_jug) && (strcmp(equipos[i].nombre_e,nombre_aux)!=0)){
  7.                                            i++;
  8.                                            }
  9. if(strcmp(equipos[i].nombre_e,nombre_aux)==0){
  10.                                                                  printf("Introduce Dorsal:\n");
  11.                                                                  scanf("%d", &dorsal_aux);
  12.                                                                  fflush(stdin);
  13.                                                                   if(equipos[i].plantilla[equipos[i].qt_jug].dorsal=dorsal_aux){
  14.                                                                                   for(j=i+1;j<equipos[i].qt_jug;j++){
  15.                                                                                                                                                                      equipos[i].plantilla[j-1]=equipos[i].plantilla[j];
  16.                                                                                                                                                              }
  17.                                                                                                                                equipos[i].qt_jug--;
  18.                                                                                                                                printf("Jugador Eliminado\n");
  19.                                                                                                                                }
  20.                                                                   else{
  21.                                                                        printf("Este Dorsal no existe\n");
  22.                                                                        }
  23.                                                                  }
  24. else{
  25.       printf("Este equipo no existe\n");
  26.        }
  27.  
El problema es que aunque tenga 3 jugadores me elimina el primero no el dorsal introducido. Como podria solucionarlo?
Gracias.

Mof: Los códigos deben ir en etiquetas GeSHi


« Última modificación: 10 Junio 2015, 18:31 pm por engel lex » En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #1 en: 10 Junio 2015, 18:38 pm »

has puesto
Código
  1. if(equipos[i].plantilla[equipos[i].qt_jug].dorsal=dorsal_aux)
  2.  
Supongo que querras poner:
Código
  1. if(equipos[i].plantilla[equipos[i].qt_jug].dorsal == dorsal_aux)
  2.  


En línea

JHodges

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #2 en: 10 Junio 2015, 18:41 pm »

Gracias por la respuesta, pero si hago eso me pone que el dorsal no existe y si existe.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #3 en: 10 Junio 2015, 18:44 pm »

básicamente acabas de decir "como el código no funciona, decidí interpretarlo como un error del compilador"

comparación es "==" si o si...

"=" es asignación... es decir
Código
  1. equipos[i].plantilla[equipos[i].qt_jug].dorsal

va a pasar a contener dorsal_aux y if funcionará si dorsal_aux no es false o 0
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #4 en: 10 Junio 2015, 18:49 pm »

Yo uso c++, scanf no se bien como se usa, pero aquí no te falta algo?
Código
  1. scanf("%s", nombre_aux);
  2.  
Código
  1. scanf("%s", &nombre_aux);
  2.  
En línea

JHodges

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #5 en: 10 Junio 2015, 18:50 pm »

no, a mi me han enseñado que al menos en c cuando son cadenas esto: & no se pone.
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #6 en: 10 Junio 2015, 18:56 pm »

Hola JHodges , lo primero que veo es que la limpieza del buffer con fflush debes hacerla antes del scanf. Luego como bien te han indicado, el condicional if se refiere a una preposición lógica de comparación contra el auxiliar; si utilizas "=" estás asignando... por ende, obtendrás siempre la misma respuesta. Saludos
« Última modificación: 10 Junio 2015, 18:58 pm por Gh057 » En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #7 en: 10 Junio 2015, 19:06 pm »

- Estas usando la variable qt_jug para comparar pero no asignas ningún valor.
- ¿En que momento buscas el dorsal?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con borrado en estructuras anidadas
« Respuesta #8 en: 11 Junio 2015, 04:24 am »

y un apartado del programa es borrar el jugador introduciendo el nombre del equipo y su dorsal.
En ese caso debes debes utilizar un bucle donde iteres hasta encontrar un equipo que coincida con el nombre indicado o bien el contador del bucle sea igual al numero de equipos existente. Ese ultimo valor lo debes tener almacenado en alguna variable con un nombre como "num_equipos", "cant_equipos", etc.

No puedes utilizar (esta mal esta parte del fragmento):
Código
  1. i=0;
  2. while((i<equipos[i].qt_jug) && (strcmp(equipos[i].nombre_e,nombre_aux)!=0)){
  3.   i++;
  4. }
Porque "equipos[ i ].qt_jug" es el numero de jugadores en la plantilla del equipo "i".

A continuación tienes la sentencia condicional:
Código
  1. if (strcmp(equipos[i].nombre_e,nombre_aux) == 0) ...
No es necesario otra llamada a strcmp ya que puedes reutilizar el valor de la variable "i": si esta es menor que el numero de equipos indica una coincidencia (equipo encontrado), si es igual al numero de equipos implica que no no hay uno con el nombre indicado.

A continuación debes buscar, de forma similar, al jugador que coincida con el dorsal indicado algo que no haces.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Estructuras anidadas, funciones y punteros
Programación C/C++
NathanD 9 10,345 Último mensaje 18 Marzo 2013, 08:56 am
por 85
[Ayuda] Estructuras anidadas, registro. Lenguaje C « 1 2 »
Programación C/C++
neron991 11 9,580 Último mensaje 9 Julio 2015, 10:07 am
por mester
Estructuras anidadas en lenguaje C. -
Programación C/C++
NOB2014 3 4,056 Último mensaje 5 Febrero 2017, 18:42 pm
por ivancea96
Ayuda con estructuras anidadas
Programación C/C++
mari2diaz 3 1,806 Último mensaje 20 Julio 2018, 01:07 am
por engel lex
Estructuras Anidadas en C
Programación C/C++
Ghio97 5 2,371 Último mensaje 4 Septiembre 2019, 10:22 am
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines