• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

estruturas, como inserir ??

14 mensagens neste tópico

:-[ mais uma vez, venho aqui recorrer :-[ ;)

desta vez tenho a seguinte duvida, vamos ver se consigo explicar bem. tive toda a manha e ontem a tentar  resolver isto e ate consegui, mas depois vou a listar os pacientes e nao mostra nada.

vejamos:

tenho as seguintes estruturas

typedef struct consul{
              char tipo[50];
              char medico[50];
              char especialidade[50];
              char descricao[50];
              data d;
              }consulta;
              



typedef struct paciente {
               int nutente;
               char nome[50];
               int idade;
               consulta vet[15];
               }cliente;

   

ate aqui tudo bem.

agora sempre que eu inserir um paciente, tenho automaticamente inserir uma consulta, ate aqui porreiro.

agora sempre que eu inserir uma consulta, vou verficar se o paciente existe se existir acrescento uma consulta. ate ao limite maximo de 10 consultas.

como calculo o total das do vector consultas?? ja tentei de todas as formas e nada  :rant_01:

ideias??

obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A maneira mais simples é acrescentares um campo no paciente onde guardas o número de consultas, e vais incrementando à medida que acrescentas consultas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:) obrigada pela dica de colocar o codigo com cores. :thumbsup:

em relacao a colocar uma variavel contador, nao estou a perceber muito bem, talvez porque nunca fiz uma coisa destas. :-[




typedef struct paciente {
               int nutente;
               char nome[50];
               int idade;
               int contador=0
               consulta vet[15];
               }cliente;







como conto?:S obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não podes colocar o =0 na declaração da estrutura. Para contares é só incrementar o campo de cada vez que adicionas uma consulta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:(:thumbsup::(  :(ta dificil



void insere_consulta(cliente *ptr,int total){
       int i;
       ptr[i].conta=0
       for(i=0;i<total;i++){
       ;//contador
       
       for(j=0;j<=ptr[i].conta;j++){
           printf("tipo\n");
           scanf("%s",ptr[i].vet[j].tipo);
           ptr[i].conta++;
           }
           
        }   
};



fiz assim, tou a ir num bom caminho?  :-[ obrigada

[code]

[/code]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash: tinha erros




void insere_consulta(cliente *ptr,int total){
       int i,j;
       
       for(i=0;i<total;i++){
       ptr[i].conta=0;

       for(j=0;j<=ptr[i].conta;j++){
           printf("tipo\n");
           scanf("%s",ptr[i].vet[j].tipo);
           ptr[i].conta++;
           }

        }   
};




nao corre:S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que estás a fazer uma grande confusão. Essa função serve para inserir total consultas num cliente apontado por ptr, certo?

Então o 1º for está a mais. O cliente é sempre o mesmo (o apontado por ptr), e queres escrever é em ptr->vet[j].tipo. Consequentemente tens que alterar a condição do for. Tens que começar em ptr->conta e parar quando j for igual a ptr->conta + total.

Mas não te esqueças que vais alterar o total... por isso não o podes utilizar directamente na condição do for.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:-[podes crer que grande confusao  :wallbash:

obrigada, vou tentar fazer ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

ta complicado.

e assim, sempre que eu insero uma consulta tenho de ir ver qual o cliente que quero inserir uma consulta :(

o 1 for nao tem de estar??

podias me exolicar melhor?? :-[ desculpa e obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:-[ sei que estou quase la, ja insere, mas na 2 vez de inserir pede-me 3 vezes :S

:( :( :(

que faço?:(










void inserir_consulta( cliente *ptr,int total){
              int i,numero,j;
              printf(" Introduza o numero de contribuinte\n");
              scanf("%d",&numero);
              
              for(i=0;i<total;i++){
                 if(ptr[i].nutente==numero){
                    if(ptr[i].conta==3){
                        printf(" espaco indisponivel\n");
                        
                        }else{
                        for(j=0;j<=ptr[i].conta;j++){
                        ptr[i].vet[j+ptr[i].conta]=inicializa_consulta();
                        
                        }
                        ptr[i].conta=ptr[i].conta+1;
                    }
                    
                 }
}

};
      

obrigada, muito obrigada :(:thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

tentei de outra forma, estranho insere, mas acho que o conta nao actualiza  :wallbash:




void inserir_consulta( cliente *ptr,int total){
              int i,numero,j,x,t;
              printf(" Introduza o numero de contribuinte\n");
              scanf("%d",&numero);
              
              for(i=0;i<total;i++){
                 if(ptr[i].nutente==numero){
                        
                        if(total==2){
                            printf("erro\n");
                            }
                        for(j=0;j<=total-1;j++){
                        ptr[i].vet[j+ptr[i].conta]=inicializa_consulta();
                         ptr[i].conta++;
                        }
                       
                    printf("%d",ptr[i].conta);
                   
                 }
}

};



0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:confused:parece que funciona, sera?  :nono1:

fiz assim:





void inserir_consulta( cliente *ptr,int total){
              int i,numero,j,x,t;
              printf(" Introduza o numero de contribuinte\n");
              scanf("%d",&numero);
              
              for(i=0;i<total;i++){
                 if(ptr[i].nutente==numero){
                        
                        if(ptr[i].conta==10){
                            printf("erro\n");
                            }
                        
                        for(j=0;j<=0;j++){
                        ptr[i].vet[j+ptr[i].conta]=inicializa_consulta();
                         ptr[i].conta++;
                        }
                       
                    printf("%d",ptr[i].conta);
                   
                 }
}

};
     



0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O segundo for não está lá a fazer nada

lol, exacto. Tê-lo lá ou substituí-lo por j=0; é exactamente a mesma coisa. Pelo que o próprio j também é desnecessário na linha que está dentro do for.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora