Ir ao conteúdo
  • Cadastre-se

C Algoritmo de saque bancário


Davi Dutra

Posts recomendados

#include <stdio.h>

int main ()

{
int ValorSaldo;
int ValorSaque;


ValorSaldo = 1000;

printf ("Digite o valor a ser sacado\n");
scanf ("%d", &ValorSaldo);

if (ValorSaldo <= ValorSaque)
{
ValorSaldo = ValorSaldo - ValorSaque;
scanf ("%d", ValorSaldo);
printf ("Sacando R$", &ValorSaldo);



}
else
{
printf ("O valor do saque e maior do que o disponivel\n");
}
}

 

Pessoal, o código acima, escrito em C, seria de um algoritmo para sacar dinheiro em um banco, quando tento rodá-lo, ele sempre diz q o valor é maior do que o permitido, não importando o valor, alguém poderia me ajudar a solucionar?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

o ValorSaque não está sendo utilizado na linha correta

13 minutos atrás, Davi Dutra disse:

printf ("Digite o valor a ser sacado\n"); scanf ("%d", &ValorSaldo);

O certo não seria: 

"printf ("Digite o valor a ser sacado\n"); scanf ("%d", &ValorSaque);"?

adicionado 1 minuto depois

além disso, o valor do saldo não deve ser menor que o valor do saque, e sim o contrário. O valor do saque deve ser menor ou igual ao valor do saldo.

adicionado 3 minutos depois

eu lembro de quando fiz um programa bastante similar, porém bem mais complexo, em python, pra me ajudar a fixar o meu POO. Mas o seu esforço já está dando ótimos frutos! Parabéns

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

O código ficou assim:

 

#include <stdio.h>

int main ()

{
int ValorSaldo;
int ValorSaque;


ValorSaldo = 1000;
printf ("Digite o valor a ser sacado\n");
scanf ("%d", &ValorSaque);

if (ValorSaque <= ValorSaldo)
{
ValorSaldo = ValorSaldo - ValorSaque;
scanf ("%d", ValorSaldo);
printf ("Sacando R$", &ValorSaldo);



}
else
{
printf ("O valor do saque e maior do que o disponivel\n");
}
}

Só que agr nem mesmo encerra, eu digito o Valor a ser sacado e mesmo assim nada acontece 😕

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

17 minutos atrás, RaphiaelGamer disse:

por que você tem um "scanf" no meio dessas duas linhas?

Como o programa n queria ler a váriavel, eu pensei q dando um scanf funcionaria, mas n foi o caso, eu removi o scanf, e ficou assim:

#include <stdio.h>

int main ()

{
int ValorSaldo;
int ValorSaque;


ValorSaldo = 1000;
printf ("Digite o valor a ser sacado\n");
scanf ("%d", &ValorSaque);

if (ValorSaque <= ValorSaldo)
{
ValorSaldo = ValorSaldo - ValorSaque;

printf ("Sacando R$ ", &ValorSaldo);

}
else
{
printf ("O valor do saque e maior do que o disponivel\n");
}
system ("pause");
}


Dai aparece: Sacando R$, porém n mostra o valor a ser sacado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Davi Dutra Olá,

 

Você está confundindo/bagunçando muito, a sua lógica pode não estar clara. Antes de sair escrevendo código tenha uma ideia clara ou melhor um plano do que você quer e/ou precisa.

 

O que deu para compreender é que você precisa efetuar um saque, depois imprimir o valor do saldo após o saque e imprimir uma mensagem se o valor do saque for maior que o do saldo.

 

Você criou a sua função main() tipo int logo você deveria utilizar o return para retornar um numero inteiro o que não acontece.

Você está complicando o seu código com um if-else sendo que neste caso, você poderia utilizar apenas um if, como? passarei um código de exemplo:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    double saldo = 1000; // valor disponivel na conta

    char buff[128]; // receberá o valor passado pelo usuário

    printf ("\n :: Digite o valor a ser sacado: ");
    // Não utilize scanf(). Acostume-se a utilizar
    // fgets() para está finalidade.
    // Troque: scanf ("%d", &ValorSaque);
    // por: fgets(var, size, stream);
    fgets(buff, 128, stdin);

    // Converta o valor do input para double,
    // Se o valor for invalido ficará igual a 0
    double saque = atof(buff); 

    // Verifica se o valor do saque é maior do que o
    // Disponivel em saldo
    if (saque > saldo)
    {
        printf("\nO valor do saque é maior do que o disponivel.\n");
        return 1;
    }

    saldo -= saque; // Extrai o valor do saldo

    printf ("\n - Sacando: R$ %.2f\n - Saldo final: R$ %.2f\n", saque, saldo);

    system ("pause");

    return 0;
}

 

Eu fiz um post sobre uma lógica bem similar, Recomendo olhar o post a seguir e tentar completar o código que passei:

 

Espero ter lhe ajudado, até mais!

Link para o comentário
Compartilhar em outros sites

@RaphiaelGamer  Sim, em C normalmente lidamos com funções tendo main() como função principal de todo programa.

Até mesmo os comandos da linguagem C, por exemplo: fgets() e atof(), entre outros. São funções disponíveis por bibliotecas que incluímos no header do arquivo.

 

Cada função pode ser definida para retornar um valor específico, um inteiro, caracteres, entre outros.

 

No caso da função principal normalmente para casos desse tipo retornar 0, significa execução completada com sucesso.

 

Espero ter lhe ajudado, até mais!

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Davi Dutra @RaphiaelGamer @sannoy

 

Só empurrei para lodo com // o que achei de errado sintaticamente seu programa. Compare

#include <stdio.h>

/************************************************************************[MAIN]
* Funcao principal, tambem conhecida por intermediadora, e recomendado para es_
* sa funcao ter  o menor numero possivel de instrucoes no interior do seu corpo
* e por meio dela que as demais funcoes fazem troca de dados em 'chamadas', pa_
* rametros e retornos
*
* Parametro	Formal
*	void	Vazio
*
* Retorno	'status' Valor formal de retorno ao sistema operacional.
*/	int

main (void) {
	int ValorSaldo, ValorSaque;


	ValorSaldo = 1000;

	printf ("Digite o valor a ser sacado\n");
	scanf ("%d", &ValorSaque); //scanf ("%d", &ValorSaldo);
	
	if (ValorSaque <= ValorSaldo) { //if (ValorSaldo <= ValorSaque) {
		ValorSaldo = ValorSaldo - ValorSaque;
		printf ("Sacando R$ %d", ValorSaque); //printf ("Sacando R$", &ValorSaque);
	                                              //scanf ("%d", ValorSaldo);
	}
	else {
		printf ("O valor do saque e maior do que o disponivel\n");
	}
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...