3
respostas

Eu nao estou conseguindo responder essas questoes

1o) Moedas (Autor: Pedro Demasi) O rei de Pinelândia tinha alergia ao material que compunha o dinheiro de seu país, e por isso resolveu acabar com todas as células, e mandou fabricar, dali em diante, apenas moedas. Os valores destas, ao contrário do que se esperava, não eram, necessariamente, múltiplos de 5. Como os preços das mercadorias, em Pinelândia, eram caríssimos, o povo tinha sérios problemas em fazer comércio, pois, dependendo do valor do que seria comprado ou vendido, o número de moedas a ser utilizado poderia ser muito alto. Por exemplo, se as moedas fabricadas fossem apenas de 5 tostões (a unidade monetária do reinado), um cidadão deveria usar 200 moedas para comprar algo que custasse 1000 tostões. Entretanto, se houvesse moedas de 35 e de 150, a pessoa precisaria ter apenas 22 moedas: 20 de 35 e 2 de 150. Escreva um programa em JAVA que, dados o preço de uma mercadoria e os valores das moedas disponíveis, calcule o menor número possível de moedas necessário para comprar o produto sem haver troco, ou seja, o menor número de moedas tal que o total seja exatamente o preço da mercadoria. Entrada A entrada é composta por várias linhas: 1o) será solicitado M, valor correspondente ao preço da mercadoria 2o) será solicitado N, o número de moedas diferentes disponíveis 3o) será solicitado o valor V, N vezes. Cada V corresponde ao valor de uma moeda. Saída A saída é composta por uma lista, o menor número de moedas necessário para comprar o produto. Se em algum caso não for possível utilizar as moedas para chegar exatamente ao valor solicitado, escreva “Impossivel” (sem aspas e sem acento). Exemplo NOTA: __ Entrada: Saída: 550 9 moedas de 60 2 1 moeda de 10,00 60 10

2o) MERCADO - Mercado do seu João (Autor: Rodolfo Rodovalho) Uma coisa muito comum em mercados é o arredondamento do valor final da compra quando o pagamento é efetuado com dinheiro. Isto geralmente ocorre para facilitar o troco que é dado ao cliente. Às vezes o valor final é arredondado para baixo e outras vezes para cima. Em seu mercado aqui no Brasil, o senhor João das Neves, além de dinheiro, aceita tambémcartão de crédito/débito como forma de pagamento. Entretanto, arredondamentos são feitos apenas em pagamento em dinheiro, que nomercado do seu João são feitos da seguinte forma:  Arredonda-se sempre para um valor múltiplo de 5 centavos;  Se o valor passa 1 ou 2 centavos do último valor múltiplo de 5, então ele arredonda para baixo;  Se o valor passa 3 ou 4 centavos do último valor múltiplo de 5, então ele arredonda para cima. Veja abaixo alguns exemplos:  17 é arredondado para 15;  18 é arredondado para 20;  21 é arredondado para 20;  24 é arredondado para 25. Uma preocupação frequente do seu João é o faturamento de seu estabelecimento, pois ele não sabe se ao final do dia o seu mercado está ganhando ou perdendo com os arredondamentos que são feitos pelos caixas. Como você é muito amigo do senhor João das Neves, ele te pediu que fizesse um programa que, dado os valores de todas as compras realizadas no período de 24 horas, calculasse o valor total se todas as compras fossem realizadas sem arredondamentos, e que mostrasse também se o mercado ganhou ou perdeu com os arredondamentos feitos.

Entrada A entrada inicia com um inteiro N (1 <= N <= 1000). Seguem então N linhas, cada uma contendo um valor V (0 <= V <= 100), correspondente a uma compra no valor de V centavos, e uma letra indicando o tipo do pagamento (C para pagamento no cartão e D para pagamento em dinheiro). Saída Seu programa deverá imprimir uma linha contendo o valor total das compras sem os arredondamentos, e a diferença entre o valor total com os arredondamentos e o valor total sem os arredondamentos, em centavos. Os valores devem ser separados por um espaço. Exemplo 1 NOTA: __ Entrada: Saída: 4 262 1 78 C 35 D 49 D 100 C Exemplo 2 Entrada: Saída: 3 160 -2 78 C 35 D 47 D

3 respostas

Oi Diana, tudo bem ?

Conseguiu solucionar isso ? Acho que a galera não conseguiu entender muito bem, pelo tamanho de informações que tem ai. :(

Boa tarde Diana e Matheus!

Eu consegui resolver o 1º:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;

public class MoedasMinimo {
    public static void main(String[] args) throws IOException {
        InputStream fis = System.in;
        Reader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        System.out.println("Digite o preco da mercadoria:");
        int preco = Integer.parseInt( br.readLine() );

        ArrayList<Integer> valores = new ArrayList<>();
        System.out.println("Digite os valores das moedas (vazio para encerrar):");
        String valor;
        do {
            valor = br.readLine();
            if ( !valor.isEmpty() ) {
                valores.add( Integer.parseInt(valor) );
            }
        } while ( !valor.isEmpty() );

        valores.sort(null);

        Map<Integer, Integer> quantidades = new LinkedHashMap<Integer, Integer>();

        int i = valores.size();
        int diferenca = preco;
        int quantidade = 0;
        int troco = 0;
        int total = 0;
        while (diferenca > 0 && i > 0) {
            i--;

            if (diferenca >= valores.get(i)) {
                quantidade = diferenca / valores.get(i);
                diferenca -= valores.get(i);
                quantidades.put(valores.get(i), quantidade);
            }

            troco = diferenca;
            quantidade = 0;
        }

        if (troco != 0) {
            System.out.println("Impossivel!");
        } else {
            System.out.println(quantidades);
            System.out.println();
            System.out.println("troco: " + troco);
        }
    }
}

Testa aí e me dá um retorno!

teste