Ir para conteúdo
Fórum Script Brasil
  • 0

Como armazenar valores diferentes de uma mesma variável em C++?


RodrigoAraIF

Pergunta

Estou criando um sistema bancário em c++

(é um trabalho do meu curso, que exige que eu use essa linguagem)

na última etapa, preciso que o programa mostre um extrato com todas as movimentações da conta,

mas quando eu faço os depósitos na conta, ocorre um erro.

por exemplo, o saldo inicial era 0

depositei 10

em seguida mais 20

no extrato aparece:

depósitos feitos:

2
Valor dos depósitos:

20

20

ou seja, preciso de alguma forma imprimir o primeiro e segundo valor, e ele só está reconhecendo o segundo.

alguém pode me ajudar? 

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Nossa! >_< Seu código é extenso hehe
Por favor... use o botão <> para dar formato ao texto ou pode conter erros, pois a pagina usa certas combinações de caracteres que coincidem com partes do código em c e podem desaparecer. Ademais o código é mais fácil de entender, coisa que lhe ajudará a obter ajuda mais rápido.
A3UZPtDORPWsDHZ_c2AGpA.png

Link para o comentário
Compartilhar em outros sites

  • 0
#include <iostream>
#include <conio.h>
#include <fstream> /// fluxo de dados de arquivos
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h> ///Para a função que aceita caracteres especiais
#define M 100 ///define M como 100(mesmo q M=100)

using namespace std;

///Criação da struct
struct dados{
    int numdaconta;
    int numdaagencia;
    char nomedotitular[30];
    long long cpf;
    float saldoinicial;
};

//Variáveis globais
char arq[100];
char extrato[100];
int opcao;
int contar=0;///variável para preencher a struct vetor
dados p[M];///struct com vetor, M é o valor máximo de contas
ofstream fout;///Objeto para escrever
ifstream fin;///Objeto de leitura
int conta, agencia;///Variáveis para comparar agência e conta corrente


///Função para cadastro
int cadastro(dados p[]){
    cout<< "Número da Conta: ";
    cin>> p[contar].numdaconta;
    fout<< "Numero da Conta: "<< p[contar].numdaconta<<endl;

    cout<< "Número da Agência: ";
    cin>> p[contar].numdaagencia;
    fout<< "Número da Agência: "<< p[contar].numdaagencia<<endl;

    cout<< "Nome do Titular: ";
    cin>> p[contar].nomedotitular;
    fout<< "Nome do Titular: "<< p[contar].nomedotitular<<endl;

    cout<< "CPF: ";
    cin>> p[contar].cpf;
    fout<< "CPF: "<<p[contar].cpf<<endl;

    cout<< "Saldo inicial: ";
    cin>> p[contar].saldoinicial;
    fout<< "Saldo inicial: "<<p[contar].saldoinicial<<endl;
        if(p[contar].saldoinicial>=0){
                fout << p[contar].saldoinicial << endl;
                cout << "Conta cadrastada com sucessso!\n";

        }
        else{
            ///Pus a repetição pra repetir sempre q o saldo for menor q 0
            while(p[contar].saldoinicial<0){
            cout << "Digite novamente:\n";
            cin >> p[contar].saldoinicial;
            }
            fout << p[contar].saldoinicial;
        }

    ///Fechando o arquivo
    fout.close();
    contar++;
    return 0;
}

///Função para verificar saldo
int saldo(dados p[]){
    cout<< "Número da conta: ";
    cin>> conta;
    cout<< "Número da agência: ";
    cin>> agencia;
    for(int i=0; i < contar; i++){
    if(conta==p.numdaconta && agencia == p.numdaagencia){
        cout<< "Número da Conta: "<< p.numdaconta<<endl;
        cout<< "Número da Agência: "<< p.numdaagencia<<endl;
        cout<< "Nome do Titular: "<< p.nomedotitular<<endl;
        cout<< "CPF: "<<p.cpf<<endl;
        cout<< "Saldo: "<<p.saldoinicial;
        }
        else{
            cout<< "\t*** Número da conta e agência são inválidos! ***\n"<< endl;
        }
    }
    return 0;
}

