• Domingo 8 de Septiembre de 2024, 01:51

Autor Tema:  Estructuras En C  (Leído 2397 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Estructuras En C
« en: Martes 2 de Noviembre de 2004, 18:34 »
0
Hola tengo un problemilla, estoy haciendo un ejercicio de C, que va sobre estructura de un paciente, y al compilarlo me da error, en lista, dice que no es de tipo estructura. Yo no se donde está el problema, si alquien puede ayudarme, aquie le pongo el código.


/*Desarrolla un programa en C que use una estructra para la siguiente
informacion sobre un paciente de un hospital:nomre, direccion, fecha de
nacimiento, sexo, dia de visita y problema medico. El program deve tener una
funcion para entrada de los datos de un paciente, guardar los diversos pacientes
en un array y mostrar los pacientes cuyo dia de visita sea uno determinado.
*/
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->

#include <stdio.h>
#include <stdlib.h>

#define TAM 200

struct paciente{
     char *nombre;
     char *direccion;
     char fecha [10];
     char sexo; //V o H
     char diavisita [10];
     char *problema;
     };
    
 main(){
     char dia [10];
    struct paciente *lista;
    tomaDatos(lista);
    printf("Intrpoduzca la fecha de la consulta: (dd/mm/aaaa) ");
    gets(dia);
    mostrarConsulta(dia, lista);
    }
    
    
    
tomaDatos(struct paciente *lista)
{
  
  int i;
  char buffer [80];
  
  lista = (struct paciente*) malloc(TAM*sizeof(struct paciente));
  printf(" Entrada de datos de los pacientes\n");
  printf("============================= ==============\n");
  for(i=0; i < TAM; i++)
  {
     printf("Nombre del paciente: \n");
     gets(buffer);
     lista[i]->nombre = malloc(strlen(buffer)+1);
     strcpy(lista[i]->nombre, buffer);
     printf("Direccion del paciente: \n");
     gets(buffer);
     lista[i]->direccion = malloc(strlen(buffer)+1);
     strcpy(lista[i]->direccion, buffer);
     printf("Fecha de nacimiento (dd/mm/aaaa): \n");
     gets(lista[i]->fecha);
     printf("Sexo del paciente:\n");
     lista[i]->sexo = getche();
     printf("Dia de visita (dd/mm/aaaa): \n");
     gets(lista[i]->diavisita);
     printf("Problema medico del paciente: \n");
     gets(buffer);
     lista[i]->problema = malloc(strlen(buffer)+1);
     strcpy(lista[i]->problema, buffer);
     printf("¿Desea continuar (S/N) \n");
     if(getchar() == 'N') return;
     }
   }
  mostrarConsulta(char *dia, struct paciente* lista)
  {
    int i;
    printf("Pacientes con visita el dia %s\n\n", dia);
    printf("====================   =====================\n");
    for(i=0; i<TAM; i++)
       if(!strcmp(dia, lista[i]->diavisita))
           printf("\t%s \n". lista->nombre);
  }

   <!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
     
Gracias espèro una respuesta lo antes posible.
Resulta que me han comentado algo asi, como q no he declarado la estructura como puntero, por eso no puedo usar las flechas, si alguien me puede decir, sobre este codigo, donde tengo el error, es q no lo veo.
Gracias, saludos desde Andalucia
Saludos

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Estructuras En C
« Respuesta #1 en: Miércoles 3 de Noviembre de 2004, 06:17 »
0
Aunque has declarado una estructura.. lo cierto es que la trabajas de manera atipica.. es decir cargas un puntero pero lo manejas como un array, lo cual no tienen nada de malo pero por lo menos yo noestoy acostumbrado a ese tipo de cosas, y por lo que veo tu tampoco.  :o

Si lo vas a manejar como un array entonces los miembros de la estructura no se acceden como si fuese a travez de apuntadores o sea asi:
Código: Text
  1.  
  2. lista[i]-&#62;nombre
  3.  
  4.  

Sino que hay que accederlos copn notacion de variables o sea:
Código: Text
  1.  
  2. lista[i].nombre
  3.  
  4.  

Adicional a todos estos errores al final en el ultimo printf haces esto:
Código: Text
  1.  
  2. printf(&#34;&#092;t%s &#092;n&#34;. lista-&#62;nombre);
  3.  
  4.  

No se que es lo que pretendes hacer pero creo que deberias hacer esto:
Código: Text
  1.  
  2. printf(&#34;&#092;t%s &#092;n&#34;. lista[i].nombre);
  3.  
  4.  

 :smartass:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Estructuras En C
« Respuesta #2 en: Miércoles 3 de Noviembre de 2004, 10:52 »
0
Cita de: "JuanK"
Aunque has declarado una estructura.. lo cierto es que la trabajas de manera atipica.. es decir cargas un puntero pero lo manejas como un array, lo cual no tienen nada de malo pero por lo menos yo noestoy acostumbrado a ese tipo de cosas, y por lo que veo tu tampoco.  :o

Si lo vas a manejar como un array entonces los miembros de la estructura no se acceden como si fuese a travez de apuntadores o sea asi:
Código: Text
  1.  
  2. lista[i]-&#62;nombre
  3.  
  4.  

Sino que hay que accederlos copn notacion de variables o sea:
Código: Text
  1.  
  2. lista[i].nombre
  3.  
  4.  

Adicional a todos estos errores al final en el ultimo printf haces esto:
Código: Text
  1.  
  2. printf(&#34;&#092;t%s &#092;n&#34;. lista-&#62;nombre);
  3.  
  4.  

No se que es lo que pretendes hacer pero creo que deberias hacer esto:
Código: Text
  1.  
  2. printf(&#34;&#092;t%s &#092;n&#34;. lista[i].nombre);
  3.  
  4.  

 :smartass:
Gracias por tu respuesta, pero entonces si mi intención era usarlos como punteros, porque me da error, al compilar. ?. Por favor, si puedes, responderme.
Gracias.
Saludos desde España

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Estructuras En C
« Respuesta #3 en: Domingo 7 de Noviembre de 2004, 15:53 »
0
Hola :hola:

Al compilar el codigo me da 30 y pico errores , la mitad son de lo que te dice juanK que accedes a los elementos de la estructura erroneamente con -> , debes usar "." (punto), otros errores son de que no estan declaradas las funciones, pero eso es a lo mejor porque no las has pegado en el post

Si puedes adjunta el archivo cpp para verlo mejor


ht luego

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Estructuras En C
« Respuesta #4 en: Domingo 7 de Noviembre de 2004, 16:02 »
0
i82maria,
si quieres manejarlo como aaputadores debes crear una lista enlazada.

No se si sepa como hacerlo sino sabes cuantame..
porque la verdad es algo dispendioso y si ya lo sabes no vale la pena colocar el post.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Estructuras En C
« Respuesta #5 en: Domingo 7 de Noviembre de 2004, 18:42 »
0
Cita de: "Diodo"
Hola :hola:

Al compilar el codigo me da 30 y pico errores , la mitad son de lo que te dice juanK que accedes a los elementos de la estructura erroneamente con -> , debes usar "." (punto), otros errores son de que no estan declaradas las funciones, pero eso es a lo mejor porque no las has pegado en el post

Si puedes adjunta el archivo cpp para verlo mejor


ht luego
Entonces según me decis, se debe usar la estructura con punto, porque no se trata de una lista?. Yo es que he usado el operador -> porque como son estructuras de tipo puntero, por eso,si alguien me podeis explicar el porqe de usar operador punto, y operador flecha en este ejemplo, Respecto a las funciones es que es un ejercicio tomado de un libro, asi que no me di cuenta de uqe las funciones no estuvieran declaradas.
Gracias
Contestadme lo antes posible. :hola: