Pages

quinta-feira, 14 de janeiro de 2021

Algoritmo em C que demonstra o funcionamento de uma pilha utilizando Struct.

Atenção: Precisando de assessoria nos seus PROJETO entre em contato com a SGP

E-mail: ajudastrabalhosprogramacao@gmail.com

Whats: (15) 99704-0447


Algoritmo consiste em uma Pilha de estrutura com os seguintes campos, nome e idade, armazenados na struct. O algoritmo tem a função de cadastrar, remover, imprimir, salvar, carregar e excluir arquivo. A estrutura será salvo em forma de arquivo Binário.



#include<stdio.h>
#define T 10
typedef struct{
char nome[31];
        int idade;
}PESSOA;
typedef struct{
        PESSOA item[T];
        int topo;
}PILHA;
PILHA iniciaPilha();
int main(){
    FILE *arq;
    PILHA p = iniciaPilha();
    int opc, aux;
    do{
        printf("1 - cadastrar\n"
               "2 - remover\n"
               "3 - imprimir\n"
               "4 - salvar\n"
               "5 - carregar\n"
               "6 - excluir arquivo\n"
               "0 - sair\n");
        scanf("%d",&opc);
        switch(opc){
          case 1:
               getchar();
               if(p.topo < T){

                 printf("nome: ");
                 gets(p.item[p.topo].nome);
                 printf("idade: ");
                 scanf("%d",&p.item[p.topo].idade);
                 p.topo++;
                 system("cls");
                 getchar();
                 }else{
                       printf("PILHA cheiA\n");
                       getche();
                       system("cls");
                       }
          break;
          case 2:
               if(p.topo > 0){
                 p.topo--;
                 printf("nome: %s\nidade: %d\nremovido\n",p.item[p.topo].nome,p.item[p.topo].idade);
               }else
                 printf("PILHA VAZIA\n");
                 getche();
                 system("cls");
          break;
          case 3:
               if(p.topo > 0){
                for(aux = p.topo -1; aux >=0; aux--)
                  printf("nome: %s\nidade: %d\n",p.item[aux].nome,p.item[aux].idade);
                }else
                  printf("PILHA VAZIA\n");
                  getche();
                  system("cls");
          break;
          case 4:
               if(p.topo >= 0){arq = fopen("arquivos_estrutura.bin","wb");
               if(arq != NULL){
                 for(aux =0; aux<p.topo; aux++)
                   if(*p.item[aux].nome)//verifica se comprimento do nome  e 0
                     fwrite(&p.item[aux],sizeof(PESSOA),1,arq);
                 fclose(arq);
                 printf("arquivo gravado com sucesso\n");
                 }else
                  printf("problema ao abrir o arquivo!\n");
                 }else
                  printf("PILHA VAZIA\n");
                  getche();
                  system("cls");
          break;
          case 5:
               if(p.topo < T){
                arq = fopen("arquivos_estrutura.bin","rb");
               if(arq != NULL){
                 for(p.topo =0; p.topo <T; p.topo++)
                   if(fread(&p.item[p.topo],sizeof(PESSOA),1,arq)!=1){
                     if(feof(arq))
                      break;
                   }
                   fclose(arq);
                     printf("arquivo carregado com sucesso!\n");
                   }else
                     printf("problema ao abrir o arquivo!\n");
                   }else
                     printf("PILHA cheia!\n");
                     getche();
                     system("cls");
          break;case 6:
               if(remove("arquivos_estrutura.bin")==0)
                printf("arquivo removido com sucesso!\n");
               else
                 printf("erro ao remover arquivo!\n");
               getche();
               system("cls");
          break;
          case 0: break;
          default: printf("erro\n");
          getche();
          system("cls");
     }
    }while( opc !=0);
}
PILHA iniciaPilha(){
      int aux;
      PILHA pi;
      pi.topo = 0;
      for(aux = 0; aux<T; aux++)
       *pi.item[aux].nome = '\0';
       return pi;


Atenção: Precisando de ajuda entre em contato com a SGP e solicite uma assessoria com melhor equipe do mercado no desenvolvimento de trabalhos acadêmicos

E-mail: ajudastrabalhosprogramacao@gmail.com

Facebook: fb.me/ajudaemTrabalhosdeprogramacao

0 comentários:

Postar um comentário

 
Copyright © 2023 2m Assessoria Academica todos os direitos reservados.
Contato para trabalhos: assessoria.academica2m@gmail.com - WhatsApp: (15) 98115 - 0680