int main()
{

    float soma,valordeposito=0, valorsaque=0,novosaldo,saldoatual,qtddeposito=0, qtdsaque=0;///Variáveis para depósito e saque

    /*char novonome[30];///Variável para novo nome
    long long novocpf;///Variável para novo cpf*/

    setlocale(LC_ALL, "Portuguese");///Para aceitar caracteres especiais
    do{
    ///Menu
    cout<<endl <<"\t*** Menu de Opções *** ";
    cout<< "\n----------------------------------------";
    cout<< "\n1 - Cadastrar Conta Corrente           |"
        << "\n2 - Alterar dados de uma Conta Corrente|"
        << "\n3 - Excluir Conta Corrente             |"
        << "\n4 - Consultar Saldo                    |"
        << "\n5 - Fazer Depósito                     |"
        << "\n6 - Realizar Saque                     |"
        << "\n7 - Mostrar todas contas e saldos      |"
        << "\n8 - Emitir extrato da conta            |"
        << "\n9 - Sair                               |"
        << "\n----------------------------------------"
        << endl;

    ///O usuário irá escolher a opção
    cin>> opcao;

    if(opcao == 1){
        cout<<"Login De Acesso: ";
        cin>>arq;
        strcat(arq, ".txt");
        fout.open(arq);
            if(!fout){
                cout<<"Erro ao escrever dados no arquivo";
                return 0;
            }
        ///Se o arquivo abrir normalmente
        else{
            cadastro(p);
            }
        system("pause");
        system("CLS");///Para limpar a tela
        }

    if(opcao == 2){
        cout<< "Número da conta: ";
        cin>> conta;
        cout<< "Número da agência: ";
        cin>> agencia;
        for(int i=0; i < contar; i++){
        if(conta==p.numdaconta && agencia == p.numdaagencia){
            cout<< "Login de acesso: ";
            cin>> arq;
            strcat(arq,".txt");
            fout.open(arq);
            if(!fout){
                cout<< "Erro ao abrir o arquivo!";
                return 0;
                }
                else{
                    fout<< "Número da Conta: "<< p.numdaconta<<endl;
                    fout<< "Número da Agência: "<< p.numdaagencia<<endl;

                    cout<< "Novo nome do Titular: ";
                    cin>> p.nomedotitular;
                    fout<< "Nome do Titular: " << p.nomedotitular<< endl;

                    cout<< "Novo CPF: ";
                    cin>>p.cpf;
                    fout<< "CPF: "<< p.cpf<< endl;

                    fout<< "Saldo inicial: "<<p.saldoinicial<<endl;
                }
            }
            fout.close();
        }
    }

    ///Excluindo arquivo
    if(opcao == 3){
        cout<< "Número da conta: ";
        cin>> conta;
        cout<< "Número da agência: ";
        cin>> agencia;
        for(int i=0; i < contar; i++){
    if(conta==p.numdaconta && agencia == p.numdaagencia){
            cout<< "Login de acesso: ";
            cin>> arq;
            strcat(arq,".txt");
            fout.open(arq);
            if(!fout){
                cout<< "Erro ao abrir o arquivo!";
                return 0;
                }
            else{
                fout<< "Conta apagada com sucesso!";
                fout.close();
                cout<< "Conta apagada com sucesso!";
                }
            }
        }
    }

    ///Opção 4
    else
    if(opcao == 4){
        saldo(p);
        }

    ///Opção 5
    else
    if(opcao == 5){
        cout<< "Número da conta: ";
        cin>> conta;
        cout<< "Número da agência: ";
        cin>> agencia;
        for(int i=0; i < contar; i++){

        if(conta==p.numdaconta && agencia == p.numdaagencia){
            cout<< "Login de acesso: ";
            cin>> arq;
            strcat(arq,".txt");
            fout.open(arq);
            if(!fout){
                cout<< "Erro ao abrir o arquivo!";
                return 0;
            }
            else{
                cout<< "Número da Conta: "<< p.numdaconta<< endl;
                cout<< "Número da Agência: "<< p.numdaagencia<< endl;
                cout<< "Nome do Titular: "<< p.nomedotitular<< endl;


                saldoatual = p.saldoinicial + valordeposito;///Incluindo o valor do depósito

                cout<< "CPF: "<<p.cpf<< endl;

                if(saldoatual == 0){
                    cout<<"saldo: 0"<<endl;///quando a variável possui valor igual a 0,
                                           ///é impresso "nan" ao mandar imprimí-la
                }
                else{
                cout<< "Saldo: "<<saldoatual<< endl;
                }
                cout<< "Quanto deseja depositar? ";
                cin>> valordeposito;

                if(valordeposito < 0){
                    cout<< endl<< "\t*** Valor inválido! (Tente Novamente) ***";
                }
                else{

                    novosaldo= saldoatual;///Somando saldos

                    }

                    qtddeposito ++;
                    cout<< "Depósito feito com sucesso!";
                    cout<< endl<<"Agora você tem: "<< novosaldo<< "$"<< endl;
                    fout<< "Número da Conta: "<< p.numdaconta<< endl;
                    fout<< "Número da Agência: "<< p.numdaagencia<< endl;
                    fout<< "Nome do Titular: "<< p.nomedotitular<< endl;
                    fout<< "CPF: "<<p.cpf<< endl;
                    fout<< "Saldo: "<<novosaldo;

            }


        }
            else{
                cout<< "\t*** Número da conta e agência são inválidos! ***\n"<< endl;
            }

        fout.close();

        }
    }

    ///Opção 6
    else
    if(opcao == 6){
        cout<< "Número da conta: ";
        cin>> conta;
        cout<< "Número da agência: ";
        cin>> agencia;

        for(int i=0; i < contar; i++){
        saldoatual = p.saldoinicial - valorsaque;
        if(conta==p.numdaconta && agencia == p.numdaagencia){
            cout<< "Login de acesso: ";
            cin>> arq;
            strcat(arq,".txt");
            fout.open(arq);
            if(!fout){
                cout<< "Erro ao abrir o arquivo!";
                return 0;
            }
            else{
                cout<< "Número da Conta: "<< p.numdaconta<< endl;
                cout<< "Número da Agência: "<< p.numdaagencia<< endl;
                cout<< "Nome do Titular: "<< p.nomedotitular<< endl;
                cout<< "CPF: "<<p.cpf<< endl;
                cout<< "Saldo: "<<novosaldo<< endl;

                cout<< "Quanto deseja sacar? ";
                cin>> valorsaque;

                if(valorsaque < 0){
                    cout<< endl<< "\t*** Valor inválido! (Tente Novamente) ***";
                }
                else{

                    qtdsaque ++;
                    cout<< "Saque feito com sucesso!";
                    cout<< endl<<"Agora você tem: "<< saldoatual<< "$"<< endl;
                    fout<< "Número da Conta: "<< p.numdaconta<< endl;
                    fout<< "Número da Agência: "<< p.numdaagencia<< endl;
                    fout<< "Nome do Titular: "<< p.nomedotitular<< endl;
                    fout<< "CPF: "<<p.cpf<< endl;
                    fout<< "Saldo: "<<novosaldo;
                }
            }
        }
            else{
                cout<< "\t*** Numero da conta e agência são inválidos! ***\n"<< endl;
            }
        }
        fout.close();
    }

    ///Opção 7
    if(opcao == 7){
        for(int i=0; i<contar; i++){
            cout<< "Número da Conta: ";
            cout << p.numdaconta << endl;
            cout<< "Número da Agência: ";
            cout << p.numdaagencia << endl;
            cout<< "Nome do Titular: ";
            cout << p.nomedotitular << endl;
            cout<< "CPF: ";
            cout<< p.cpf << endl;
            cout<< "Saldo inicial: ";
            cout<< p.saldoinicial << endl;
        }
        if(contar == 0){
            cout<< "\t*** Não há contas! ***\n";
        }
    }

    ///Opção 8
    if(opcao == 8){


            cout<< "Número da conta: ";
            cin>> conta;
            cout<< "Número da agência: ";
            cin>> agencia;
            for(int i=0; i < contar; i++){
            if(conta==p.numdaconta && agencia == p.numdaagencia){
            cout<< "Login de acesso: ";
            cin>> arq;
            }
            else{
                cout<< "\t*** Número da conta e agência são inválidos! ***\n"<< endl;
            }


            int resp;///Opções para a operação a seguir:

            cout<< "Digite 1 para salvar seu extrato."
                <<endl
                << "Digite 2 para visualizar o extrato."
                <<endl;

            cin>> resp;

                if(resp == 1){

                    cout<<"Digite novamente seu login de acesso: "<<endl;
                    cin>>extrato;
                    strcat(extrato, "extrato.txt");

                    fout.open(extrato);
                    fout<< "Número da Conta: "<< p.numdaconta<<endl;
                    fout<< "Número da Agência: "<< p.numdaagencia<<endl;
                    fout<< "Nome do Titular: " << p.nomedotitular<< endl;
                    fout<< "CPF: "<< p.cpf<< endl;
                    fout<< "Saldo inicial: "<<p.saldoinicial<<endl;
                    fout<< "Depósitos: "<<endl;

                    for(int i=0; i<qtddeposito;i++){
                    fout<<valordeposito<<endl;
                    }

                    fout<<"Saques: "<<endl;

                    for(int i=0; i<qtdsaque;i++){
                    fout<< valorsaque<<endl;
                    }

                    fout<< "Saldo Final: "<<endl;
                    fout<< novosaldo<<endl;

                    if(!fout){
                    cout<<"Erro ao escrever dados no arquivo"<<endl;
                    return 0;
                    }
                    else{
                        cout<<"Extrato salvo com sucesso"<<endl;
                    }

                }
                else
                if(resp == 2){

                    cout<< "Número da Conta: "<< p.numdaconta<<endl;
                    cout<< "Número da Agência: "<< p.numdaagencia<<endl;
                    cout<< "Nome do Titular: " << p.nomedotitular<< endl;
                    cout<< "CPF: "<< p.cpf<< endl;
                    cout<< "Saldo inicial: "<<p.saldoinicial<<endl;
                    cout<< "Depósitos: "<<endl;
                    for(int i=0; i<qtddeposito;i++){
                    cout<<valordeposito<<endl;
                    }

                    cout<<"Saques: "<<endl;

                    for(int i=0; i<qtdsaque;i++){
                    cout<<valorsaque<<endl;
                    }

                    ///cout<< valorsaque<< "$"<<endl;
                    cout<< "Saldo Final: "<<endl;
                    cout<< novosaldo<<endl;


                }
                else{
                    cout<< "Opção Inválida!" <<endl;
                }
            fout.close();

            system("pause");

        }
    }

    if(opcao == 9){
        cout<< "\t*** Obrigado e volte sempre ***"<< endl;
        return 0;
        }

    if(opcao >9){
        cout<<"\t*** Opção Inválida! ***\n";
        }

    }

    while(opcao != 9);

    return 0;
}

