Ir ao conteúdo
  • Cadastre-se

C Estou tentando um algoritmo em Visualg e estou com problemas


Posts recomendados

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.

 


 

Link para o comentário
Compartilhar em outros sites

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