1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C duvida existencial

Discussão em 'Programação' iniciada por Zittoxic, 12 de Julho de 2008. (Respostas: 4; Visualizações: 701)

  1. Boas pessoal, tenho uma duvida existencial, não entendo como é que isto ñ funfa este codigo.
    A ideia é vereficar se não existe uma especialidade em duplicado. É um pequeno programa de gerir especialidades medicas. Tenho a impressão q algo me falta no else if.
    Agradeço desde já a ajuda.
    cumps

    Código:
    void add_esp()
     {
             for(;;) 
      {
       printf("\n\t**********************************************\n");
       printf("\n \t- Adicione Nome de Especialidade Medidca!\n\n\t");
       fgets( listaE[num_espec].nome, sizeof(listaE[num_espec].nome), stdin );
       if( listaE[num_espec].nome[0] == '\r'  ||  listaE[num_espec].nome[0] == '\n' )
       {
        puts("Não foi adicionado nenhuma especialidade, e a operacao sera abortada." );
        getchar();
        return;
       } 
       if(num_espec==0)
       {
        printf("\n\n\t - Adicione Descricao!\n\n\t");
        fgets( listaE[num_espec].descricao, sizeof(listaE[num_espec].descricao), stdin );
        printf("\n\tPrima S para sair!\n");
                    printf("\n\t**********************************************\n");
        fflush(stdin); // limpar o buffer do teclado
        num_espec++;
       }
       else if(num_espec>0) 
       {
        for(  i=0; i< num_espec; i++)
         {
          if(strcmp(listaE[i].nome,listaE[num_espec].nome) == 0 )
          printf("\nEssa especialidade ja existe, favor inserir outra!");
          getchar();
                            return;
         }
       }
       else
       {
        printf("\n\n\t - Adicione Descricao!\n\n\t");
        fgets( listaE[num_espec].descricao, sizeof(listaE[num_espec].descricao), stdin );
        printf("\n\tPrima S para sair!\n");
                    printf("\n\t**********************************************\n");
        fflush(stdin); // limpar o buffer do teclado
        num_espec++;
       }
       if (getchar()=='s')break;
      }
     }
     
  2. jahred

    jahred Power Member

    que erro da?
     
  3. o código até verifica a duplicidade existente, mas se coloco algo diferente não passa para a parte d descrição!
     
  4. zgruli

    zgruli Power Member



    Agora n estou com muita cabeça para isto :D mas o problema principal é que n tens o return dentro do if. Não colocaste os {}. Para além disso, acho que n é preciso a parte de código que coloquei a vermelho. Isto porque seria um else ao if(num_espec>0). Não tenho a certeza pq n experimentei mas deve ser mais ou menos isso.
     
  5. Já está resolvido, estava oultimo o adicionar dentro do for.
    a parte laranja estava dentro da vermelha.

    Código:
     
    void add_esp()
     {
             for(;;) 
      {
       printf("\n\t**********************************************\n");
       printf("\n \t- Adicione Nome de Especialidade Medidca!\n\n\t");
       fgets( listaE[num_espec].nome, sizeof(listaE[num_espec].nome), stdin );
       if( listaE[num_espec].nome[0] == '\r'  ||  listaE[num_espec].nome[0] == '\n' )
       {
        puts("Não foi adicionado nenhuma especialidade, e a operacao sera abortada." );
        getchar();
        return;
       } 
       else if(num_espec==0)
       {
        printf("\n\n\t - Adicione Descricao!\n\n\t");
        fgets( listaE[num_espec].descricao, sizeof(listaE[num_espec].descricao), stdin );
        printf("\n\tPrima S para sair!\n");
                    printf("\n\t**********************************************\n");
        fflush(stdin); // limpar o buffer do teclado
        num_espec++;
       }
       else if(num_espec>0) 
       {
        [COLOR=red]for(  i=0; i< num_espec; i++)[/COLOR]
    [COLOR=red]   {[/COLOR]
    [COLOR=red]    if(strcmp(listaE[i].nome,listaE[num_espec].nome) == 0 )[/COLOR]
    [COLOR=red]    {[/COLOR]
    [COLOR=red]       printf("\nEssa especialidade ja existe, favor inserir outra!");[/COLOR]
    [COLOR=red]       getchar();[/COLOR]
    [COLOR=red]       return;[/COLOR]
    [COLOR=red]   }[/COLOR]
    [COLOR=red]}[/COLOR]
     
        [COLOR=darkorange]printf("\n\n\t - Adicione Descricao!\n\n\t");[/COLOR]
    [COLOR=darkorange]   fgets( listaE[num_espec].descricao, sizeof(listaE[num_espec].descricao), stdin );[/COLOR]
    [COLOR=darkorange]   printf("\n\tPrima S para sair!\n");[/COLOR]
    [COLOR=darkorange]               printf("\n\t**********************************************\n");[/COLOR]
    [COLOR=darkorange]   fflush(stdin); // limpar o buffer do teclado[/COLOR]
    [COLOR=darkorange]   num_espec++;[/COLOR]
     
     
    [COLOR=darkorange]  }[/COLOR]
     
       if (getchar()=='s')break;
      }
     }
    
    obrigado pessoal
     
    Última edição pelo moderador: 13 de Julho de 2008

Partilhar esta Página