Ir ao conteúdo

Posts recomendados

Postado

ATENÇÃO: Estou com um sério problema, estou fazendo um CADASTRO com um menu de opções e não sei como fazer a opção REMOVER e ALTERAR !

Estou usando ARQUIVO e STRUCTS.         *** ALGUÉM PODE ME AJUDAR ? ***

 

SEGUE ABAIXO O CÓDIGO:

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/*        ***Programa saude***
Este programa deve conter funções para:

# Cadastrar pacientes
# Listar pacientes
# Encontrar um paciente e seus dados
# Remover um paciente
# Alterar dados de um paciente
# Calcular mmc de um paciente;
OBS: O programa deve gravar tudo em um arquivo.

*/
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<math.h>
#include<windows.h>
#include<string.h>
#define tam 20
struct data{
    int dia;
    int mes;
    int ano;
};
typedef struct data data;
struct saude{
    char nome[31];
    data nasc;
    int idade;
    double peso;
    double altura;
    int ativo;
};
typedef struct saude saude;
//prototipo das funções
void cadastrar();
void listar();
void encontrar();
void remover();
void alterar();
void imc();
void menu();

int main() {
    setlocale(LC_ALL,"Portuguese");
    int esc;
    
    do{
        menu();
        scanf("%d",&esc);
        system("cls");
        
        switch(esc)
        {
            case 1:
            cadastrar();
            break;
            
            case 2:
            listar();
            break;
            
            case 3:
            encontrar();
            break;
                
            case 4:
            //remover();
            break;
            
            case 5:
            alterar();
            break;
            
            case 6:
            imc();
            break;
            
            case 0:
            break;
            
            default:
            esc=0;
            break;
        }
        
    }while(esc!=0);
    
    return 0;
}

