#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define QUANTIDADE_ARTIGOS 100
int menuPrincipal(void);
void menuInserirArtigo(int frequencia[]);
void menuVisualizarResultados(int frequencia[]);
void menuEliminarDados(int frequencia[]);
void listarTudo(int frequencia[]);
int main(void)
{
int opcao;
int frequencia[QUANTIDADE_ARTIGOS] = {0};
char descricao[100] = "<DESCRICAO DO PROGRAMA>";
do {
system("CLS");
printf(" Programa %s\n\n", descricao);
opcao = menuPrincipal();
switch (opcao) {
case 1: menuInserirArtigo(frequencia);
break;
case 2: menuVisualizarResultados(frequencia);
break;
case 3: menuEliminarDados(frequencia);
break;
}
} while (opcao != 0);
printf(" Seleccionou a opcao de saida.\n ");
system("PAUSE");
return 0;
}
int menuPrincipal(void) {
int aux, opcao;
do {
printf(" 1 - Inserir quantidades\n");
printf(" 2 - Visualizar resultados\n");
printf(" 3 - Eliminar dados\n");
printf(" 0 - Sair\n\n");
printf(" Escolha uma opcao: ");
fflush(stdin);
aux = scanf("%d", &opcao);
} while (aux != 1 || opcao < 0 || opcao > 3);
return opcao;
}
void menuInserirArtigo(int frequencia[]) {
int artigo, quantidade, aux;
system("CLS");
printf(" MENU INSERIR QUANTIDADES\n\n");
do {
printf(" Artigo que pretende editar: ");
fflush(stdin);
aux = scanf("%d", &artigo);
if (aux != 1 || artigo < 1 || artigo > QUANTIDADE_ARTIGOS) printf(" Tem que introduzir um NUMERO compreendido entre "
"[1 - %d]\n", QUANTIDADE_ARTIGOS);
} while (aux != 1 || artigo < 1 || artigo > QUANTIDADE_ARTIGOS);
do {
printf(" Quantidade: ");
fflush(stdin);
aux = scanf("%d", &quantidade);
} while (aux != 1 || quantidade < 0);
printf("\n\n Quantidade adicionada.\n Prima qualquer tecla para voltar ao menu principal.\n");
getch();
frequencia[artigo-1] += quantidade;
}
void menuVisualizarResultados(int frequencia[]) {
int i;
system("CLS");
printf(" MENU VISUALIZAR RESULTADOS\n\n");
listarTudo(frequencia);
printf("\n\n Prima qualquer tecla para voltar ao menu principal.\n");
getch();
}
void menuEliminarDados(int frequencia[]) {
int aux, i, indice;
char eliminaTotal, eliminaParcial;
system("CLS");
printf(" MENU ELIMINAR DADOS\n\n");
listarTudo(frequencia);
printf("\n\n");
do {
printf(" Pretende elimar todas as entradas da lista? [S/N] ");
fflush(stdin);
aux = scanf("%c", &eliminaTotal);
eliminaTotal = tolower(eliminaTotal);
} while (aux != 1 || eliminaTotal != 's' && eliminaTotal != 'n');
if (eliminaTotal == 's') {
for (i = 0; i < QUANTIDADE_ARTIGOS; i++) {
frequencia[i] = 0;
}
printf("\n\n Todos os artigos foram iniciados a zero.\n");
printf(" Prima qualquer tecla para voltar ao menu principal.\n");
getch();
return;
} else {
do {
printf(" Pretende eleminar alguma entrada em particular? [S/N] ");
fflush(stdin);
aux = scanf("%c", &eliminaParcial);
eliminaParcial = tolower(eliminaParcial);
} while (aux != 1 || eliminaParcial != 's' && eliminaParcial != 'n');
if (eliminaParcial == 's') {
do {
printf(" Numero da entrada a eliminar: ");
fflush(stdin);
aux = scanf("%d", &indice);
} while (aux != 1 || indice < 1 || indice > QUANTIDADE_ARTIGOS);
frequencia[indice-1] = 0;
printf("\n\n O artigo %d foi iniciado a zero.\n", indice);
printf(" Prima qualquer tecla para voltar ao menu principal.\n");
getch();
} else {
printf("\n\n Prima qualquer tecla para voltar ao menu principal.\n");
getch();
return;
}
}
}
void listarTudo(int frequencia[]) {
int i;
for (i = 1; i <= QUANTIDADE_ARTIGOS; i++) {
printf(" Quantidade do artigo %d - %d\n", i, frequencia[i-1]);
}
}