Jump to content
Fórum Script Brasil
  • 0

[Exercicio] Duvida no algoritmo


Hzsiul
 Share

Question

Acabei de resolver um exercicio, e não sei se consegui alcançar o objetivo do problema, pois achei algumas definiçoes meio estranhas, queria a opniao de vocês, para saber se está correto ou errado a soluçao e ou quais melhoras posso fazer no codigo.

Abaixo segue o problema juntamente com o codigo que desenvolvi para o mesmo.

1) Desenvolva um programa em C++ que determinará se um cliente de uma loja de departamentos

excedeu o limite de credito em conta corrente. Para cada cliente, os seguintes fatos estao

disponiveis:

a)Numero da conta

b)Saldo no principio do mes

c)Total de debitos

d)Total de compras no credito.

e)Limite de credito permitido.

O programa deve receber como entrada cada um destes fatos. calcular o novo saldo

(=saldo inicial +debitos -creditos) e determinar se o novo saldo execede o limite de credito

do cliente. Para aqueles clientes cujo limite de credito for excedido, o programa deve

exibir o numero da conta do cliente, o limite de credito, o novo saldo e a mensagem

"Limite de credito excedido."

#include <iomanip>
#include <iostream>

using namespace std;

int main(){
cout<<setprecision(2)<<setiosflags(ios::fixed|ios::showpoint|ios::left);
int nconta,op;
float nsaldo,ncredito,ndebito,nncredito;
float nfsaldo=0,nfcredito=0;
cout<<"Digite o numero da conta: ";
cin>>nconta;
cout<<"Digite o seu saldo inicial: ";
cin>>nsaldo;
cout<<"Digite seu limite de credito: ";
cin>>ncredito;
cout<<"Digite os gastos em sua conta: ";
cin>>ndebito;
cout<<"Digite os gastos em seu cartao de credito: ";
cin>>nncredito;
cout<<"Digite (1) para calcular,(2) Para iniciar o calculo novamente\n";
cin>>op;

switch (op){

case 1:
nfsaldo=nsaldo-ndebito;
nfcredito=ncredito-nncredito;
cout<<"Conta: "<<nconta<<endl;
cout<<"Saldo: "<<nfsaldo<<endl;
cout<<"Limite de credito: "<<nfcredito<<endl;
if (ncredito < nncredito)
cout<<"Limite de credito excedido, voce esta devendo: "<<nfcredito<<endl;
if (ndebito > nsaldo)
cout<<"Limite em conta excedido, cheque especial!"<<endl;
getchar();
break;

case 2:
system ("cls");
main();
break;

default:
cout<<"Opcao invalida por favor tente novamente!\n";
system ("cls");
main();
break;

}

getchar();
return(0);
}

Edited by Hzsiul
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Olá!

Realmente está estranho esse enunciado. De qualquer forma eu seguiria à risca o que foi proposto, mesmo não fazendo tanto sentido assim.

Veja que no enunciado existe uma fórmula: saldo inicial + debitos - credito.

Isso não foi feito no seu programa. Você separou em débito e crédito.

Eu imagino que nesse caso os débitos referem-se a valores pagos e créditos as compras efetuadas, como se fosse uma fatura de cartão de crédito.

Vendo dessa forma, aquela fórmula inicial passaria a fazer sentido.

Uma sugestão seria adicionar uma opção no programa para calcular da forma eu falei.

Assim, se de uma forma não estiver certa, a outra vai estar! E seu programa vai calcular das duas formas... B)

Outra coisa: não é muito comum ficar chamando o main dentro dele mesmo. O ideal é fazer um loop dentro do main ao invés de chamar ele de novo. Fazendo o loop, seu programa ficaria assim:

#include <iomanip>
#include <iostream>

using namespace std;

int main(){
    int nconta,op;
    float nsaldo,ncredito,ndebito,nncredito;
    float nfsaldo=0,nfcredito=0;

    cout<<setprecision(2)<<setiosflags(ios::fixed|ios::showpoint|ios::left);

    do {
        cout<<"Digite o numero da conta: ";
        cin>>nconta;
        cout<<"Digite o seu saldo inicial: ";
        cin>>nsaldo;
        cout<<"Digite seu limite de credito: ";
        cin>>ncredito;
        cout<<"Digite os gastos em sua conta: ";
        cin>>ndebito;
        cout<<"Digite os gastos em seu cartao de credito: ";
        cin>>nncredito;
        cout<<"Digite (1) para calcular, (2) Para iniciar o calculo novamente, (9) Para sair\n";
        cin>>op;

        switch (op){
        case 1:
            nfsaldo=nsaldo-ndebito;
            nfcredito=ncredito-nncredito;
            cout<<"Conta: "<<nconta<<endl;
            cout<<"Saldo: "<<nfsaldo<<endl;
            cout<<"Limite de credito: "<<nfcredito<<endl;
            if (ncredito < nncredito)
            cout<<"Limite de credito excedido, voce esta devendo: "<<nfcredito<<endl;
            if (ndebito > nsaldo)
            cout<<"Limite em conta excedido, cheque especial!"<<endl;
            getchar();
            break;

        case 2: // repetir, não faz nada
        case 9: // sair, o while vai terminar
            break;

        default:
            cout<<"Opcao invalida por favor tente novamente!\n";
            system ("cls");
            break;
        }
    } while(op != 9);

    getchar();
    return(0);
}

Edited by Marcelo Utikawa da Fonseca
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...