Estou aprendendo c++ na faculdade e andei pegando alguns exercícios para praticar esta linguagem.
O programa que estou desenvolvendo é um programa bancário, com um struct conta e um vetor chamado vetconta.
struct conta {
char numero [9]; //guardar 8 digitos referentes ao numero da conta
char agencia [5]; // guardar 4 digitos referentes ao mumero da agência
float saldo; // guardar o saldo do cliente
int movimento; // quantidade de vezes que o cliente movimentou sua conta
};
conta vetconta [30]; // suporte para 30 clientes
Sei que o número e agência poderiam ser valores inteiros, mas o exercício pede que sejam em CHAR.
Minha função para cadastro ficou desta maneira:
int cadastra (int indice) {
if (indice < 30) {
cout<<"Informe o numero da conta: ";
cin.ignore(256,'\n');
cin.getline(vetconta[indice].numero,9);
cout<<"\nInforme o numero da agencia: ";
cin.ignore(256,'\n');
cin.getline(vetconta[indice].agencia,5);
cout<<"\nInforme o saldo a ser depositado: ";
cin>>vetconta[indice].saldo;
vetconta[indice].movimento = 0;
return 0;
} else {
return 1;
}
}
O problema é que ao utilizar o cin.ignore(256,'\n') o programa está criando uma linha a mais em agência e este problema não ocorre em número da conta. Onde está o erro?
Pergunta
DanOver
Olá galera,
Estou aprendendo c++ na faculdade e andei pegando alguns exercícios para praticar esta linguagem.
O programa que estou desenvolvendo é um programa bancário, com um struct conta e um vetor chamado vetconta.
struct conta { char numero [9]; //guardar 8 digitos referentes ao numero da conta char agencia [5]; // guardar 4 digitos referentes ao mumero da agência float saldo; // guardar o saldo do cliente int movimento; // quantidade de vezes que o cliente movimentou sua conta }; conta vetconta [30]; // suporte para 30 clientesSei que o número e agência poderiam ser valores inteiros, mas o exercício pede que sejam em CHAR. Minha função para cadastro ficou desta maneira:int cadastra (int indice) { if (indice < 30) { cout<<"Informe o numero da conta: "; cin.ignore(256,'\n'); cin.getline(vetconta[indice].numero,9); cout<<"\nInforme o numero da agencia: "; cin.ignore(256,'\n'); cin.getline(vetconta[indice].agencia,5); cout<<"\nInforme o saldo a ser depositado: "; cin>>vetconta[indice].saldo; vetconta[indice].movimento = 0; return 0; } else { return 1; } }O problema é que ao utilizar o cin.ignore(256,'\n') o programa está criando uma linha a mais em agência e este problema não ocorre em número da conta. Onde está o erro?
Editado por DanOverLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.