Ir ao conteúdo
  • Cadastre-se
Mateus Elias

C Problema com remoção de cadastro com arquivo e struct

Posts recomendados

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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 ;
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...