obrigado pela dica, é porque sou novo por aqui e estou desesperado por ajuda, pois tenho até terça para entregar o código funcionando

Link para o comentário
Compartilhar em outros sites

  • 0

Seu programa tem uns quantos erros que por desgraça para corrigir me obrigaria a praticamente reescrever-lhe por completo.

Não está mal o conceito, da para entender claramente o que você quer fazer, mas tem varios falhos tanto quanto a funcionalidade se refere como em lógica.

Outro grande problema que tem é a falta de organização que tem. Não deve ser escrito tudo dentro de main, melhor usar funções(por não dizer classes), separar o código fica mais fácil encontrar erros pois são menores as porcões de código.

Vou lhe comentar o maior problema que você tem. Ao abrir um arquivo, logo depois de escrever nele ou ler, ou realizar qualquer operação nele, tenha de costume fechar o arquivo com com a função close, pois ela atua como o "salvar dados" dos editores. mesmo que você tenha que abrir o arquivo para cada operação, é recomendado fechar o arquivo, se tiver que inserir dados para 10 usuários, você precisa abrir editar e fechar dez vezes. É totalmente errado você abrir um arquivo com open editar e voltar a abrir com open sem ter fechado o anterior arquivo.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Os modos de abertura também influenciam muito como atua os "filepointers":
5a5a8d81aaebe_Openmode.jpg.f7954954d67929c048c6a33d1c3ca5fe.jpg

