Skip to content

Instantly share code, notes, and snippets.

@julianoBRL
Last active February 21, 2022 21:23
Show Gist options
  • Save julianoBRL/e6ef96c7dc6d6d8ce95905be04889d04 to your computer and use it in GitHub Desktop.
Save julianoBRL/e6ef96c7dc6d6d8ce95905be04889d04 to your computer and use it in GitHub Desktop.
2022 - 1F - Fevereiro - Programação Estruturada
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct {
int codigo;
char *data;
char descricao[40];
} Registro;
int listSize = 1;
int usedSlots = 0;
int AIID = 0;
Registro** array;
void clear(void);
void initialMenu(void);
void createRegistro(void);
void listarRegistro(void);
void addRegistro(Registro);
int main(void) {
clear();
array = calloc(listSize, sizeof(Registro));
if (array){
initialMenu();
free(array);
}
return 0;
}
void initialMenu(){
int option = 0;
printf("\n#############################\n");
printf("1 - Cadastrar\n");
printf("2 - Listar\n");
printf("3 - Finalizar\n");
printf("#############################\n");
scanf("%d",&option);
clear();
if(option == 1){
createRegistro();
}else if (option == 2){
listarRegistro();
}else if (option == 3){
free(array);
exit(0);
}else {
clear();
printf("Opção invalida\n");
initialMenu();
}
}
void createRegistro(){
time_t t;
time(&t);
char temp;
Registro toSave;
toSave.codigo = AIID++;
toSave.data = ctime(&t);
printf("#############################\n");
printf("Codigo: %d",toSave.codigo);
printf("\nData: %s",toSave.data);
printf("Descrição: ");
getchar();
scanf("%[^\n]",&toSave.descricao);
printf("#############################\n");
addRegistro(toSave);
clear();
printf("Registro adicionado\n");
initialMenu();
}
void listarRegistro(){
int option;
printf("Memory slots: %d\n",listSize);
printf("Used slots: %d\n",usedSlots);
printf("Registros\n------\n");
for(int i = 0;i<usedSlots;i++){
if(array[i]==NULL){
printf("%d-empty!",i);
}else{
printf("%d", array[i]->codigo);
printf(" - %s - ", array[i]->descricao);
printf("%s", array[i]->data);
}
}
printf("\n###############################\n");
printf("1 - Voltar 2 - Apagar Tudo\n");
printf("###############################\n");
scanf("%d",&option);
if(option == 1){
clear();
initialMenu();
}else if (option == 2){
free(array);
listSize = 1;
usedSlots = 0;
AIID = 0;
clear();
initialMenu();
}else{
clear();
printf("Opção invalida!");
listarRegistro();
}
}
void addRegistro(Registro registro){
char** tmp = realloc(array, listSize*(1+listSize)+sizeof(Registro));
if (tmp){
array = tmp;
array[usedSlots] = &registro;
listSize++;
usedSlots++;
}
}
void clear(){
#if defined(__linux__) || defined(__unix__) || defined(__APPLE__)
system("clear");
#endif
#if defined(_WIN32) || defined(_WIN64)
system("cls");
#endif
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment