• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NoOne

Programa simples de gerenciamento dum parque de estacionamento

7 mensagens neste tópico

Exercício 1

Considere que um parque de estacionamento automóvel pretende uma aplicação para ajudar no cálculo do montante a pagar por cada utente, da receita total do dia, do número total de veículos e também o tempo médio de aparcamento.

O parque abre às 6 e encerra às 24horas e todos os carros devem sair até essa hora.

O preço da primeira hora é 1€, a 2ª é 0.80€ e as restantes 0.70E€.

Faça um programa, devidamente modularizado, que esteja constantemente a receber, à saída de cada carro, a hora de entrada ( horas e minutos) e a hora de saída ( horas e minutos), determine o total a pagar. Quando for introduzido hora e minuto de entrada e a hora e minuto de saída, tudo com valores 0, o programa termina indicando a receita total do dia, o número total de veículos aparcados e também o tempo médio de aparcamento.

import javax.swing.JOptionPane;
public class Main {
        
    public static void main(String[] args) {
        
        String e_h,e_m,s_h,s_m;
        int e_hora,e_minuto,s_hora,s_minuto, min_e, min_s,perm,n_horas,ncars;
        double preco,total;
        total=0;
        preco=0;
        ncars=0;
        
        do
        {
             
            
             do
             {
                //Introduçao das Hora / Minutos de Entrada
                e_h=JOptionPane.showInputDialog("Entrada (atençao parque Abre às 6 e fecha às 24h) \nHora: ");
                e_hora=Integer.parseInt(e_h);
                e_m=JOptionPane.showInputDialog("Entrada \nMinutos: ");
                e_minuto=Integer.parseInt(e_m);
        
                 //Introduçao das Hora / Minutos de Saida
                s_h=JOptionPane.showInputDialog("Saida (atençao parque Abre às 6 e fecha às 24h) \nHora: ");
                s_hora=Integer.parseInt(s_h);
                s_m=JOptionPane.showInputDialog("Saida \nMinutos: ");
                s_minuto=Integer.parseInt(s_m);
               
             }[b] while( (e_hora<6) ||(e_hora>24) || (s_hora<e_hora));[/b]
        
        //conversao de horas em minutos
        min_e=(e_hora * 60) + e_minuto;
        min_s=(s_hora * 60) + s_minuto;
                
        //calcular tempo de permanencia no parque
        perm=min_s-min_e; 
        
        // numero de horas no parque
        n_horas= perm / 60;
                
        // se estiver apenas 2 horas no parque
        if ((n_horas ==1) || (perm % 60 != 0))
        {
            preco=1;
        }
       
        if (n_horas == 2)
        { 
           preco=1;
           preco= preco + 0.80;
        }
        
        if (n_horas > 2)
        {
           preco=1; 
           preco = (preco + 0.80) + ((n_horas-2) * 0.70);
        }
        
        //Os minutos apos uma hora inteira
        if ((perm % 60 != 0 ) && (n_horas ==1))
        {
           preco = preco + 0.80;
        }
        if ((perm % 60 != 0 ) && (n_horas >= 2))
        {
           preco = preco + 0.70;
        }
        total=total+preco;
        ncars=ncars+1;
        JOptionPane.showMessageDialog(null,"O gajo esteve: "+n_horas+" e vai pagar: "+preco);
        } while((e_hora!=0) || (e_minuto!=0) || (s_hora!=0) || (s_minuto!=0));
        
        
       
        ncars=ncars--;
        JOptionPane.showMessageDialog(null,"Hoje rendeu: "+total+" passaram por aki: "+ncars);
        
        
        System.exit(0);
    }
}

Estou com dificuldades em controlar se a hora introduzida é superior a 6 e inferior a 24, porque se a hora / minutos forem todas iguais a zero o programa é suposto encerrar :S

Alguma alma caridosa pode dar uma maozinha?

PS: já agora, como se faz um menu em java?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para começar, quando puseres código, usa a ferramenta GeSHi para ficar o código mais legível, com corzinhas e tal...

Passando ao teu problema, podes colocar um if logo no início do while em que se as horas e os minutos forem todos 0 o ciclo while pára. (Caso não saibas, tens o break; que faz isso mesmo).

Quanto ao menu, não te posso ajudar porque nunca mexi em swing, só aplicações de consola.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse tipo de cenas: breaks, gotos, e isso ... n sao contra um boa estruturaçao dum programa? :-[

PS: ya funciona, devia ter pensado nisso antes :P.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mudei o teu post para a ferramenta geshi!

Eu fazia uma condição se horas ou minutos forem 0 ele n faz nada e faz um output a acusar o erro se nao arranca para as conversoes.!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lalala :B

por acaso ja resolvi os exercicios quase todos, so um promenor ou outro :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora