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

Caixa Eletrônico C++


Camila Campos

Pergunta

Preciso fazer um programa que simule um Caixa Eletrônico onde existem depósitos e saques. O saque deve ocorrer utlizando o menor número possível de notas.

Assim que sacado ele fornece o número de notas disponíveis, bem como o valor do saldo. Porém para a nota de valor 1 aparece um número gigante e as vezes os números de notas ficam negativos. Onde estou errando?

Estou postando as imagens num album de um Orkut. Pelo que percebi aqui só deixa postar imagens da Web. Estou desenvolvendo na escola pelo Linux (vim) e estou acessando de casa pelo Windows, e não sei como copiar arquivos do vim para notepad. Portanto achei mais fácil dar um PrintScreen na tela e postar no Orkut.

Obrigada!

http://www.orkut.com.br/Main#Album.aspx?ui...71126&aid=1

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Como tive que refazer, estou colocando o código. Como disse, ele compila sem nenhum erro, mas dá aqueles probleminhas que eu postei anteriormente.

#include <iostream>

using namespace std;

int checaQtdeNota (int ValorNota, int qtdSaldoNota, int saque, int valorReservado)

{

int retorno;

retorno = (saque - valorReservado) / valorNota;

if (retorno > qtdSaldoNota)

retorno = qtdSaldoNota;

return retorno;

}

int main ()

{

int nota100,

nota50,

nota10,

nota5,

nota1;

int numOp; // numero de operacoes

int codigo; //codigo da operacao

int saque;

int saldo;

int valorReservado;

cout << "Entre com o numero de notas disponiveis separadas por espaco ente cada valor. ";

cin >> nota100

>> nota50

>> nota10

>> nota5

>> nota1;

cout << "Numero de operacores: ";

cin >> numOp;

cout << endl << "voce ira realizar" << numOp << "operacoes."<< endl

<< "Utilize: "<< endl

<< "0 para saque "<< endl

<< "1 para realizar depositos."<endl << endl;

int saqueNota100,

saqueNota50,

saqueNota10,

saqueNota5,

saqueNota1,

var;

var = 0;

while (numOp > var) // o programa encerrará quando fizer o numero de operacoes escolhidas pelo usuario

{

var = var + 1;

cout << "Digite o codigo da operacao: ";

cin >> codigo;

if (codigo == 0)

{

cout << "Digite o valor do saque: ";

cin >> saque;

valorReservado = 0;

saldo = (nota100*100) + (nota100*50) + (nota10*10) + (nota5*5) + (nota1);

if (saldo > saque)

{

if (saque > valorReservado)

{

saqueNota100 = checaQtdeNota(100, nota100, saque, valorReservado);

valorReservado = valorReservado + (saqueNota100 * 100);

}

if (saque > valorReservado)

{

saqueNota50 = checaQtdeNota(50, nota50, saque, valorReservado);

valorReservado = valorReservado + (saqueNota50 * 50);

}

if (saque > valorReservado)

{

saqueNota10 = checaQtdeNota(10, nota10, saque, valorReservado);

valorReservado = valorReservado + (saqueNota10 * 10);

}

if (saque > valorReservado)

{

saqueNota5 = checaQtdeNota(5, nota5, saque, valorReservado);

valorReservado = valorReservado + (saqueNota5 * 5);

}

if (saque > valorReservado)

{

saqueNota1 = checaQtdeNota(1, nota1, saque, valorReservado);

valorReservado = valorReservado + (saqueNota1 * 1);

}

if (valorReservado ==saque)

{

nota100 = nota100 - saqueNota100;

nota50 = nota50 - saqueNota50;

nota10 = nota10 - saqueNota10;

nota5 = nota5 - saqueNota5;

nota1 = nota1 - saqueNota1;

cout << "Saque de " << saque << "efetuado." << endl;

}

else

{

saque = 0;

cout << "não há notas suficientes para o saque." << endl;

}

}

else

{

saque = 0;

cout << "não há dinheiro suficiente para o saque" << endl;

}

saldo = saldo - saque;

cout << "Situacao atual: | "

<< nota100 << " | "

<< nota50 << " | "

<< nota10 << " | "

<< nota5 << " | "

<< nota1 << " | "

<< saldo << " | " << endl;

saque = 0

}

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

  • 0

Não testei. Apenas compilei e encontrei 3 erros. Todos por distração:

1) A variável "valorNota" não existe. Você a definiu como "ValorNota". Note o nome.

2) Na linha 42 você tem um <endl. O correto seria <<endl.

3) Na linha 133 você esqueceu um ponto-e-vírgula.

Com relação ao erro 2, observe que é sempre melhor um simples "\n" que um "endl" para salto de linha, porque "endl" é sempre mais custoso, já que ele também faz um flush na stream. Neste programa, especificamente, não há porque se preocupar. É um programa pequeno. O custo desse código a mais é ínfimo. Mas no futuro, fique atenta a essa particularidade. Principalmente se for utilizar "endl" para povoar arquivo dentro de uma malha. Dependendo da quantidade de iterações, seu programa poderá ficar muito lento.

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,3k
×
×
  • Criar Novo...