Ir ao conteúdo
  • Cadastre-se

Guilherme Vasconcellos

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por Guilherme Vasconcellos

  1. Faz um tempinho que postaram a dúvida, mas fica pra posteridade kkkk, tenho um exemplo em c# pra sacar esses valores, se adicionar uma nota de 3, a regra de pegar o menor número de notas possível passa a não funcionar muito bem, mas é ajustável =/

     

    using System;
    using System.Collections.Generic;
    
    class MainClass {
      public static void Main (string[] args) {
        while (true) {
            Console.WriteLine("Insira a quantia desejada:");
            var amount = int.Parse(Console.ReadLine());
    
            var notes = new int[7] { 200, 100, 50, 20, 10, 5, 2 };
            var wallet = new Dictionary<int, int> {
                { 200, 0 },
                { 100, 0 },
                { 50, 0 },
                { 20, 0 },
                { 10, 0 },
                { 5, 0 },
                { 2, 0 }
            };
    
            foreach (var note in notes) {
                if (note > amount) {
                    continue;
                }
    
                var diff = amount - note;
                var rest = amount % note;
                var restIsOneOrTree = rest == 1 || rest == 3;
    
                var amountIsEven = amount % 2 == 0;
                var noteIsEven = note % 2 == 0;
    
                if (!amountIsEven && noteIsEven) {
                    if (restIsOneOrTree && diff < 10) {
                        continue;
                    }
                }
    
                if (amountIsEven && !noteIsEven) {
                    continue;
                }
    
                if (restIsOneOrTree) {
                    amount -= note;
                    wallet[note]++;    
                    continue;
                }
    
                int numberOfNotes = amount / note;
    
                amount -= numberOfNotes * note;
                wallet[note] += numberOfNotes;
            }
    
            foreach(var entry in wallet) {
                if (entry.Value > 0) {
                    Console.WriteLine($"{entry.Value} notes of {entry.Key}");
                }
            }
        }
      }
    }

     

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!