Ir ao conteúdo

Posts recomendados

Postado

Meu professor me passou um problema no qual eu deveria fazer uma máquina de saque, que limitasse a quantia até 1000 e disponibilizasse somente notas de  20 e 50 reais. O programa pediria como entrada o valor e daria como saida o número de notas de 20 e/ ou 50 reais. O programa daria preferência a notas de 50 reais.

Estou tentando rodar esse algoritmo no VisualAlg e no DevC ++, porém estou com problemas.

 

Deixarei os dois códigos abaixo:

 

Algoritmo em Visualg:

 

Algoritmo "Dimas1"

 var
 notas50, notas20: inteiro
valor:real

inicio

Escreva("Digite o valor que deseja Sacar: ")

Leia(valor)

notas20 <- (valor)div(20)

notas50 <- (valor)div(50)

se (notas50*50 <> valor e notas20*20 <> valor e notas50*50 +notas20*20 <>  valor ) então

Escreva ("valor inválido, por favor ,digite um valor que possibilite o saque com notas de 20 e 50")

FimSe
se valor >1000 entao

escreva("Valor inválido, por favor, digite um valor entre 0 e 1000")

 

se (valor)mod(50) = 0 entao

escreva(notas50)

se (valor)mod(50) > 0 e ((valor)mod(50))mod 20 = 0 então

{escreva(notas20)

escreva (notas20  }


fimalgoritmo

 

Algoritmo em C

 

<

#include <stdio.h>
int main(){
    
int notas50, notas20;
float valor;

printf("Digite o valor que deseja Sacar: ");

scanf("%f",&valor);

notas20 = (valor)/(20);

notas50 = (valor)/(50);


if ((notas50)*50 != valor && (notas20)*20 != valor && (notas50*50) +((notas20)*20) !=  valor)

  printf("valor inválido, por favor ,digite um valor que possibilite o saque com notas de 20 e 50");


if (valor>1000 )

printf("Valor inválido, por favor, digite um valor entre 0 e 1000");

if ((valor)%(50) == 0 )

printf(notas50);

if ((valor)%(50) > 0 && ((valor)%(50))% 20 == 0 )
{
}
 printf(notas50);

 printf(notas20);


return 0; 

}

Me ajudem por favor se puderem.

 


 

Postado

Veja se consegue entender a lógica do programa abaixo. Tentei comentar de forma clara. Não sei se é a melhor solução, mas acredito que funcionará:

#include <iostream>

using namespace std;

#include <stdio.h>
int main(){
    
int notas50, notas20;
int resto;
float valor;
printf("Digite o valor que deseja Sacar: ");
scanf("%f",&valor);
if ((valor>1000 ) || (valor < 0))
{
 printf("Valor inválido, por favor, digite um valor entre 0 e 1000");
 return 1;
}
resto = (int)valor % 50;
notas50 = (int)valor/50;//comeco dividindo por 50, pois assim resultara em quantidade menor de notas
if (resto == 0) //possível pagar apenas com notas de 50

{
   printf("você sacou %d notas de 50", notas50);
   return 0;
} else //nao da para paga apenas com notas de 50
{
  while ((resto % 20 != 0) && (notas50>0))//se o que sobrar nao for divisivel por 20, tem que tirar cedulas de 50 ate ser possível
  {
      resto +=50;
      notas50--;
  }
  notas20 = resto / 20;// quantidade de cedulas de 20
  resto = resto % 20;//calculo o resto final, que deve ser zero
}

if (resto != 0) //se o resto for diferente de zero, entao nao ha como o caixa pagar
{
  printf("valor inválido, por favor ,digite um valor que possibilite o saque com notas de 20 e 50");
  return 1;
}
printf("você sacou %d notas de 50 e %d notas de 20", notas50, notas20);

return 0; 

}

Esse tipo de problema você tem que racionar com faria na vida real.

  • Obrigado 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!