Last active
February 21, 2022 21:23
-
-
Save julianoBRL/e6ef96c7dc6d6d8ce95905be04889d04 to your computer and use it in GitHub Desktop.
2022 - 1F - Fevereiro - Programação Estruturada
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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] = ®istro; | |
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