void cadastrar(){
    saude a[tam];
    FILE *arq;
    
    arq = fopen("grava.txt","ab");
    if(arq==NULL){
    printf("\nERRO PARA ESCREVER NO ARQUIVO!\n");
    exit(0);
    }
    
    int i,qnt;
    printf("\n\tDigite a quantidade de cadastro: ");
    scanf("%d",&qnt);
    system("cls");
    
    //recebendo dados para as variaveis que serão gravadas logo em seguida
    for(i=0;i<qnt;i++)
    {
        printf("\n\t\t\t\t\t\t*** CADASTRO %d ***\n",i+1);
        printf("\nNOME: ");
        fflush(stdin);
        scanf("%[^\n]s",&a.nome);
        printf("DATA DE NASCIMENTO - FORMATO 11/22/33: ");
        scanf("%d/%d/%d",&a.nasc.dia,&a.nasc.mes,&a.nasc.ano);
        printf("IDADE: ");
        scanf("%d",&a.idade);
        printf("PESO: ");
        scanf("%lf",&a.peso);
        printf("ALTURA: ");
        scanf("%lf",&a.altura);
        a.ativo=1;
        system("cls");    
    }
    
    //escrevendo no arquivo
    if(fwrite(&a,sizeof(saude),qnt,arq)==qnt){
        printf("\n\t*** GRAVADO COM SUCESSO ***\n");
    }
    puts("\n\n");
    system("Pause");
    system("cls");

    //fechando arquivo    
    fclose(arq);
}
void listar(){
    saude a; //como não ira vetor, apenas while, pode colocar a variavel normal. ex "a"

    //abrindo arquivo para leitura
    FILE *arqler;
    arqler = fopen("grava.txt","rb");
    if(arqler==NULL){
        printf("\nERRO DE LEITURA!\n");
        exit(1);
    }

    //abrindo arquivo para leitura
    while(fread(&a,sizeof(saude),1,arqler)==1){ //essa parte quer dizer que enquanto ele estiver retornando 1 significa que tem coisas pra ler
    printf("\nNOME: %s\n",a.nome);
    printf("DATA DE NASCIMENTO: %d/%d/%d\n",a.nasc.dia,a.nasc.mes,a.nasc.ano);
    printf("IDADE: %d\n",a.idade);
    printf("PESO: %.2lf\n",a.peso);
    printf("ALTURA: %.2lf\n",a.altura);
    printf("\n");
    }
    
    printf("\n\n\n");
    system("Pause");
    system("cls");
    
    //fechando arquivo de leitura
    fclose(arqler);
}
void encontrar(){
    saude a;
    
    //abrindo arquivo
    FILE *pega;
    pega = fopen("grava.txt","rb");
    if(pega==NULL){
        printf("\nERRO PARA ENCONTRAR CADASTROS\n");
        exit(2);
    }
    
    char acha[31];
    
    printf("\nNOME DO PACIENTE: ");
    fflush(stdin);
    scanf("%[^\n]s",&acha);
    
    system("cls");
    
    //percorrendo struct a procura do nome digitado anteriormente, e caso encontre, imprimir os dados desse paciente
    while(fread(&a,sizeof(saude),1,pega)==1){
        if(strcmp(acha,a.nome)==0){
        printf("\nNOME: %s\n",a.nome);
        printf("DATA DE NASCIMENTO: %d/%d/%d\n",a.nasc.dia,a.nasc.mes,a.nasc.ano);
        printf("IDADE: %d\n",a.idade);
        printf("PESO: %.2lf\n",a.peso);
        printf("ALTURA: %.2lf\n",a.altura);
        }
    }
    
    printf("\n\n");
    system("Pause");
    system("cls");

    //fechando arquivo
    fclose(pega);    
}/*
void remover(){
    saude a[tam];
    int cad,i;
    printf("Qual cadastro deseja excluir: ");
    scanf("%d",&cad);
    system("cls");

    a[cad].ativo=0;
    
}*/
void alterar(){
    saude a;
    
    //abrindo arquivo para leitura e escrita
    FILE *arq;
    arq = fopen("grava.txt","r+b");
    if(arq==NULL){
        printf("\nERRO PARA ALTERAR ARQUIVO\n");
        exit(4);
    }
    
    //alterar atraves do nome do paciente
    char pessoa[31];
    printf("Digite o nome do paciente para alteração: ");
    fflush(stdin);
    scanf("%[^\n]s",&pessoa);
    system("cls");
    
    //lendo arquivo e encontrando
    while(fread(&a,sizeof(saude),1,arq)==1){
        if(pessoa,a.nome==0){
        
        printf("\nNOME: ");
        fflush(stdin);
        scanf("%[^\n]s",&a.nome);
        printf("DATA DE NASCIMENTO - FORMATO 11/22/33: ");
        scanf("%d/%d/%d",&a.nasc.dia,&a.nasc.mes,&a.nasc.ano);
        printf("IDADE: ");
        scanf("%d",&a.idade);
        printf("PESO: ");
        scanf("%lf",&a.peso);
        printf("ALTURA: ");
        scanf("%lf",&a.altura);
        a.ativo=1;
        fwrite(&a,sizeof(saude),1,arq);
        }
    }
    
    printf("\n\n\t*** Dados Alterado com Sucesso ***\n\n");
    system("Pause");
    system("cls");
    
    //fechando arquivo
    fclose(arq);
}
void imc(){
    saude a;

    //abrindo arquivo
    FILE *pega;
    pega = fopen("grava.txt","rb");
    if(pega==NULL){
        printf("\nERRO PARA ENCONTRAR IMC\n");
        exit(3);
    }
    
    char acha[31];
    
    printf("\nNOME DO PACIENTE: ");
    fflush(stdin);
    scanf("%[^\n]s",&acha);
    
    system("cls");
    
    double imc;

    //percorrendo struct a procura do nome digitado anteriormente, e caso encontre, imprimir os dados desse paciente
    while(fread(&a,sizeof(saude),1,pega)==1){
    
        if(strcmpi(acha,a.nome)==0){
        imc = a.peso/(pow(a.altura,2));
        printf("\n\t%s seu imc é %.2lf\n",a.nome,imc);
    
        //caso em que se encontra o cadastrado
        if(imc<18.5){
        printf("\n\tPaciente %s esta abaixo do peso!\n",a.nome);
        }
        else if(imc >= 18.5 && imc <= 24.9){
        printf("\n\tPaciente %s esta no peso ideal!\n",a.nome);
        }
        else if(imc >= 25 && imc <= 29.9){
        printf("\n\tPaciente %s esta com sobrepeso!\n",a.nome);
        }
        else if(imc>30){
        printf("\n\tPaciente %s esta com obesidade!\n",a.nome);
        }
        
        } 
    
    }
    
    printf("\n\n");
    system("Pause");
    system("cls");
    
    //fechando arquivo
    fclose(pega);    
}
void menu(){
    printf("\n\t\t\t\t\t\t*** SAÚDE TOTAL ***\n\n");
    printf("\t\t\t\t\t\t1 - CADASTRAR\n");
    printf("\t\t\t\t\t\t2 - LISTAR\n");
    printf("\t\t\t\t\t\t3 - ENCONTRAR\n");
    printf("\t\t\t\t\t\t4 - REMOVER\n");
    printf("\t\t\t\t\t\t5 - ALTERAR\n");
    printf("\t\t\t\t\t\t6 - IMC\n");
    printf("\t\t\t\t\t\t0 - SAIR\n");
    printf("\n\t\t\t\t\t\tEscolha uma opção: ");    
}

  • Curtir 1
