Deitel _ Capítulo 4_Instruções de controle : parte I

9 respostas
santosmm

Galera é o seguinte, estou estudando para a prova SCJA.
E acho que a primeira coisa que devo fazer a revisar meus conceitos quanto ao Java, por isso estou lendo o livro Java como Programar e resolvendo o exercícios.Entretanto me deparei com o exercício abaixo e fiquei com dúvidas, pois achei o enunciado um tanto quanto bagunçado.
Segue abaixo o enunciado do exercício e o código desenvolvido por mim.

4.17 - Os motoristas se preocupam com o consumo de combustível de seus automóveis. Um motorista monitorou vários tanques cheios de gasolina registrando a quilometragem dirigida e a quantidade de combustível em litros utilizado para cada tanque cheio. Desenvolva uum aplicativo Java que receba como entrada os quilômetros dirigidos e os litros de gasolina consumidos (ambos como inteiros) paracada tanque cheio. O programa deve calcular e exibir o consumo em quilômetros/litro para cada tanque cheio e imprimir a quilometragem combinada e a soma total de litros de combustível consumidos até este ponto. Todos os cálculos de médias devem produzir resultados em ponto flutuante. Utilize a class Scanner e repetição controlada por sentinela para obter os dados do usuário.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Cap4;

import java.util.Scanner;

/**
 *
 * @author santosmm
 */
public class Quilometragem {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        int quilometro;
        int litros;
        int total = 0;
        double media;


        Scanner input = new Scanner(System.in);



        System.out.println("Entre com a quilometragem  ou pressione -1 para sair");
        quilometro = input.nextInt();
        System.out.println("Entre com a quantidade de combustível consumida ou pressione -1 para sair");
        litros = input.nextInt();

        if (quilometro != -1 || litros != -1) {
            while (quilometro != -1 || litros != -1) {
                System.out.println("Entre com a quilometragem  ou pressione -1 para sair");
                quilometro = input.nextInt();
                System.out.println("Entre com a quantidade de combustível consumida ou pressione -1 para sair");
                litros = input.nextInt();
                total+=litros;
            }
        }

        if (quilometro != 0 || litros != 0) {
            media = (double) quilometro / litros;

            System.out.printf("O consumo em quilômetros/litros é de: %.2f\n ", media);
        } else {

            System.out.println("Nenhum número inserido");
        }



    }
}

9 Respostas

robson.java

Isso seria a solução???

santosmm

Na verdade estou buscando a solução, entretanto não consegui compreender muito bem o enunciado.

pablosaraiva

O programa deve ficar em loop, até que o usuário decida sair.

A cada iteração, o usuário deve digitar a quantidade de quilômetros que percorreu com o tanque e a quantidade de litros que utilizou.

Isso deve ser armazenado.

Quando o usuário resolver sair, você deve exibir para cada tanque que ele utilizou, o consumo em Km/l. E também uma média.

Exemplo:

Tanque1, 300km, 30l
Tanque2, 200km, 25l
Tanque3, 700km, 60l

No final o programa vai mostrar:

Tanque1: 10Km/l
Tanque2: 8Km/l
Tanque3: 11.66Km/l

Média: 10.43 Km/l

davidbuzatto

Não é para mostrar a média total e sim por tanque.

Eis aqui o algoritimo:

crie um acumulador para quilômetro e um para litro

faça um loop infinito (afinal, são n tanques).

armazene os quilômetos (int)

acumule os quilômetros

armazene os litros consumidos (int)

acumule os litros

exiba a média do consumo do tanque n ( (double) quilometos / (double) litros )

quanto sair do loop infinito, imprima os dois acumuladores.

use diálogos JOptionPane para a entrada do usuário

[]´s

pablosaraiva

A média por tanque eu já tinha dito, mas no final, tem razão, não é pra mostrar a média geral e sim a quilometragem total e o consumo total.

MarcioCasteloBranco

O David respondeu de forma clara e precisa e ainda passou o algorítimo melhor que isso e só postar o código!!!
Bom trabalho

pedroroxd
Se for igual ao que o pablosaraiva falou, vai ficar +/- assim: (Eu resolvi assim)
import java.util.Scanner;

public class ExemploDeitel {

