Ir ao conteúdo

Posts recomendados

Postado

E ae galera beleza?

Eu postei uma duvida minha aqui a umas 2 horas atras, só que eu mesmo acabei resolvendo depois, porém agora surgiu uma outra duvida

Eu digito o valor do cpf só que ai depois ele pulava uma parte do codigo, ok... Ai usei cin.clear() e resolveu isso, só que quando fui ver o valor do cpf, o valor estava diferente do que eu tinha colocado, ok.. Então tirei o cin.clear() e usei cin.get() em cima do meu getline, o programa funciona perfeitamente se o meu cpf tiver tamanho inferior a 10, quando o tamanho é superior a 9, entra num loop infinito do meu comando "DO" pulando todos os cin e getline.

 

//arquivo ContaBancaria.cpp
#include "ContaBancaria.h"

ContaBancaria::ContaBancaria()
{

}

void ContaBancaria::setNumeroConta(int numeroConta)
{
    this->numeroConta = numeroConta;
}

void ContaBancaria::setNome(string nome)
{
    this->nome = nome;
}

string ContaBancaria::getNome()
{
    return this->nome;
}

void ContaBancaria::setNascimento(string nascimento)
{
    this->nascimento = nascimento;
}

string ContaBancaria::getNascimento()
{
    return this->nascimento;
}

void ContaBancaria::setCpf(int cpf)
{
    this->cpf = cpf;
}

int ContaBancaria::getCpf()
{
    return this->cpf;
}

void ContaBancaria::setValor(double valor)
{
    this->valor = this->valor + valor;
}

void ContaBancaria::criarConta()
{
    int entradaUsuarioInt;
    string entradaUsuarioString;

    cout << endl << "Para criar uma conta, digite as informações abaixo" << endl;

    cout << "Cpf: ";
    cin >> entradaUsuarioInt;
    this->setCpf(entradaUsuarioInt);


    cout << "Nome: ";
    cin.get();
    getline(cin, entradaUsuarioString);
    this->setNome(entradaUsuarioString);

    cout << "Nascimento: ";
    getline(cin, entradaUsuarioString);
    this->setNascimento(entradaUsuarioString);

    cout << endl << "Conta criada com sucesso!" << endl;
}

void ContaBancaria::showInfo()
{
    cout << "Nome: " << this->getNome() << endl;
    cout << "Nascimento: " << this->getNascimento() << endl;
    cout << "CPF: " << this->getCpf() << endl;
    system("pause");
}

//Arquivo ContaBancaria.h
#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;
class ContaBancaria
{
public:
    ContaBancaria();

    void criarConta();

    void setNumeroConta(int numeroConta);
    int getNumeroConta();

    void setNome(string nome);
    string getNome();

    void setNascimento(string nasicmento);
    string getNascimento();

    void setCpf(int cpf);
    int getCpf();

    void setValor(double valor);
    double getValor();

    void showInfo();

private:
    int numeroConta;
    string nome;
    string nascimento;
    int cpf;
    double valor;

};

//arquivo main.cpp
#include "ContaBancaria.h"

int main()
{
    int escolhaOpcao;
    setlocale(LC_ALL,"Portuguese");

    ContaBancaria *cb = new ContaBancaria();

    do
    {

        cout << "Hello world!" << endl << endl;
        cout << "Escolha uma opção:" << endl;
        cout << "1)Criar conta" << endl;
        cout << "2)Ver conta" << endl;
        cout << "3)Saque" << endl;
        cout << "4)Depósito" << endl;
        cout << "5)Transferir" << endl;
        cout << "6)Sair" << endl;
        cin >> escolhaOpcao;


        switch(escolhaOpcao)
        {
        case 1:
            cb->criarConta();
            break;

        case 2:
            cb->showInfo();
            break;

        case 3:
            break;

        case 4:
            break;

        case 5:
            break;

        case 6:
            break;

        default:
            cout << endl << "Opção inválida" << endl;

        }
    }while(escolhaOpcao!=6);
    return 0;
}




 

Postado

eu não conhecia esse comando cin.sync()

ele fez a mesma coisa que o cin.get() ou cin.ignore(), no fim não resolveu o problema dos 10 digitos, mas eu sei porque, eu andei pesquisando e uma variavel do tipo int tem um valor maximo que pode receber que é esse abaixo

INT_MAX

Valor máximo para uma variável do tipo int.

2147483647

 

um cpf tem 11 digitos, então o cpf ficava com valor superior a 2147483647(que possui 10 digitos) e por isso dava o erro

galerinha, quem for um programa que peça cpf, utilize o tipo char ou até mesmo o tipo string que irá evitar esse erro

Postado

Como o @Michael Douglas_787885  falou, quando se guarda números que não precisam fazer operações matemáticas, usa-se o tipo char ou string pra guarda-los. O principal motivo é facilitar quando se quer obter um dígito específico do número

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!