0
I’m doing a program that reads customer data and stores it in covenants, which can be searched through the person’s code or simply their name. It’s not finished yet, but the problem is when the person gives an invalid name or code. I cannot find a way to break the loop loop and inform the user that he has entered an invalid name/code (which does not exist). I need help to fix this... Follow the code below:
#include <stdio.h>
#include <locale.h>
#include <string.h>
#define TAM 200
char nome[TAM] [50]; // matris 200x 50 max-49 caracteres no fim tem que ter /0
char endereco[TAM] [50];
int codigo[TAM];
long int telefone[TAM];
char cidade[TAM] [50];
int op;
void Cadastrar();
void Pesquisar();
void lista();
void Menu();
void Menu(){
system ("cls");
printf(".---------------------------------------.\n");
printf("| Menu principal: |\n");
printf("| [1] - Cadastrar Convênio |\n");
printf("| [2] - Marcar Valor |\n");
printf("| [3] - Pesquisar Convênio |\n");
printf("| [4] - Pagar a Conta |\n");
printf("| [5] - Modificar Convênio |\n");
printf("| [6] - Sair do Programa |\n");
printf("`---------------------------------------´\n");
printf(" Selecione uma opção: ");
}
int main() {
setlocale(LC_ALL, "");
do{
Menu();
scanf("%d", &op);
switch(op){
case 1: Cadastrar(); break;
case 2: printf("\n2\n"); break;
case 3: Pesquisar(); break;
case 4: printf("\n4\n"); break;
case 5: printf("\n5\n"); break;
case 6: printf("\nPrograma encerrado\n"); break;
default: printf("\nOpção Inválida!\n"); printf("\n"); system("pause");
}
} while(op!=6);
return 0;
}
void lista() {
int i;
for(i=0;i<TAM;i++) {
if(codigo[i]>0){
printf("\nNome: %s\nendereco: %s\ncodigo: %d", nome[i], endereco[i], codigo[i]);
}else{
break;
}
}
}
void Cadastrar() {
system("cls");
static int linha; // static porque o valor não muda, ou seja, pode ser usado em outras funções com o mesmo valor
printf("========CADASTRO========\n");
printf("\n-> Informe o nome: ");
scanf("%s", &nome[linha]);
printf("\n-> Informe o seu endereço: ");
scanf("%s", &endereco[linha]);
printf("\n-> Informe o seu telefone: ");
scanf("%ld", &telefone[linha]);
printf("\n-> Informe a sua cidade: ");
scanf("%s", &cidade[linha]);
printf("\n-> Insira um código (com apenas números) para o seu convênio: ");
scanf("%d", &codigo [linha]);
linha++; //proxima execução muda para proxima linha ou (linha=linha+1)
printf("\nConvênio registrado com sucesso.\n");
printf("\n");
system("pause");
} //fimm do cadastro
void Pesquisar(){
system("cls");
int codigoPesquisa;
char nomePesquisa [50];
int i;
do{
printf("========PESQUISAR========\n");
printf("\n[1] - Pesquisar por nome\n");
printf("\n[2] - Pesquisar por código\n");
scanf("%d", &op);
switch(op){
case 1:
system("cls");
printf("========PESQUISAR========\n");
printf("\nDigite o nome a ser pesquisado: ");
scanf("%s", &nomePesquisa);
for(i=0;i<TAM;i++){//i vai de 0 a 199 size vale 200
if(strcmp (nome[i], nomePesquisa)){
printf("\nConvênio encontrado: \n");
printf("\n-> Nome: %s\n-> Endereço: %s", nome[i], endereco[i]);
printf("\n-> Telefone: %ld\n -> Cidade: %s\n -> \nCódigo: %d", telefone[i], cidade[i], codigo[i]);
}
}
if else{
printf("\nNome não encontrado!\n");
printf("Pressione qualquer tecla para continuar...");
getchar();
getchar();
}
break;
case 2:
system("cls");
printf("========PESQUISAR========\n");
printf("\nInforme o código a ser pesquisado: ");
scanf("%d", &codigoPesquisa);
for(i=0;i<TAM;i++){//i vai de 0 a 199 size vale 200
if(codigo[i] == codigoPesquisa){
printf("\nConvênio encontrado: \n");
printf("\n-> Nome: %s\n-> Endereço: %s", nome[i], endereco[i]);
printf("\n-> Telefone: %lld\n -> Cidade: %s\n -> \nCódigo: %d", telefone[i], cidade[i], codigo[i]);
}
}
else{
printf("\nCódigo não encontrado!\n");
printf("Pressione qualquer tecla para continuar...");
getchar();
getchar();
}
break;
default: printf("\nOpção Inválida!\n");
printf("\n");
system("pause");
break;
}
printf("\nDigite 4 para continuar pesquisando ou qualquer outra tecla para sair ");
scanf("%d", &op);
}while(op==4);
}
One possibility is: Place a
break;
when find to exit the loop and change itif else{
forif (i == TAM) {
, This is if you went all the way through the vector and didn’t find.– anonimo
Okay, thanks. I’ll try
– Diogo