Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ismael Almeida

223 incompatible types in assignment em C

Recommended Posts

Fiz de todas as maneiras e não deu certo, pois sou novo em C queria uma ajuda... :D

 


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#define clrscr() (system("CLS"))

void gotoxy(int x, int y){
    COORD coord;
    coord.X=(short)x;
    coord.Y=(short)y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

/******************************************************************************/
struct REG_CLI{
  int CODIGO;
  char NOME[31];
  char SEXO[1];
  float PESO;
  float ALTURA;
  float IMC;
  char INFIMC[30];
  char INFPAC[300];
  int EXCLUIDO;
};
struct REG_CLI PACIENTE;
FILE *ARQCLI;
int I,NR_CLI,ESCOLHA;
char OPT[2];
char RESP,TECLA;
char SISTEMA[33]="           CMDS               ";
/******************************************************************************/
void line(void);
void center(int LINHA, char *MENSAGEM);
void tela(void);
void mostradados(void);
int PESQUISA(int NUMERO);
int cadastra(void);
int consulta(void);
int editar(void);
int cor(void);
int exclusao(int NUMERO);
/******************************************************************************/
void clearline(void){
    printf("                                                                                 ");
    return;
}
/******************************************************************************/
int main(void)
{
 /*Verifica existencia do arquivo, se não existe, cria*/
 char OPCAO;
 if((ARQCLI=fopen("CADCLI.DAT","rb+"))==NULL){
    ARQCLI=fopen("CADCLI.DAT","wb+");
    fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
 }
 do{
    system("COLOR F3");
    clrscr();
    line();
    center(2,SISTEMA);
    center(3,"Menu de Opcoes");
    gotoxy(26,9);printf("Cadastro do paciente..............[1]");
    gotoxy(26,11);printf("Consultar/Editar paciente.........[2]");
    gotoxy(26,13);printf("Excluir paciente..................[3]");
    gotoxy(26,15);printf("Finalizar e salvar................[4]");
    gotoxy(26,17);printf("Entre com a opcao:");
    scanf("%c",&OPCAO);fflush(stdin);
    switch(OPCAO){
       case '1':cadastra();break;
       case '2':ESCOLHA=0;consultar();break;
       case '3':ESCOLHA=1;consultar();break;
    }
 }while(OPCAO!='4');
 fclose(ARQCLI);
 gotoxy(1,23);
 return(0);
}

/******************************************************************************/
/*Troca uma linha*/
void line(void){
    int POSICAO;
    for(POSICAO=0;POSICAO<80;POSICAO++)
      printf("+");
    return;
}
/*Centraliza uma mensagem no video em uma determinada linha*/
void center(int LINHA, char *MENSAGEM){
    int COLUNA;
    COLUNA = ((80-strlen(MENSAGEM))/2);
    gotoxy(COLUNA,LINHA);
    printf(MENSAGEM);
    return;
}
/*Apresenta a tela de cadastro e consulta*/
/******************************************************************************/
void tela(void){
    gotoxy(18,10);clearline();
    gotoxy(18,11);clearline();
    gotoxy(18,12);clearline();
    gotoxy(18,13);clearline();
    gotoxy(18,14);clearline();
    gotoxy(18,15);clearline();
    gotoxy(18,16);clearline();
    gotoxy(18,17);clearline();
    gotoxy(18,18);clearline();
    gotoxy(1,10);printf("Codigo......:");
    gotoxy(1,11);printf("Nome........:");
    gotoxy(1,12);printf("Sexo........:");
    gotoxy(1,13);printf("Peso........:");
    gotoxy(1,14);printf("Altura......:");
    gotoxy(1,15);printf("IMC.........:");
    gotoxy(1,16);printf("Situacao:...:");
    gotoxy(1,17);printf("Informacao..:");
    return;
}
/* Calcula o Indice de Massa Corporal.*/
/*float calcimc (float peso, float altura)
{
  float imc;
  imc=peso/(altura*altura);
  return(imc);
}*/
/*Mostra os dados quando da consulta ou tentativa de cadastro*/
/******************************************************************************/
void mostradados(void){
    gotoxy(18,10);printf("%d",NR_CLI);
    gotoxy(18,11);printf("%s",PACIENTE.NOME);
    gotoxy(18,12);printf("%s",PACIENTE.SEXO);
    gotoxy(18,13);printf("%0.2f",PACIENTE.PESO);
    gotoxy(18,14);printf("%0.2f",PACIENTE.ALTURA);
    gotoxy(18,15);printf("%0.2f",PACIENTE.IMC);
    gotoxy(18,16);printf("%s",PACIENTE.INFIMC);
    gotoxy(18,17);printf("%s",PACIENTE.INFPAC);
    return;
}
/******************************************************************************/
int pesquisa(int NUMERO){
   int ACHOU = 0;
   rewind(ARQCLI);
   while(!feof(ARQCLI)&&ACHOU!=1){
      fread(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
      if(NUMERO==PACIENTE.CODIGO)
         ACHOU = 1;
   }
   return(ACHOU);
}
/******************************************************************************/
int exclusao(int NUMERO){
   /*Exclusão de PACIENTEs*/
   PACIENTE.EXCLUIDO=1;
   fseek(ARQCLI , -(long)sizeof(struct REG_CLI), 1);
   fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
   printf("Registro excluido! Pressione <Enter> para prosseguir                       ");

   /*Eu poderia setar um flag apontando se ele estivesse sendo excluido ou não
   com a data e hora da exclusão mas eu procurei fazer de um modo simples*/
}
/******************************************************************************/
/*Cadastramento de dados*/
int cadastra(void){
   clrscr();
   line();
   center(2,SISTEMA);
   center(3,"Modulo de Cadastramento\n");
   line();
   gotoxy(28,1);printf("Digite os dados abaixo");
   do{
      gotoxy(1,22);//clearline()
      gotoxy(1,23);//clearline()
      printf("Digite[0] para voltar ao menu                     ");
      tela();
      gotoxy(18,10);fflush(stdin);
      scanf("%d",&NR_CLI);
      gotoxy(1,23);//clearline();
      if(NR_CLI!=0){
         if(pesquisa(NR_CLI)==1)
         {
            /*Apresenta os dados caso exista no arquivo*/
            mostradados();
            gotoxy(1,22);
            if(PACIENTE.EXCLUIDO!=1)printf("Este registro ja existe    ");
            else printf("Este registro foi excluido    ");
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa   ");
            fflush(stdin);
            while((TECLA=getchar())!='\n')
            gotoxy(33,23);
            gotoxy(1,22);clearline();
         }
         else{
            /*Localiza posicao para gravar registro*/
            fseek(ARQCLI,(long)sizeof(struct REG_CLI),2);
            /*Grava registro*/
            gotoxy(18,11);
            fflush(stdin);fgets(PACIENTE.NOME,31,stdin);
            gotoxy(18,12);
            fflush(stdin);fgets(PACIENTE.SEXO,2,stdin);
            gotoxy(18,13);
            fflush(stdin);scanf("%f",&PACIENTE.PESO);
            gotoxy(18,14);
            fflush(stdin);scanf("%f",&PACIENTE.ALTURA);
            //visualizar o que foi digitado.
            //gotoxy(25,13);
            //printf("%.2f",PACIENTE.PESO);
            //gotoxy(25,14);
            //printf("%.2f",PACIENTE.ALTURA);
            PACIENTE.IMC=(float)PACIENTE.PESO/(float)(PACIENTE.ALTURA*PACIENTE.ALTURA);
            gotoxy(18,15);
            //fflush(stdin); 
            printf("%.2f",PACIENTE.IMC);
            if((PACIENTE.IMC)<18.5){PACIENTE.INFIMC="PESO IDEAL";
                                  gotoxy(18,16);
                                  }else if ((PACIENTE.IMC>=18.5)&&(PACIENTE.IMC<24.9)){PACIENTE.INFIMC="PESO NORMAL";
                                  gotoxy(18,16);}else if((PACIENTE.IMC>25.0)&&(PACIENTE.IMC<29.9)){
                                              PACIENTE.INFIMC="SOBREPESO";
                                  gotoxy(18,16);}else if((PACIENTE.IMC>30.0)&&(PACIENTE.IMC<34.9)){PACIENTE.INFIMC="OBESIDADE 1";
                                  gotoxy(18,16);
                                                             }else if((PACIENTE.IMC>35.0)&&(PACIENTE.IMC<39,9)){PACIENTE.INFIMC="OBESIDADE 2";
                                  gotoxy(18,16);}else if((PACIENTE.IMC>40.0)){PACIENTE.INFIMC="OBESIDADE 3";
                                  gotoxy(18,16);}  



            //if (PACIENTE.IMC 
            gotoxy(18,16);
            fflush(stdin);fgets(PACIENTE.INFPAC,300,stdin);
            PACIENTE.CODIGO=NR_CLI;
            PACIENTE.EXCLUIDO = 0;
            fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa   ");
            fflush(stdin);
            while((TECLA = getchar())!='\n')
               gotoxy(33,23);
         }
      }
   }
   while(NR_CLI != 0);
   return(0);
}
/******************************************************************************/
/*Consulta dos dados*/
int consultar(void){
   clrscr();
   line();
   center(2,SISTEMA);
   center(3,"Modulo de consulta\n");
   line();
   gotoxy(28,6);printf("Digite o numero do codigo:");
   do{
      gotoxy(1,22);//clearline();
      gotoxy(1,23);//clearline();
      printf("Digite [0] para voltar ao menu                                   ");
      tela();
      gotoxy(18,10);fflush(stdin);scanf("%d",&NR_CLI);
      gotoxy(1,23);//clearline();
      if(NR_CLI != 0){
         I=pesquisa(NR_CLI);
         if(I==1&&PACIENTE.EXCLUIDO==0){
            /*Apresenta os dados caso exista no arquivo*/
            mostradados();
            alterar:
            gotoxy(1,23);clearline();gotoxy(1,23);
            if(ESCOLHA==0)
            {
             printf("Deseja editar esse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0){
               editar();
             }
             else{
               gotoxy(1,23);clearline();gotoxy(1,23);
               printf("Digite S ou N! Pressione <Enter> para continuar...   ");
               while((TECLA=getchar())!='\n')
                 gotoxy(33,23);
               goto alterar;
             }
            }
            else
            {
             printf("Deseja excluir esse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0)
             {
               gotoxy(1,23);clearline();gotoxy(1,23);
               exclusao(NR_CLI);
             }
             else{
               gotoxy(1,23);clearline();gotoxy(1,23);
               printf("Digite S ou N! Pressione <Enter> para continuar...   ");
               while((TECLA=getchar())!='\n')
                 gotoxy(33,23);
               goto alterar;
             }
            }            
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa                    ");
            fflush(stdin);
            while((TECLA=getchar())!='\n')
               gotoxy(33,23);
         }
         else{
            gotoxy(1,22);
            if(PACIENTE.EXCLUIDO!=1)
               printf("Este registro nao esta cadastrado                   ");
            else{
               printf("Este registro esta excluido                         ");
               mostradados();
            }
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa                   ");
            fflush(stdin);
            while((TECLA=getchar())!='\n')
               gotoxy(33,23);
            gotoxy(1,22);
            printf("                                    ");
         }
      }
   }while(NR_CLI!=0);
   return(0);
}
/*****************************************************************************/
/*Edição de dados*/
int editar(void){
  /*Alterações e miscelenia*/
  char OPCAO;
  int achou=2;
  do{
     gotoxy(1,23);printf("[1]Nome|[2]Endereco|[3]CEP|[4]Telefone|[5]Email|[6]Confirma|[7]Abandona:");
     fflush(stdin);OPCAO=getchar();
     switch(OPCAO){
        case '1':
             gotoxy(18,11);printf("                                           ");gotoxy(18,11);
             fflush(stdin);fgets(PACIENTE.NOME,31,stdin);
             break;
        case '2':
             gotoxy(18,12);printf("                                           ");gotoxy(18,12);
             fflush(stdin);fgets(PACIENTE.SEXO,1,stdin);
             break;
        case '3':
             gotoxy(18,13);printf("                                           ");gotoxy(18,13);
             fflush(stdin);scanf("%f",PACIENTE.ALTURA);
             break;
        case '4':
             gotoxy(18,14);printf("                                           ");gotoxy(18,14);
             fflush(stdin);scanf("%f",&PACIENTE.PESO);
             break;
        case '5':
             gotoxy(18,15);printf("                                           ");gotoxy(18,15);
             fflush(stdin);scanf("%f",&PACIENTE.IMC);
             break;
        case '6':
             gotoxy(18,16);printf("                                           ");gotoxy(18,16);
             fflush(stdin);fgets(PACIENTE.INFPAC,300,stdin);
             break;
        case '7':
             Confirma:
             gotoxy(1,23);clearline();gotoxy(1,23);
             printf("Confirma a edicao desse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0){
                achou=0;
             }
             else{
                gotoxy(1,23);
                printf("Digite S ou N! Pressione <Enter> para continuar...       ");
                while((TECLA=getchar())!='\n')
                  gotoxy(33,23);
                goto Confirma;
             }
             break;
        case '8':
             Cancela:
             gotoxy(1,23);clearline();gotoxy(1,23);
             printf("Abandona a edicao desse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0){
                achou=1;
             }
             else{
                gotoxy(1,23);clearline();gotoxy(1,23);
                printf("Digite S ou N! Pressione <Enter> para continuar...      ");
                while((TECLA=getchar())!='\n')
                  gotoxy(33,23);
                goto Cancela;
             }
             break;
     }
     gotoxy(71,23);printf("         ");
  }while(achou!=0&&achou!=1);
  gotoxy(1,23);
  if(achou==0){
     fseek(ARQCLI , -(long)sizeof(struct REG_CLI), 1);
     fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
     printf("Sucesso na alteracao do registro! Pressione <Enter> para prosseguir   ");
  }
  else
  {
     printf("Registro alterado! Pressione <Enter> para prosseguir   ");
  }
  fflush(stdin);
  while((TECLA = getchar())!='\n')
     gotoxy(33,23);
  gotoxy(1,23);clearline();
  return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu literalmente rolei o código até o fim, e tenho os seguintes conselhos superficiais:

 

- Não passe stdin para fflush;

- Não use caps para nomes de variáveis; em C, a convenção é que NOMES_ASSIM são usados pra macros.

- Use e abuse de espaços em branco.

 

Em qual linha você recebeu esse warning? Não vou tentar compilar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu literalmente rolei o código até o fim, e tenho os seguintes conselhos superficiais:

 

- Não passe stdin para fflush;

- Não use caps para nomes de variáveis; em C, a convenção é que NOMES_ASSIM são usados pra macros.

- Use e abuse de espaços em branco.

 

Em qual linha você recebeu esse warning? Não vou tentar compilar.

 

Isso que ce falou até Entendo, fiz por recomendação do professor que ele pediu assim, mas tava rodando liso ate começar implementar

 

if((PACIENTE.IMC)<18.5){PACIENTE.INFIMC="PESO IDEAL";

gotoxy(18,16);

}else if ((PACIENTE.IMC>=18.5)&&(PACIENTE.IMC<24.9)){PACIENTE.INFIMC="PESO NORMAL";... ate o fim do IF...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Você tenta passar uma string literal para um ponteiro de char que aponta para o primeiro elemento da array de caracteres.

 

Não confunda o operador de inicialização ( = ) com o operador de assignment ( = ).

 

Isso abaixo:

 

char a[10] = "bla";

 

É diferente de isso:

 

char a[10];
a = "bla";

 

Isso confunde muito os iniciantes, pois o operador usado na inicialização da array de caracteres é o mesmo símbolo do de assignment (que esqueci o nome em português), embora tenham empregos diferentes.

 

O operador de inicialização simplifica o trabalho para você, fazendo as duas linhas abaixo serem equivalentes:

 

char a[10] = { 'b', 'l', 'a', '\n' };
char a[10] = "bla";

 

Mas o operador de assignment não pode fazer isso. Ele vai passar o que "bla" representa para o que você falou para passar, sem tentar entender o que você fez.

 

Agora, se quer passar valores literais para a string a depois de inicializá-la, utilize a biblioteca <string.h> e a seguinte função:

 

char a[10];
strcpy(a, "bla");

 

Isso vai funcionar.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato man... Funcionou...

O resultado tá descrito abaixo...

Deixo o codigo com vcs, caso tenha outra pessoa com duvida sobre o problema assim como eu tive.

 

:D

 

Obrigado pessoal.

 


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#define clrscr() (system("CLS"))

void gotoxy(int x, int y){
    COORD coord;
    coord.X=(short)x;
    coord.Y=(short)y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
/******************************************************************************/
struct REG_CLI{
  int CODIGO;
  char NOME[31];
  char SEXO[1];
  float PESO;
  float ALTURA;
  float IMC;
  char INFIMC[300];
  char INFPAC[300];
  int EXCLUIDO;
};
struct REG_CLI PACIENTE;
FILE *ARQCLI;
int I,NR_CLI,ESCOLHA;
char OPT[2];
char RESP,TECLA;
char SISTEMA[50]="CMDS – CONTROLE DE MEDIDAS E DICAS DE SAÚDE ";
/******************************************************************************/
void line(void);
void center(int LINHA, char *MENSAGEM);
void tela(void);
void mostradados(void);
int PESQUISA(int NUMERO);
int cadastra(void);
int consulta(void);
int editar(void);
int cor(void);
int exclusao(int NUMERO);
/******************************************************************************/
void clearline(void){
    printf("                                                                                 ");
    return;
}
/******************************************************************************/
int main(void)
{
 /*Verifica existencia do arquivo, se não existe, cria*/
 char OPCAO;
 if((ARQCLI=fopen("CADCLI.DAT","rb+"))==NULL){
    ARQCLI=fopen("CADCLI.DAT","wb+");
    fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
 }
 do{
    system("COLOR F3");
    clrscr();
    line();
    center(2,SISTEMA);
    center(3,"Menu de Opcoes");
    gotoxy(26,9);printf("Cadastro do paciente..............[1]");
    gotoxy(26,11);printf("Consultar/Editar paciente.........[2]");
    gotoxy(26,13);printf("Excluir paciente..................[3]");
    gotoxy(26,15);printf("Finalizar e salvar................[4]");
    gotoxy(26,17);printf("Entre com a opcao:");
    scanf("%c",&OPCAO);fflush(stdin);
    switch(OPCAO){
       case '1':cadastra();break;
       case '2':ESCOLHA=0;consultar();break;
       case '3':ESCOLHA=1;consultar();break;
    }
 }while(OPCAO!='4');
 fclose(ARQCLI);
 gotoxy(1,23);
 return(0);
}

/******************************************************************************/
/*Troca uma linha*/
void line(void){
    int POSICAO;
    for(POSICAO=0;POSICAO<80;POSICAO++)
      printf("+");
    return;
}
/*Centraliza uma mensagem no video em uma determinada linha*/
void center(int LINHA, char *MENSAGEM){
    int COLUNA;
    COLUNA = ((80-strlen(MENSAGEM))/2);
    gotoxy(COLUNA,LINHA);
    printf(MENSAGEM);
    return;
}
/*Apresenta a tela de cadastro e consulta*/
/******************************************************************************/
void tela(void){
    gotoxy(18,10);clearline();
    gotoxy(18,11);clearline();
    gotoxy(18,12);clearline();
    gotoxy(18,13);clearline();
    gotoxy(18,14);clearline();
    gotoxy(18,15);clearline();
    gotoxy(18,16);clearline();
    gotoxy(18,17);clearline();
    gotoxy(18,18);clearline();
    gotoxy(1,10);printf("Codigo......:");
    gotoxy(1,11);printf("Nome........:");
    gotoxy(1,12);printf("Sexo........:");
    gotoxy(1,13);printf("Peso........:");
    gotoxy(1,14);printf("Altura......:");
    gotoxy(1,15);printf("IMC.........:");
    gotoxy(1,16);printf("Situacao:...:");
    gotoxy(1,17);printf("Informacao..:");
    return;
}
/*Mostra os dados quando da consulta ou tentativa de cadastro*/
/******************************************************************************/
void mostradados(void){
    gotoxy(18,10);printf("%d",NR_CLI);
    gotoxy(18,11);printf("%s",PACIENTE.NOME);
    gotoxy(18,12);printf("%s",PACIENTE.SEXO);
    gotoxy(18,13);printf("%0.2f",PACIENTE.PESO);
    gotoxy(18,14);printf("%0.2f",PACIENTE.ALTURA);
    gotoxy(18,15);printf("%0.2f",PACIENTE.IMC);
    gotoxy(18,16);printf("%s",PACIENTE.INFIMC);
    gotoxy(18,17);printf("%s",PACIENTE.INFPAC);
    return;
}
/******************************************************************************/
int pesquisa(int NUMERO){
   int ACHOU = 0;
   rewind(ARQCLI);
   while(!feof(ARQCLI)&&ACHOU!=1){
      fread(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
      if(NUMERO==PACIENTE.CODIGO)
         ACHOU = 1;
   }
   return(ACHOU);
}
/******************************************************************************/
int exclusao(int NUMERO){
   /*Exclusão de PACIENTEs*/
   PACIENTE.EXCLUIDO=1;
   fseek(ARQCLI , -(long)sizeof(struct REG_CLI), 1);
   fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
   printf("Registro excluido! Pressione <Enter> para prosseguir                       ");

   /*Eu poderia setar um flag apontando se ele estivesse sendo excluido ou não
   com a data e hora da exclusão mas eu procurei fazer de um modo simples*/
}
/******************************************************************************/
/*Cadastramento de dados*/
int cadastra(void){
   clrscr();
   line();
   center(2,SISTEMA);
   center(3,"Modulo de Cadastramento\n");
   line();
   gotoxy(28,1);printf("Digite os dados abaixo");
   do{
      gotoxy(1,22);//clearline()
      gotoxy(1,23);//clearline()
      printf("Digite[0] para voltar ao menu                     ");
      tela();
      gotoxy(18,10);fflush(stdin);
      scanf("%d",&NR_CLI);
      gotoxy(1,23);//clearline();
      if(NR_CLI!=0){
         if(pesquisa(NR_CLI)==1)
         {
            /*Apresenta os dados caso exista no arquivo*/
            mostradados();
            gotoxy(1,22);
            if(PACIENTE.EXCLUIDO!=1)printf("Este registro ja existe    ");
            else printf("Este registro foi excluido    ");
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa   ");
            fflush(stdin);
            while((TECLA=getchar())!='\n')
            gotoxy(33,23);
            gotoxy(1,22);clearline();
         }
         else{
            /*Localiza posicao para gravar registro*/
            fseek(ARQCLI,(long)sizeof(struct REG_CLI),2);
            /*Grava registro*/
            gotoxy(18,11);
            fflush(stdin);fgets(PACIENTE.NOME,31,stdin);
            gotoxy(18,12);
            fflush(stdin);fgets(PACIENTE.SEXO,2,stdin);
            gotoxy(18,13);
            fflush(stdin);scanf("%f",&PACIENTE.PESO);
            gotoxy(18,14);
            fflush(stdin);scanf("%f",&PACIENTE.ALTURA);
            //visualizar o que foi digitado.
            //gotoxy(25,13);
            //printf("%.2f",PACIENTE.PESO);
            //gotoxy(25,14);
            //printf("%.2f",PACIENTE.ALTURA);
            PACIENTE.IMC=(float)PACIENTE.PESO/(float)(PACIENTE.ALTURA*PACIENTE.ALTURA);
            gotoxy(18,15);
            //fflush(stdin); 
            printf("%.2f",PACIENTE.IMC);
            if((PACIENTE.IMC)<18.5){
                  gotoxy(18,16);
                  strcpy(PACIENTE.INFIMC,"PESO ABAIXO DA MEDIA");
                  printf("%s",PACIENTE.INFIMC);
                  gotoxy(18,17);
                  strcpy(PACIENTE.INFPAC,"Precisas de Alimentar regularmente.");
                  printf("%s",PACIENTE.INFPAC);
                  }
                  else if ((PACIENTE.IMC>=18.5)&&(PACIENTE.IMC<24.9)){
                        gotoxy(18,16);
                        strcpy(PACIENTE.INFIMC,"PESO NORMAL");
                        printf("%s",PACIENTE.INFIMC);
                        gotoxy(18,17);                                         
                        strcpy(PACIENTE.INFPAC,"Parabéns! Seus dados indicam que voce está fora dos grupos de risco.");
                        printf("%s",PACIENTE.INFPAC);
                  }
                  else if((PACIENTE.IMC>25.0)&&(PACIENTE.IMC<29.9)){
                        gotoxy(18,16);
                        strcpy(PACIENTE.INFIMC,"SOBREPESO");
                        printf("%s",PACIENTE.INFIMC);
                        gotoxy(18,17);
                        strcpy(PACIENTE.INFPAC,"Seus dados indicam que voce está dentro dos limites aceitaveis. Pratique exercícios leves como CAMINHADA e CICLISMO e alimentação saudavel.");
                        printf("%s",PACIENTE.INFPAC);
                  }
                  else if((PACIENTE.IMC>30.0)&&(PACIENTE.IMC<34.9)){
                        gotoxy(18,16);
                        strcpy(PACIENTE.INFIMC,"OBESIDADE 1");
                        printf("%s",PACIENTE.INFIMC);
                        gotoxy(18,17);
                        strcpy(PACIENTE.INFPAC,"ATENÇÃO! Seus dados apresentam um nivel de risco AUMENTADO. Consulte seu MÉDICO e procure orientações sobre atividades físicas e rotinas alimentares saudaveis com profissionais da área.");
                        printf("%s",PACIENTE.INFPAC);
                  }
                  else if((PACIENTE.IMC>35.0)&&(PACIENTE.IMC<39,9)){
                        gotoxy(18,16);
                        strcpy(PACIENTE.INFIMC,"OBESIDADE 2");
                        printf("%s",PACIENTE.INFIMC);
                        gotoxy(18,17);
                        strcpy(PACIENTE.INFPAC,"CUIDADO! Seus dados indicam que voce possui um risco MUITO ALTO de desenvolve DIABETES e DOENÇAS CARDIOVASCULARES. CUIDE-SE ou é barro na certa!!!!");
                        printf("%s",PACIENTE.INFPAC);
                  }
                  else if((PACIENTE.IMC>40.0)){
                        gotoxy(18,16); 
                        strcpy(PACIENTE.INFIMC,"OBESIDADE 3");
                        printf("%s",PACIENTE.INFIMC);
                        gotoxy(18,17);
                        strcpy(PACIENTE.INFPAC,"MEU DEUS! Voce ainda vive... Precisas urgentemente que um medico o ajude, pois, alem de DIABETES e DOENÇAS CARDIOVASCULARES, voce está com serios riscos de vida!!!");
                        printf("%s",PACIENTE.INFPAC);
                  }
            PACIENTE.CODIGO=NR_CLI;
            PACIENTE.EXCLUIDO = 0;
            fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa   ");
            fflush(stdin);
            while((TECLA = getchar())!='\n')
               gotoxy(33,23);
         }
      }
   }
   while(NR_CLI != 0);
   return(0);
}
/******************************************************************************/
/*Consulta dos dados*/
int consultar(void){
   clrscr();
   line();
   center(2,SISTEMA);
   center(3,"Modulo de consulta\n");
   line();
   gotoxy(28,6);printf("Digite o numero do codigo:");
   do{
      gotoxy(1,22);//clearline();
      gotoxy(1,23);//clearline();
      printf("Digite [0] para voltar ao menu                                   ");
      tela();
      gotoxy(18,10);fflush(stdin);scanf("%d",&NR_CLI);
      gotoxy(1,23);//clearline();
      if(NR_CLI != 0){
         I=pesquisa(NR_CLI);
         if(I==1&&PACIENTE.EXCLUIDO==0){
            /*Apresenta os dados caso exista no arquivo*/
            mostradados();
            alterar:
            gotoxy(1,23);clearline();gotoxy(1,23);
            if(ESCOLHA==0)
            {
             printf("Deseja editar esse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0){
               editar();
             }
             else{
               gotoxy(1,23);clearline();gotoxy(1,23);
               printf("Digite S ou N! Pressione <Enter> para continuar...   ");
               while((TECLA=getchar())!='\n')
                 gotoxy(33,23);
               goto alterar;
             }
            }
            else
            {
             printf("Deseja excluir esse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0)
             {
               gotoxy(1,23);clearline();gotoxy(1,23);
               exclusao(NR_CLI);
             }
             else{
               gotoxy(1,23);clearline();gotoxy(1,23);
               printf("Digite S ou N! Pressione <Enter> para continuar...   ");
               while((TECLA=getchar())!='\n')
                 gotoxy(33,23);
               goto alterar;
             }
            }            
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa                    ");
            fflush(stdin);
            while((TECLA=getchar())!='\n')
               gotoxy(33,23);
         }
         else{
            gotoxy(1,22);
            if(PACIENTE.EXCLUIDO!=1)
               printf("Este registro nao esta cadastrado                   ");
            else{
               printf("Este registro esta excluido                         ");
               mostradados();
            }
            gotoxy(1,23);
            printf("Tecle <Enter> para nova tentativa                   ");
            fflush(stdin);
            while((TECLA=getchar())!='\n')
               gotoxy(33,23);
            gotoxy(1,22);
            printf("                                    ");
         }
      }
   }while(NR_CLI!=0);
   return(0);
}
/*****************************************************************************/
/*Edição de dados*/
int editar(void){
  /*Alterações e miscelenia*/
  char OPCAO;
  int achou=2;
  do{
     gotoxy(1,23);printf("[1]Nome|[2]Sexo|[3]Altura|[4]Peso|[6]Confirma|[7]Abandona:");
     fflush(stdin);OPCAO=getchar();
     switch(OPCAO){
        case '1':
             gotoxy(18,11);printf("                                           ");gotoxy(18,11);
             fflush(stdin);fgets(PACIENTE.NOME,31,stdin);
             break;
        case '2':
             gotoxy(18,12);printf("                                           ");gotoxy(18,12);
             fflush(stdin);fgets(PACIENTE.SEXO,1,stdin);
             break;
        case '3':
             gotoxy(18,13);printf("                                           ");gotoxy(18,13);
             fflush(stdin);scanf("%f",PACIENTE.ALTURA);
             break;
        case '4':
             gotoxy(18,14);printf("                                           ");gotoxy(18,14);
             fflush(stdin);scanf("%f",&PACIENTE.PESO);
             break;
        case '5':
             gotoxy(18,15);printf("                                           ");gotoxy(18,15);
             fflush(stdin);scanf("%f",&PACIENTE.IMC);
             break;
        case '6':
             gotoxy(18,16);printf("                                           ");gotoxy(18,16);
             fflush(stdin);fgets(PACIENTE.INFPAC,300,stdin);
             break;
        case '7':
             Confirma:
             gotoxy(1,23);clearline();gotoxy(1,23);
             printf("Confirma a edicao desse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0){
                achou=0;
             }
             else{
                gotoxy(1,23);
                printf("Digite S ou N! Pressione <Enter> para continuar...       ");
                while((TECLA=getchar())!='\n')
                  gotoxy(33,23);
                goto Confirma;
             }
             break;
        case '8':
             Cancela:
             gotoxy(1,23);clearline();gotoxy(1,23);
             printf("Abandona a edicao desse registro(S/N)?");fflush(stdin);fgets(OPT,2,stdin);
             if(strcmp(OPT,"n")==0||strcmp(OPT,"N")==0){}
             else if(strcmp(OPT,"s")==0||strcmp(OPT,"S")==0){
                achou=1;
             }
             else{
                gotoxy(1,23);clearline();gotoxy(1,23);
                printf("Digite S ou N! Pressione <Enter> para continuar...      ");
                while((TECLA=getchar())!='\n')
                  gotoxy(33,23);
                goto Cancela;
             }
             break;
     }
     gotoxy(71,23);printf("         ");
  }while(achou!=0&&achou!=1);
  gotoxy(1,23);
  if(achou==0){
     fseek(ARQCLI , -(long)sizeof(struct REG_CLI), 1);
     fwrite(&PACIENTE,sizeof(struct REG_CLI),1,ARQCLI);
     printf("Sucesso na alteracao do registro! Pressione <Enter> para prosseguir   ");
  }
  else
  {
     printf("Registro alterado! Pressione <Enter> para prosseguir   ");
  }
  fflush(stdin);
  while((TECLA = getchar())!='\n')
     gotoxy(33,23);
  gotoxy(1,23);clearline();
  return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.