Postado

@Mateus Elias      trabalhar com arquivos é muito difícil , seria melhor , no início ,  pegar os dados que estão no arquivo e coloca-los na struct , e depois durante o programa use os dados que estarão na struct para fazer novos cadastros alterar remover ect,  ,  e no final , quando for sair do programa , na opção zero , grave tudo novamente ,  e para deletar fica assim fácil  , pois na função remover você vai pesquisar na struct pelo nome da pessoa , e encontrando , coloque um loop começando daquela posição e indo até a última posição e vai pegando os dados da posição da frente e colocando nessa posição e no final do loop decrementa o contador de cadastro pois removeu hum .

  • Obrigado 1
Postado

@Mateus Elias      seu código está bom e com algumas modificações poderia ser assim  :

/*        ***Programa saude***
Este programa deve conter funções para:
# Cadastrar pacientes
# Listar pacientes
# Encontrar um paciente e seus dados
# Remover um paciente
# Alterar dados de um paciente
# Calcular mmc de um paciente;
OBS: O programa deve gravar tudo em um arquivo.
*/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <windows.h>
#include <string.h>
#define  tam 20
#define  cls system("cls");
#define  pausar for(f=0;f<60000000;f++);
#define  u GetStdHandle(STD_OUTPUT_HANDLE)
/*#define gotoxy_2 {COORD c={x,y};SetConsoleCursorPosition(u,c);} tentat coloc gotoxy aqui*/
/*para mudar a cor de fundo mude o _b      0 preto 1 azul 2 verde 3 az desbotado      */
void textcolor_2(int letra,int fundo){ /*  4 vermelho 5 magenta 6 marrom 7 cinza claro*/
    SetConsoleTextAttribute(u,letra +( /*  8 cinza escuro 9 az claro 10 verde claro   */
    fundo<< 4));                       /*  11 az celeste 12 vermelho claro 13 lilás   */
}                                      /*  14 amarelo 15 branco                       */
/* imprime na linha y de 0 até 24 e coluna x desejada de 0 até 79                     */
void gotoxy_2(int x, int y      ){
    COORD c = { x , y }          ;
    SetConsoleCursorPosition(u,c);
}
struct data{
    int dia;
    int mes;
    int ano;
};
typedef struct data data;
struct     saude   {
    char   nome[31];
    data   nasc    ;
    int    idade   ;
    double peso    ;
    double altura  ;
    int    ativo   ;
};
typedef struct saude saude;
saude a[tam];
//prototipo das funções
void cadastrar( );
void listar(    );
void encontrar( );
void remover(   );
void alterar(   );
void esperar(   );
void init_graph();
void imc(       );
void menu(      );
void movement(  );
int cont,j,flag,w,f;/* contador global */
int mov[5]={0,21,63,3,18};
FILE *arq        ;
int  main(      ){
    setlocale(LC_ALL,"Portuguese");
    init_graph( );/* pega os dados do arquivo e coloca na struct */
    int esc;
    do{
        menu();
        do{
            movement();/* uma animação        */
            Sleep(100);/* dorme hum pouquinho */
        }while( ! kbhit() );
        esc = getch()-48;/* sem enter ou scanf("%d",&esc); com enter      */
        cls   ;/* esc contém o cód ASCII da tecla pressionada menos 48    */
        switch(esc){/* então cód ASCII de zero é 48 menos 48 igual a zero */
        case 1:
            cadastrar();
            break;
        case 2:
            listar();
            break;
        case 3:
            encontrar();
            break;
        case 4:
            remover();/* melhor remover na struct e no final grava tudo */
            break;
        case 5:
            alterar();
            break;
        case 6:
            imc();
            break;
        case 0:
            gotoxy_2(0,9);
            printf("Saindo Do Programa !\n");
            //escrevendo no arquivo
            arq = fopen("grava.txt","wb");/* cria e abre o arquivo vazio para gravação     */
            for(j=0;j<cont;j++){          /* quantidade de posições no vetor de struct     */
                fwrite(&a[j],sizeof(saude),1,arq);/* grava no arquivo cada bloco da struct */
            }
            //fechando arquivo
            fclose(arq);
            esperar();
            textcolor_2(10,12);
            exit(0);
        }
    }while( esc != 0 );
    return 0;
}
void cadastrar(){
    char op;
    printf(" Usando setlocale , entao coloque decimais separados por virgula\r");
    do{
        textcolor_2(14,12                                   );
        printf("\n\t\t*** CADASTRO %d ***\n",cont+1         );
        textcolor_2(10,0                                    );
        printf("\nNOME -------------: "                     );
        fflush(stdin                                        );
        scanf("%[^\n]s",&a[cont].nome                       );
        printf("DATA DE NASCIMENTO \n"                      );
        printf("FORMATO DD/MM/AA -: "                       );
        scanf("%d%d%d",&a[cont].nasc.dia,&a[cont].nasc.mes   ,
              &a[cont].nasc.ano);/* barra no scanf não pode */
        printf("IDADE --------------: "                     );
        fflush(stdin);
        scanf("%d",&a[cont].idade                           );
        printf("PESO ---------------: "                     );
        fflush(stdin);
        scanf("%lf",&a[cont].peso                           );
        printf("ALTURA -------------: "                     );
        fflush(stdin);
        scanf("%lf",&a[cont].altura                          );
        a[cont].ativo=1                                      ;
        cont++                                               ;
        printf("Quer Cadastrar Outro S/N "                  );
        op = (char)getch(                                   );
        printf("\n"                                         );
        cls                                                  ;
    }while( toupper(op) != 'N'                              );
}
void init_graph(){
    arq = fopen("grava.txt","rb");                /* abre arquivo binário para leitura                      */
    if(arq == NULL)       return ;                /* se o arquivo não existir retorna para o menu           */
    while(fread(&a[cont],sizeof(saude),1,arq)==1 )/* essa parte quer dizer que enquanto ele estiver retor-  */
        cont++;                                   /* nando 1 significa que tem coisas pra ler e vai pegando */
                                                  /* e colocando na struct e inc o cont de pos da struct    */
    fclose(arq);                                  /* fechando arquivo de leitura                            */
}
void listar(                                    ){
    if( ! cont                                  ){
        printf("Ainda Nao Tem Nada Cadastrado\n");
        printf("\n       Tecle !"               );
        getch();
        return ;
    }
    w=2                                          ;
    for(j=0;j<cont;j++                          ){/* cont é o total de cadastros */
        textcolor_2(12,15                       );
        printf("  %d%c Cadastro    \n",j+1,167  );
        textcolor_2(10,0                        );
        printf("NOME ---------------: %s      \n",a[j].nome   );
        printf("DATA DE NASCIMENTO -: %d/%d/%d\n"              ,
               a[j].nasc.dia                     ,a[j].nasc.mes,
               a[j].nasc.ano                                  );
        printf("IDADE --------------: %d      \n",a[j].idade  );
        printf("PESO ---------------: %.2lf   \n",a[j].peso   );
        printf("ALTURA -------------: %.2lf \n\n",a[j].altura );
        if( j == w                                            ){/* a cada três cadastros espera */
            printf(" aqui  Tecle !\r"                         );
            w+=3                                               ;
            getch(                                            );
        }
    }
    printf("Terminou De Listar,    Tecle !"                   );
    esperar();
}
void encontrar(                                                   ){
    char acha[31                                                  ];
    printf("NOME DO PACIENTE : "                                  );
    fflush(stdin                                                  );
    scanf("%[^\n]s",acha                                          );
    cls                                                            ;
    flag=0                                                         ;
    //percorrendo struct a procura do nome digitado anteriormente, e caso encontre, imprimir os dados desse paciente
    for(j=0;j<cont;j++                                            ){/* cont é o total de cadastros */
        if(strcmp(acha,a[j].nome)==0                              ){
            printf("NOME ---------------: %s     \n",a[j].nome    );
            printf("DATA DE NASCIMENTO -: %d/%d/%d\n"              ,
                   a[j].nasc.dia,a[j].nasc.mes      ,a[j].nasc.ano);
            printf("IDADE --------------: %d     \n",a[j].idade   );
            printf("PESO ---------------: %.2lf  \n",a[j].peso    );
            printf("ALTURA -------------: %.2lf\n\n",a[j].altura  );
            flag=1;
            break                                                  ;
        }
    }
    if( ! flag )
        printf("Cadastro Nao Encontrado !\n"                      );
    printf("    Tecle !"                                          );
    getch(                                                        );
}
void remover(                                                     ){
    char nom[20                                                   ];
    printf("Qual nome deseja excluir: "                           );
    scanf("%s",nom                                                );
    cls                                                            ;
    flag=0                                                         ;
    for(j=0;j<cont;j++                                            ){/* cont é o total de cadastros */
        if(strcmp(a[j].nome,nom) == 0                             ){
            for(w=j;w<cont;w++                                    ){
                a[w] = a[w+1];/* pega conteúdo da posição da frente e coloca em cima dessa posição */
            }
            printf("Excluiu O Cadastro De %s Com Sucesso . . . !\n",
                   nom                                            );
            flag = 1                                               ;
            cont--;           /* decrementa uma unidade pois terá hum cadastro a menos      */
            break;            /* removeu , sai desse loop for                               */
        }
    }
    if( ! flag )
        printf("Cadastro Nao Encontrado !\n");
    printf("    Tecle !"                    );
    getch();
}
void alterar(                               ){
    //alterar atraves do nome do paciente
    char pessoa[31                          ];
    printf("Nome do paciente para alterar: ");
    fflush(stdin);
    scanf("%[^\n]s",pessoa                  );
    cls                                      ;
    flag=0;
    for(j=0;j<cont;j++                      ){/* cont é o total de cadastros */
        if(strcmp(pessoa,a[j].nome) == 0    ){
            printf("insira novos dados\n"   );
            printf("NOME -------------: "   );
            fflush(stdin                    );
            scanf("%[^\n]s",&a[j].nome      );
            printf("DATA DE NASCIMENTO\n"   );
            printf("FORMATO DD/MM/AA -: "   );
            scanf("%d%d%d",&a[j].nasc.dia    ,
                  &a[j].nasc.mes             ,
                  &a[j].nasc.ano            );
            printf("IDADE ------------: "   );
            scanf("%d",&a[j].idade          );
            printf("PESO -------------: "   );
            scanf("%f",&a[j].peso           );
            printf("ALTURA -----------: "   );
            scanf("%f",&a[j].altura         );
            a[j].ativo=1                     ;
            printf("\n\n\t*** Dados Alterado com Sucesso ***\n\n");
            printf("Alterou O Nome %s Para %s\n",pessoa,a[j].nome);
            flag=1;
            break                                                 ;/* alterou ; sai do loop for */
        }
    }
    if( ! flag                                                    )
        printf("Cadastro Nao Encontrado !\n"                     );
    printf("    Tecle !"                                         );
    getch(                                                       );
}
void imc(                                                        ){
    saude a;
    //abrindo arquivo
    FILE *pega;
    char acha[31];
    double imc;
    pega = fopen("grava.txt","rb");
    if(pega==NULL){
        printf("\nERRO PARA ENCONTRAR IMC\n");
        exit(3);
    }
    printf("\nNOME DO PACIENTE: ");
    fflush(stdin);
    scanf("%[^\n]s",&acha);
    system("cls");
    //percorrendo struct a procura do nome digitado anteriormente, e caso encontre, imprimir os dados desse paciente
    while(fread(&a,sizeof(saude),1,pega)==1){
        if(strcmp(acha,a.nome)==0){
            imc = a.peso/(pow(a.altura,2));
            printf("\n\t%s seu imc é %.2lf\n",a.nome,imc);
            //caso em que se encontra o cadastrado
            if(imc<18.5){
                printf("\n\tPaciente %s esta abaixo do peso!\n",a.nome);
            }
            else
                if(imc >= 18.5 && imc <= 24.9){
                    printf("\n\tPaciente %s esta no peso ideal!\n",a.nome);
                }
                else
                    if(imc >= 25 && imc <= 29.9){
                        printf("\n\tPaciente %s esta com sobrepeso!\n",a.nome);
                    }
                    else
                        if(imc>30){
                            printf("\n\tPaciente %s esta com obesidade!\n",a.nome);
                        }
        }
    }
    fclose(pega);
    printf("\n\n");
    system("Pause");
    system("cls");
    //fechando arquivo
}
void menu(                                    ){
    cls                                        ;
    int lin=2                                  ;
    textcolor_2(11,0                          );
    printf("\n\n\n"                           );
    gotoxy_2(32, 4);printf("*** SAUDE TOTAL ***     ",233    );
    gotoxy_2(32, 6);printf("1 - CADASTRAR           "        );
    gotoxy_2(32, 7);printf("2 - LISTAR              "        );
    gotoxy_2(32, 8);printf("3 - ENCONTRAR           "        );
    gotoxy_2(32, 9);printf("4 - REMOVER             "        );
    gotoxy_2(32,10);printf("5 - ALTERAR             "        );
    gotoxy_2(32,11);printf("6 - IMC                 "        );
    gotoxy_2(32,12);printf("0 - SAIR                "        );
    gotoxy_2(32,14);printf("  Escolha uma op%c%co : ",135,198);
    textcolor_2(14,0                          );
    for(j=20;j<60;j++                         ){
        gotoxy_2(j,lin                        );
        printf("%c",205                       );
        gotoxy_2(j,lin+14                     );
        printf("%c",205                       );
        if(j<35                               ){
            gotoxy_2(20  ,j-18                );
            printf("%c",186                   );
            gotoxy_2(60  ,j-18                );
            printf("%c",186                   );
        }
    }
    gotoxy_2(20,2                             );
    printf("%c",201                           );
    gotoxy_2(60,2                             );
    printf("%c",187                           );
    gotoxy_2(20,16                            );
    printf("%c",200                           );
    gotoxy_2(60,16                            );
    printf("%c",188                           );
    gotoxy_2(54,14                            );
    textcolor_2(10,0                          );
}
void esperar(                                 ){
    textcolor_2(15,0                          );
    printf("\n     Tecle !\n\n       "        );
    while( ! kbhit()                          ){
        printf("|\b"    );pausar               ;
        printf("/\b"    );pausar               ;
        if(kbhit()      ) break                ;
        printf("-\b"    );pausar               ;
        printf("%c\b",92);pausar               ;
    }
    getch();/* coloquei esse getch porque a tela
               estava pisacando no final ai parou */
}
void movement(){
    int po=mov[1],po2=po,ii,w=5;
    char op = '+';
    textcolor_2(12,0);
    if(mov[0] >20)textcolor_2(15,0);
    if(mov[0] >40)textcolor_2(10,0);
    if(mov[0] >70)textcolor_2(11,0);
    if(mov[0]==90)mov[0]=0;
    mov[0]++;
    for(ii=0;ii<9;ii++){/* linha de cima */
        if(po2==21){
            gotoxy(po+4,2);
        }
        else{
            gotoxy(po-1,2);
        }
        printf(" ");
        if(po<63){
            gotoxy(po,2);
            printf("%c",op);
            po+=w;
        }
    }
    po=mov[2];/* linha de baixo */
    for(ii=0;ii<9;ii++){
        if(po2==21){
            gotoxy(po-4,19);
        }
        else{
            gotoxy(po+1,19);
        }
        printf(" ");
        if(po>20){
            gotoxy(po,19);
            printf("%c",op);
            po-=w;
        }
    }
    po=mov[3];/* linha lateral direita */
    for(ii=0;ii<3;ii++){
        if(po2==21){
            gotoxy(64,po+4);
        }
        else{
            gotoxy(64,po-1);
        }
        printf(" ");
        gotoxy(64,po);
        printf("%c",op);
        po+=w;
    }
    po=mov[4];/* linha lateral esquerda */
    for(ii=0;ii<4;ii++){
        if(po2==21){
            gotoxy(18,po-4);
        }
        else{
            gotoxy(18,po+1);
        }
        printf(" ");
        if(po>2){
            gotoxy(18,po);
            printf("%c",op);
            po-=w;
        }
    }
    mov[1]++;
    mov[2]--;
    mov[3]++;
    mov[4]--;
    if( mov[1] > 25){
        mov[1] = 21 ;
        mov[2] = 63 ;
        mov[3] =  3 ;
        mov[4] = 18 ;
    }
}

 

Postado

Você precisa de uma estrutura de dados para representar isso aí na memória do computador. @Mateus Elias , como disse @devair1010

 

Pode ser uma lista, um vetor, qualquer coisa. Se possível algo que possa manter ordenado certo? Assim os relatórios vão refletir alguma ordem, tipo documento, data de criação, nome... E crie um esquema que trate a possível ausência do arquivo de entrada ou de saída ou ambos.  E não grave no mesmo arquivo porque pode perder tudo certo?

 

Você pode ter 0 registros na entrada, o usuário cadastra dois, apaga os dois e encerra, então precisa decidir se vai gerar esses arquivos mesmo vazios.

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!