Good, This is the following, I am developing a program that is for evaluation, which consists of doing a medication management ... the goal is to have the features of adding and removing medicines, as well as your listing ... I have the problem that when choosing the listing the program lists everything ... but then ends. Here is the excerpt of code, thank you.
int main(){
setlocale(LC_ALL,"Portuguese");
char *categorias[20] = {"Anti-Infeciosos", "Sistema Nervoso Central", "Aparelho Cardiovascular", "Sangue", "Aparelho Respiratório",\
"Aparelho Digestivo", "Aparelho Geniturinário", "Doenças Endócrinas", "Aparelho Locomotor", " Medicação Antialérgica",\
"Nutrição", "Corretivos da Volemia", "Afeções Cutâneas", "Afeções Otorrinolaringológicas", "Afeções Oculares",\
"Antineoplásticos", "Intoxicações", "Vacinas", "Meios Digestivos", "Material Diverso"};
char *viasAdministracao[10] = {"Oral", "Injetável", "Dermatológica", "Nasal", "Oftálmica", "Respiratória", "Auricular", " Sublingual",\
"Intramuscular", "Retal"};
int nMedicamentosInserido = 0;
char opcao;
struct medicamentos medicamento[2000];
int armario [20][10], bit[20][10][10];
int nr;
do{
printf("\n\n\t FARMÁCIA\
\n1 Administração\
\n2 Venda de Medicamentos\
\n3 Listagem de Medicamentos\
\n\n4 SAIR");
printf("\n\nInsira uma opção: ");
scanf(" %c",&opcao);
switch (opcao) {
case '1':{
printf("\n\n1 Inserir medicamentos\
\n2 Gerir medicamentos fora de validade\
\n3 Inserir sócio");
printf("\n\tInsira uma opção: ");
scanf(" %c",&opcao);
if(opcao == '1'){
int categ, viaz;
printf("\nInsira a sua categoria: ");
scanf(" %i",&categ);
fflush(stdin);
printf("\nInsira a via de administração: ");
scanf(" %i",&viaz);
fflush(stdin);
nr= (categ * 100) + (viaz * 10);
if(armario[medicamento->categoria][medicamento->viaAdministracao] != 10){
inserirMedicamento(&medicamento[nr + armario[medicamento->categoria][medicamento->viaAdministracao]], armario, bit, nMedicamentosInserido, categ, viaz);
//nMedicamentosInseridos = nMedicamentosInseridos + MEDICAMENTO.quantidade;
printf("\n%s",medicamento[nr].nomeMedicamento);
nMedicamentosInserido++;
}
}
break;
}
case '2':{
vendaMedicamento(&medicamento[nr - armario[medicamento->categoria][medicamento->viaAdministracao]], armario, bit, categorias, viasAdministracao, nMedicamentosInserido);
break;
}
case '3':{
printf("\n\n1 Listagem de todos os medicamentos\
\n2 Listagem por categoria\
\n3 Listagem por via de administração\
\n4 Listagem por data de validade");
printf("\nInsira uma opção: ");
scanf(" %c",&opcao);
if(opcao == '1'){
listagemMedicamentos(medicamento, categorias, viasAdministracao);
}
if(opcao == '2'){
listagemCategoria(medicamento, categorias, viasAdministracao, nMedicamentosInserido);
}
if(opcao == '3'){
listagemVia(medicamento, categorias, viasAdministracao, nMedicamentosInserido);
}
if(opcao == '4'){
listagemData(medicamento, categorias, viasAdministracao, nMedicamentosInserido);
}
break;
}
}
}while (opcao != 0);
return 0;
}
void listagemMedicamentos(struct medicamentos* medicamento,char* categorias[], char* viasAdministracao[]){
for( size_t i = 0; i < 2000; i++){
if(medicamento[i].validade.mes != 0){
printf("\n\n\tNome: %s\n\tCategoria: %s\n\tVia de administração: %s\n\tData de validade: %i/%i/%i\n\tQuantidade: %i\n\tPreço: %1.f",\
medicamento[i].nomeMedicamento, categorias[medicamento[i].categoria], viasAdministracao[medicamento[i].viaAdministracao], medicamento[i].validade.dia,\
medicamento[i].validade.mes, medicamento[i].validade.ano, medicamento[i].quantidade, medicamento[i].preco);
}
}
}