	/**
	 * 
	 * @author Pedro Henrique Fialho Santos 
	 * ([telefone removido] or ([telefone removido]
	 * [email removido]
	 * 
	 */

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		System.out.println("Digite o numero de registros.");
		int quanti = input.nextInt();

		float[] kmltanques = new float[quanti];
		int[] quilometro = new int[quanti];
		int[] litros = new int[quanti];
		int litrototal = 0;
		double media;
		int quilometrototal = 0;

		int x = 0;
		int y=0;
		while (x < quanti) {
			y=x+1;
			System.out.println("Entre com a quilometragem  do tanque " + y);
			quilometro[x] = input.nextInt();
			System.out.println("Entre com a quantidade de combustível consumida");
			litros[x] = input.nextInt();
			kmltanques[x] = quilometro[x] / litros[x];
			x++;
		}

		x = 0;
		y=0;
		System.out.println("");
		while (x < quanti) {
			y=x+1;
			quilometrototal = quilometrototal + quilometro[x];
			litrototal = litrototal + litros[x];

			System.out.println("Tanque" + y + ": " + quilometro[x] + "km e "
					+ litros[x] + "litros = " + kmltanques[x] + "km/l");
			x++;
		}

		media = (double) quilometrototal / litrototal;
		
		System.out.println("Total de quilometros: " + quilometrototal + "KM");
		System.out.println("Total de litros: " + litrototal + "L");
		System.out.printf("A média é de: %.2f\n ",media);
	}
}

A saída ficou assim:
Tanque1: 300km e 30litros = 10.0km/l
Tanque2: 200km e 25litros = 8.0km/l
Tanque3: 700km e 60litros = 11.0km/l
Total de quilometros: 1200KM
Total de litros: 115L
A média é de: 10,43

santosmm

Galera,

Seguinte consegui desenvolver um código para resolver o problema do exercício.
Mas ainda não estou satisfeito, pois para parar a execução do meu programa o usuário tem que inserir -1 em quilômetros e em litros também.Estava querendo que ao inserir -1 em quilômetros ou em litros a execução do programa parasse imediatamente e o resultado fosse exibido.

Obrigado pelo algoritmo davidbuzatto!
E aos por ajudarem também com suas opiniões.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Cap4;

import java.util.Scanner;

/**
 *
 * @author santosmm
 */
public class Quilometragem {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        int quilometro;
        int litros;
        int quilometro_total = 0;
        int litros_total = 0;
        double media;


        Scanner input = new Scanner(System.in);

        System.out.println("Entre com a quilometragem dirigida.");
        quilometro = input.nextInt();
        if (quilometro != 0 && quilometro != -1) {
            quilometro_total += quilometro;
        }
        System.out.println("Entre com a quantidade de combustível consumido.");
        litros = input.nextInt();
        if (litros != 0 && litros != -1) {
            litros_total += litros;
        }

        if (quilometro != 0 && litros != 0) {
            if (quilometro != -1 && litros != -1) {
                media = (double) quilometro / litros;
                System.out.printf("A média de quilômetros/litro é de %.2f\n ", media);
            }
        } else if (quilometro == 0 && litros == 0) {
            System.out.println("Nenhum valor inserido.");
        }


        while (quilometro != -1 && litros != -1) {
            System.out.println("Entre com a quilometragem dirigida.");
            quilometro = input.nextInt();
            if (quilometro != 0 && quilometro != -1) {
                quilometro_total += quilometro;
            }
            System.out.println("Entre com a quantidade de combustível consumido.");
            litros = input.nextInt();
            if (litros != 0 && litros != -1) {
                litros_total += litros;
            }

            if (quilometro != 0 && litros != 0) {
                if (quilometro != -1 && litros != -1) {
                    media = (double) quilometro / litros;
                    System.out.printf("A média de quilômetros/litro é de %.2f\n ", media);
                }
            } else if (quilometro == 0 && litros == 0) {
                System.out.println("Nenhum valor inserido.");
            }

        }
        System.out.printf("O valor da quilometragem combinada é %d e a soma total de litros de combustível consumidos é %d\n", quilometro_total, litros_total);


    }
}
santosmm

E então alguma sugestão?

Criado 23 de dezembro de 2009
Ultima resposta 25 de dez. de 2009
Respostas 9
Participantes 6