Qual o problema?

4 respostas
T

E ai galera! Olha eu aki de novo…
Pessoal, n to conseguindo descobrir o problema do meu programa.
Olha o problema:
http://www.cic.unb.br/docentes/facp/cb/CBexer15.html

Bom, o programa da certo na maioria, mas tipo, qdo. ele tem q imprimir notas de 10 reais, ele n imprime, se for necessario, as notas de 5 e 1 real. Acontece o mesmo qdo imprime nota de 5 reais, se precisar de notas de 1 ele n imprime. Alguem tem uma ideia do q eu to fazendo errado??
Valeu pessoal:
olha o meu codigo:

public class M0479705T052 {
    public static void main(String[] arg) {
        int a, b, c=0, d=0, e=0, h=0, i=0;
        Teclado tec = new Teclado();
        System.out.print ("Digite o valor da compra: ");
        a= tec.lerInteiro();
        System.out.print ("Digite o valor do pagamento: ");
        b= tec.lerInteiro();
        c = (b-a);
        if (c>=50){
        while (c>=50){
            c = c-50;
            d = d+1;
        }
        System.out.print ("Troco "+(b-a)+ " = "+d+" x 50");
        }
        if (c<50&&c>=20){
            while (c>=20){
                c = c-20;
                e = e+1;
            }
            if (d!=0){
                System.out.print(" + "+e+" x 20");
            }else System.out.print ("Troco "+(b-a)+ " = "+e+" x 20");
        }
        if (c<20&&c>=10){
            while (c>=10){
                c = c-10;
                h = h+1;
                }
            if (d!=0||e!=0){
                System.out.print(" + 1 x 10");
            }else System.out.print ("Troco "+(b-a)+ " = 1 x 10"); h = h+1; c = c-10;
        }
        if (c<10&&c>=5){
            if (d!=0||e!=0||h!=0){
                System.out.print(" + 1 x 5");
                i = i+1; c = c-5;
            }else System.out.print("Troco "+(b-a)+" = 1 x 5"); i = i+1; c = c-5;
        }
        if (c<5&&c>0){
            if (d!=0||e!=0||h!=0||i!=0){
                System.out.print(" + "+c+" x 1");
            }else System.out.print("Troco "+(b-a)+" = "+c+" x 1");
        }
    }
}

4 Respostas

Rafael_Nunes

E qual exatamente o seu problema?
Como está definido sua classe Teclado?E em qual momento você atribui valores para a e b?

T

A classe Teclado ta assim:

import java.io.*;
public class Teclado {
	private BufferedReader fonte = new BufferedReader(
								new InputStreamReader(System.in));
	public int lerInteiro() {
		while (true) {
			try {
				return Integer.parseInt(fonte.readLine());
			} 	catch (IOException e) {}
				catch (NumberFormatException e) {
					System.out.println("Numero invalido!");
					System.out.print("Por favor, digite um numero inteiro: ");}
		}
	}
	public double lerReal() {
		while (true) {
			try {
				return Double.parseDouble(fonte.readLine());
			} 	catch (IOException e) {}
				catch (NumberFormatException e) {
					System.out.println("Numero invalido!");
					System.out.print("Por favor, digite um numero real: ");}
		}
	}
	public String lerLinha() {
		String linha = null;
		try {
			linha = fonte.readLine();
		}	catch (IOException e) {}
		return linha;
	}
}
O a e o b sao lidos nos comandos :

a= tec.lerInteiro();

b= tec.lerInteiro();

O problema é q, por exemplo, se o a=10 e o b=75, o programa imprime Troco 65 = 1x50 + 1x10
e para
Ele tinha q imprimir 1x5 tb.
Nada q supostamente teria q vir depois do qtdx10 ta vindo.
Acontece o mesmo se a=10 e b=68
Ele para de imprimir depois do 1x5.

T

Po, ningem pode me ajudar???

T

Credo, você não conhece o operador de divisão “/” e de resto “%”?
Parece que você está dando o troco contando as notas.

Criado 15 de maio de 2005
Ultima resposta 16 de mai. de 2005
Respostas 4
Participantes 3