Ir ao conteúdo
  • Cadastre-se

C Programa em C de caixa automático


Posts recomendados

Olá novamente!

Precisava de mais uma ajuda, preciso montar um programa em C que considere um caixa automático com apenas um repositório com capacidade para armazenar 1000 notas de 10 reais.
Segue questão:
Elabore um programa para ler um valor e fornecer a quantidade de notas correspondente a esse valor. O seu programa deve manter a quantidade de notas no repositório atualizada. Caso o valor lido não possa ser fornecido por falta de notas, o programa deve imprimir uma mensagem indicando o fato. O programa também deve imprimir uma mensagem se o valor não for múltiplo de 10. Após o tratamento do valor lido, com a impressão da mensagem ou o fornecimento das notas correspondentes, o procedimento deve ser repetido. O programa deve parar quando um valor lido for negativo.

Obs: Para alguma operação (a sua escolha) utilize função.

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

@herbertbahia huuum, boa. Obrigada!

adicionado 26 minutos depois
26 minutos atrás, Thais Monteiro disse:

@herbertbahiaBem, fiz uma parte aqui, só que não tô conseguindo fazer com que imprima na tela o valor correspondente de notas quando insiro valor. Ex: $50.00 - 5 notas de $10 ou algo do tipo.
 

#include <stdio.h>

main() 
{

    int qtd_armazenada=1000, valor;

    printf("Informe o valor a sacar: "); scanf("%d", &valor);

    while (valor > 0) {

        if (valor % 10 != 0)

            printf("Valor invalido. Precisa ser multiplo de 10\n");

        else {

            if (valor / 10 > qtd_armazenada)

                printf("Valor a sacar maior que o disponivel\n");

            else {

                qtd_armazenada -= valor / 10;

                printf("Saque efetuado\n");

            }

        }

        printf("Informe o valor a sacar: ");

        scanf("%d", &valor);

    }

    printf("Fim\nValor disponivel no caixa: %d\n", qtd_armazenada * 10);

    
}

 

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

@Thais Monteiro Excelente 

#include <stdio.h>

main() {

  int qtd_armazenada = 1000, valor;

  printf("Informe o valor a sacar: ");
  scanf("%d", & valor);

  while (valor > 0) {

    if (valor % 10 != 0)

      printf("Valor invalido. Precisa ser multiplo de 10\n");

    else {

      if (valor / 10 > qtd_armazenada)

        printf("Valor a sacar maior que o disponivel\n");

      else {

        qtd_armazenada -= valor / 10;
		valor/=10;
        printf("Saque efetuado %d Notas de $10\n",valor);

      }

    }

    printf("Informe o valor a sacar: ");

    scanf("%d", & valor);

  }

  printf("Fim\nValor disponivel no caixa: %d\n", qtd_armazenada * 10);

}

 

Link para o comentário
Compartilhar em outros sites

Pode ser feito assim também:

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

int main() {
    int totalNotas = 1000;
    double entrada = 0.0;

    do {
        if (totalNotas == 0) {
            // Caixa vazio
            printf("[ A ]: Caixa vazio. Por favor chame um funcionario. \n");
        } else if (totalNotas <= (totalNotas * 0.1)) {
            // Reserva de notas igual ou menor a 10 por cento
            printf("[ A ]: Quantidade baixa de notas. Por favor informe a um funcionario. \n");
        }

        // Interacao com o usuario
        printf("Digite um valor para saque: R$ ");
        scanf(" %lf%*c", &entrada);

        if (entrada < 0) {
            // Condicao de parada
            break;
        } else if (fmod(entrada, 10) != 0) {
            // Nao e multiplo de 10
            printf("[ A ]: Esse valor nao pode ser sacado. \n");
        } else if (entrada > totalNotas * 10) {
            // Notas insuficientes
            printf("[ E ]: Desculpe, nao temos notas suficientes para atender esse valor. \n");
        } else {
            // Saque bem sucedido
            printf("[ I ]: Realizando o saque. Aguarde a liberacao das notas. \n");
            totalNotas -= (int) entrada / 10;
        }
    } while (entrada > 0.0);

    return EXIT_SUCCESS;
}

 

Link para o comentário
Compartilhar em outros sites

Em 22/05/2020 às 10:54, Thais Monteiro disse:

Obs: Para alguma operação (a sua escolha) utilize função

 

Sim, deve ter ao menos uma função.

 

Esse caixa nem se compara com as ATM de hoje em dia :) É um caixa minimalista, sem 3 ou 4 gavetas de notas, sem gaveta de rejeição, sem depósitos, sem extratos, pagamentos, serviços de massagem, venda de ingressos e afins.

 

Então uma função saque() combina.

 

E para ficar parecido com um caixa desses, uma tabela de mensagens como por exemplo

 

image.png.dbb39aa68ebe78f9de0ba97b51e411af.png

 

Assim o saque devolve um int: o número de notas dispensadas ou um índice negativo que dá o número da mensagem na tabela. Como uma ATM de verdade. E controla o saldo lá dentro da função mesmo. 

 

A saída de um exemplo seria assim

Valor do SAQUE: 1
Valor desejado nao e multiplo de R$10
Valor do SAQUE: 10
1 nota dispensada
Valor do SAQUE: 10
1 nota dispensada
Valor do SAQUE: 80
8 notas dispensadas
Valor do SAQUE: 9900
990 notas dispensadas
Valor do SAQUE: 10
Falta de notas
Valor do SAQUE: 20
Falta de notas
Valor do SAQUE: -1
Fechando o caixa...

Resumo:

  • não se esqueça da função.
  • Concentrar as mensagens no início facilita muitas coisas --- o compilador faz isso, por exemplo.
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!