dependendo de como você abre o arquivo ele vai ter um comportamento diferente

dependendo de como você abre o arquivo ele vai ter um comportamento diferente

Link para o comentário
Compartilhar em outros sites

  • 0

Por isso você precisa saber qual estrutura vai ter o arquivo.
Alguns pontos como:
Onde guardo os dados referentes a um depósito? No mesmo arquivo? Em um arquivo diferente? Lembre que você pode usar um segundo arquivo com a seguinte estrutura:
+10
-5
+55.67
...

Ou inclusive pode estar no mesmo arquivo.

Outro ponto que não acho bem é que o usuário escolha o numero da sua conta, isso deveria ser automático. E nem que os arquivos tenham a contra senha como nome, pois podem dar-se casos de repetir 2 contrassenhas, mas nunca se repetirá por exemplo, o numero de conta+agencia, ou a carteira de identidade, cpf, etc.

você pode criar um arquivo com os dados tipo

nome      numero      senha    cpf               arquivo    
raul      001         007      123.456.789-0     raul 123.456.789-0.txt
marcos    002         123      123.456.790-0     marcos 123.456.790-0.txt

Ao buscar um usuário, por exemplo raul, lhe remitiria a um arquivo tipo:
raul 123.456.789-0.txt

+5
-10
+100.98
-55.10


O primeiro arquivo se chama arquivo de índices, e facilita na busca de dados.

 

são somente ideias claro... só para ter uma base. Sorte.

são somente ideias claro... só para ter uma base. Sorte.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

  • 0

Procure arrumar esses pontos do seu programa, caso não consiga, podemos trabalhar nas partes mais criticas que são alterar e ler desde o arquivo, acredito que lhe ajudando nessas partes você seja capaz de terminar o programa.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...