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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Consulta de registro de tupla en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta de registro de tupla en C  (Leído 4,401 veces)
raag_maand

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Consulta de registro de tupla en C
« en: 9 Mayo 2016, 09:38 am »

Buenas, no soy muy experto y tengo una consulta que quizás sea muy tonta y estaría muy agradecido si me pudieran resolver porque me estoy volviendo un poco loco.

tengo definidas dos estructuras relacionadas

typedef struct {
   int cocheID;
   int clienteID;
} coche;

typedef struct {
;
   coche coches[MAX_CARS];
   int numcoches;
} tabla_taller;

tengo que crear una función que insertando un tipo de datos taller y el cliente me diga el numero de coches que tiene.

He probado varias formas, pero en el while o en el if cuando igualo

      if(taller_dado.coche.clienteId==cliente

MIl gracias por adelantado!




En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #1 en: 9 Mayo 2016, 10:53 am »

En la sentencia del if haces referencia al tipo de dato coche cuándo deberías hacerla a la variable array coches, y poner el subíndice para acceder al dato que guarda dicho array.


En línea

raag_maand

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #2 en: 9 Mayo 2016, 11:16 am »

Buenas ,
No mandó el post completo, lo que quería decir es que
cuando uso  esa igualdad me falla indicando que no es un array(value is neither array nor pointer nor vector)

void LocalizaCliente(coches  taller1,int identificador){
   int i;
   int contador;
   contador =0;

if(taller_dado.coches.clienteId==cliente){

while(i<=99)  {
      i++;
      if(taller_dado.coches.coches.clientID==identificador
     {
       contador++;
     }
     }
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #3 en: 9 Mayo 2016, 11:53 am »

Encierra tu código entre etiquetas [code=c] y [/code], será más legible.

Ahora, si me das cosa de media horita de repondo bien, que estoy con el móvil y mis capacidades de edición son reducidas, o muy tediosas.
En línea

raag_maand

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #4 en: 9 Mayo 2016, 12:47 pm »

ok.Perfecto!!
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Consulta de registro de tupla en C
« Respuesta #5 en: 9 Mayo 2016, 14:36 pm »

Hola
Código
  1. int LocalizaCliente(coches  taller1,int identificador){
  2.   int i= 0;
  3.   int contador =0;
  4. while(i<MAX_CARS)  {
  5.  
  6.      if(taller_dado.coches[i].clientID==identificador)
  7.     {
  8.       contador++;
  9.     }
  10.     i++;
  11.     }
  12. return contador; //Numero de cochea del cliente
  13. }
  14.  
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #6 en: 9 Mayo 2016, 15:10 pm »

Siendo tus datos definidos
Código
  1. typedef struct {
  2.    int cocheID;
  3.    int clienteID;
  4. } coche;
  5.  
  6. typedef struct {
  7.    coche coches[MAX_CARS];
  8.    int numcoches;
  9. } tabla_taller;
  10.  

La declaración de la función
Código
  1. void LocalizaCliente(coches  taller1, int identificador)
  2.  
es errónea.

coches es una variable del tabla_taller, no un tipo de dato. Si quisieras pasar a la función el dato coches deberías declarar un puntero a coche o un array. Al pasar un array o un puntero deberás pasarle también las dimensiones de éste porqué ese dato no acompaña a un array.
Debería quedarte así:
Código
  1. void LocalizaClientes(coche *lista, size_t size, int identificador)
  2.  

Pero dentro de la función veo que quieres hacer uso del tipo de dato tabla_taller y, por otra parte, supongo que quieres que la función regrese el subíndice del coche que pertenece al cliente así que la declaración de la función debe ser:
Código
  1. int LocalizaClientes(tabla_taller taller, int identificador)
  2.  

Dentro de la función mejor si haces un for (porqué básicamente iteras en una lista) que vaya desde 0 hasta el máximo número de coches. Actualmente lo haces hasta 99 y puede superar las dimensiones del array de coches del taller.

Una solución para hacer toda la función podría ser la siguiente:
Código
  1. int LocalizaCliente(tabla_taller taller, int identificador) {
  2.    int i;
  3.    int localizador = -1; /* Retornará -1 si no existe dicho cliente
  4.                            * en el taller. */
  5.  
  6.    for(i = 0; i < taller.numcoches; ++i)
  7.        if(taller_dado.coches[i].clienteId == identificador) {
  8.            localizador = i;
  9.            break;
  10.        }
  11.    }
  12.  
  13.    return localizador;
  14. }

He pasado la estructura por referencia porqué desconozco si habéis estudiado pasar parámetros por referencia a las funciones.

En línea

raag_maand

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #7 en: 9 Mayo 2016, 17:24 pm »

Buenas, genial!!
Lo había probado también con el bucle for, pero el fallo era que la estaba insertando la i en talleres ...y supongo que evidentemente esto no me da nada.

Ha sido de gran ayuda .
Saludos y muchísimas gracias!
En línea

raag_maand

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #8 en: 10 Mayo 2016, 12:22 pm »

Buenas, perdona que moleste otra vez,, tengo una pregunta relacionada con la consulta de ayer,
En el mismo contexto si quisiera saber si existe algún cliente con que tenga 5 coches en el mismo taller como se haría? Estoy intentando el bucle con dos variables pero me falla.Como recorrería todo el vector?

Mil gracias!!
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Consulta de registro de tupla en C
« Respuesta #9 en: 10 Mayo 2016, 13:45 pm »

Modificando solo un poco la función anterior para que, en vez de pararse en cuando encuentre un cliente, actualice un contador que vaya desde 0 para arriba y la función devuelva el valor de dicho contador. Así deberías llamar a esta función por cada cliente que tuviera el taller. Después ya si encuentras un cliente con 5 coches ya haces el trabajo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta: variables de entorno en el registro de windows.
Análisis y Diseño de Malware
denik 8 12,211 Último mensaje 5 Diciembre 2013, 22:51 pm
por PASQ1985
Código para select de una tupla
Bases de Datos
dimitrix 4 4,483 Último mensaje 12 Octubre 2010, 02:05 am
por dimitrix
Duda Consulta del ultimo registro modificado
Bases de Datos
rolly21102 6 8,915 Último mensaje 4 Agosto 2011, 04:32 am
por WHK
consulta por maxima fecha de un registro mysql
Bases de Datos
kakashi20 4 3,556 Último mensaje 13 Noviembre 2014, 23:38 pm
por kakashi20
(Python) Es posible hacer una tupla con patrones aleatorios?
Programación General
angrymasther 2 2,164 Último mensaje 8 Enero 2016, 02:05 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines