Gerenciamento de um estacionamento

/* Contem pequenos bugs ;D enjoy*/
#include <stdio.h>
#include <stdlib.h>

/// Função que calcula o valor do disconto que sera aplicado a cada veiculo
float disconto(int tipo,float valor)
{
    float disconto;

    switch(tipo)
    {
        case 1:
            disconto =(valor*10)/100;
            break;
        case 2:
            disconto =(valor*5)/100;
            break;
        case 3:
            disconto =(valor*3)/100;
            break;
        case 4:
            disconto =(valor*2)/100;
            break;
        case 5:
            disconto =(valor*1)/100;
            break;
    }
    return disconto;
}

///Calcula o valor total com disconto (função desnecessaria mas esta aqui só pra evitar contas na main)
float totalcdisc(float Vtotal,float VtotalDisc){

    float ValorTotalCDisconto;
    ValorTotalCDisconto=Vtotal-VtotalDisc;
    return ValorTotalCDisconto;
}

/// Função que calcula o tempo em minutos
int tempo(int hora0){
    int tempototal;
    int min0,horaf,minf,auxmin,auxh;

    printf(" Min  Inicial :");
    scanf("%d",&min0);
    system("cls");///  system("cls") limpa a tela

    printf("\n Hora Final   :");
    scanf("%d",&horaf);

    printf(" Min  Final   :");
    scanf("%d",&minf);

    if(minf-min0<0)/// O valor em minutos tem que ser sempre positivo,caso o inicial seja maior que final este if corrige o erro
        auxmin=(minf-min0)*(-1);
    else
        auxmin=(minf-min0);
    if(horaf-hora0<0)
        auxh=(horaf-hora0)*(-1);
    else
        auxh=(horaf-hora0);

    tempototal=(auxh)*60 + auxmin;/// Este comando Decompoe as horas em minutos

    system("cls");
    return tempototal;
}

/// Função que le o tipo de veiculo selecionado
int tipo(){
    int tipo;
    printf("\n ESCOLHA O TIPO DE VEICULO :\n =========================\n\n");
    printf(" 1. Bicicleta\n 2. Moto \n 3. Carro \n 4. Van \n 5. Caminhao\n\n");
    printf(" Tipo :");
    scanf("%d",&tipo);

    if(tipo<1||tipo>5)
    {
        system("cls");
        printf("\n TIPO DE VEICULO INVALIDO !!! ");
        printf("\n Escolha o tipo de veiculo:\n =========================\n");
        printf(" 1. Bicicleta\n 2. Moto \n 3. Carro \n 4. Van \n 5. Caminhao\n\n");
        printf(" Tipo :");
        scanf("%d",&tipo);

        while(tipo<1||tipo>5)
        {
            system("cls");
            printf("\n TIPO DE VEICULO INVALIDO !!! ");
            printf("\n Escolha o tipo de veiculo:\n =========================\n");
            printf(" 1. Bicicleta\n 2. Moto \n 3. Carro \n 4. Van \n 5. Caminhao\n\n");
            printf(" Tipo :");
            scanf("%d",&tipo);
        }
    }

    return tipo;
}

///Função que calcula o valor
float total(int tempo,int tipo)
{
    float valor; /// Valor total sem disconto
    float valormin,valorh;

    valormin = tempo%60;/// Pega os minutos
    valorh =(int)(tempo/60);/// Pega a parte inteira da divisao do tempo por 60 (ou seja, só as horas)

    switch(tipo)
    {
        case 1:
        {
            /// Tempo fracionado em intervalos de 15 min
            if(tempo<=15)
                valor=0.1;
            else if (tempo>15&&tempo<=30)
                valor=0.2;
            else if (tempo>30&&tempo<=45)
                valor=0.4;
            else if (tempo>45&&tempo<=60)
                valor=0.5;
            else if (tempo>60)
            {
                if(valormin==0) /// Cobra o valor de horas caso min = 0 (hora exata)
                    valor=((tempo/60)*0.5);

                else if(valormin<=15)
                    valor=(valorh)*0.5+(0.1);

                else if (valormin>15&&valormin<=30)
                    valor=(tempo/60)*0.5+(0.2);

                else if (valormin>30&&valormin<=45)///Acima de 45 min é cobrado o Valor de 1h
                    valor=(tempo/60)*0.5+(0.4);
            }
            break;
        }

        case 2:
        {
            if(tempo<=15)
                valor=0.5;
            else if (tempo>15&&tempo<=30)
                valor=1.0;
            else if (tempo>30&&tempo<=45)
                valor=1.5;
            else if (tempo>45&&tempo<=60)
                valor=2.0;

            /// Caso o tempo seja superior a 45 min
            else if (tempo>60)
            {
                if(valormin==0)
                    valor=((tempo/60)*2);

                else if(valormin<=15)
                    valor=(valorh)*2+(0.5);

                else if (valormin>15&&valormin<=30)
                    valor=(tempo/60)*2+(1);

                else if (valormin>30&&valormin<=45)
                    valor=(tempo/60)*2+(1.5);

            }
            break;
        }

        case 3:
        {  /// Tempo fracionado em intervalos de 15 min
            if(tempo<=15)
                valor=2;
            else if (tempo>15&&tempo<=30)
                valor=3;
            else if (tempo>30&&tempo<=45)
                valor=4;
            else if (tempo>45&&tempo<=60)
                valor=5;

            /// Caso o tempo seja superior a 45 min
            else if (tempo>60)
            {
                if(valormin==0)
                    valor=((tempo/60)*5);

                else if(valormin<=15)
                    valor=(valorh)*5+(2);

                else if (valormin>15&&valormin<=30)
                    valor=(tempo/60)*5+(3);

                else if (valormin>30&&valormin<=45)
                    valor=(tempo/60)*5+(4);

            }
            break;
        }

        case 4:
        {  /// Tempo fracionado em intervalos de 15 min
            if(tempo<=15)
                valor=5;
            else if (tempo>15&&tempo<=30)
                valor=6;
            else if (tempo>30&&tempo<=45)
                valor=7;
            else if (tempo>45&&tempo<=60)
                valor=8;

            /// Caso o tempo seja superior a 45 min
            else if (tempo>60)
            {
                if(valormin==0)
                    valor=((tempo/60)*8);

                else if(valormin<=15)
                    valor=(valorh)*8+(5);

                else if (valormin>15&&valormin<=30)
                    valor=(tempo/60)*8+(6);

                else if (valormin>30&&valormin<=45)
                    valor=(tempo/60)*8+(7);

            }
            break;
        }

        case 5:
        {
            if(tempo<=15)
                valor=9;
            else if (tempo>15&&tempo<=30)
                valor=10;
            else if (tempo>30&&tempo<=45)
                valor=11;
            else if (tempo>45&&tempo<=60)
                valor=12;

            /// Caso o tempo seja superior a 45 min
            else if (tempo>60)
            {
                if(valormin==0)
                    valor=((tempo/60)*12);

                else if(valormin<=15)
                    valor=(valorh)*12+(9);

                else if (valormin>15&&valormin<=30)
                    valor=(tempo/60)*12+(10);

                else if (valormin>30&&valormin<=45)
                    valor=(tempo/60)*12+(11);
            }
            break;
        }
    }
    return valor;
}
///
int main()
{
    /// Variaveis totais

    /// hora inicial,tipo de veiculo,tempo em mins e contador de veiculos
    int h0,tempototal,veiculos=0,somatempo=0;
    float mediatempo;
    /// tipo de veiculo
    int tipoveiculo;
    /// Variaveis para valor total
    float valor,valortotal=0,totalCd,valormedio;
    /// Variaveis para trabalhar com disconto
    float valordisconto,valorCd,totalDisc=0;

    /// Variaveis por tipo

    /// Contadores
    int cont1=0,cont2=0;
    int cont3=0,cont4=0,cont5=0;

    /// Soma total por tipo
    float valorsomatipo1=0,valorsomatipo2=0;
    float valorsomatipo3=0,valorsomatipo4=0,valorsomatipo5=0;

    /// Valor total de discontos
    float valortotaldiscontotipo1=0,valortotaldiscontotipo2=0;
    float valortotaldiscontotipo3=0,valortotaldiscontotipo4=0,valortotaldiscontotipo5=0;

    /// Total com disconto (total-disconto)
    float valortotalcomdisctipo1,valortotalcomdisctipo2;
    float valortotalcomdisctipo3,valortotalcomdisctipo4,valortotalcomdisctipo5;

    /// Soma do tempo por tipo
    float somatempotipo1=0,somatempotipo2=0;
    float somatempotipo3=0,somatempotipo4=0,somatempotipo5=0;

    /// Media do tempo por tipo
    float mediatempotipo1=0,mediatempotipo2=0;
    float mediatempotipo3=0,mediatempotipo4=0,mediatempotipo5=0;

    /// Cansei de comentar essa merda a variavel ta intuitiva kkkk
    float valormediotipo1=0,valormediotipo2=0;
    float valormediotipo3=0,valormediotipo4=0,valormediotipo5=0;

        printf("\n Entre com a hora inicial\n");
        printf(" Hora inicial :");
        scanf("%d",&h0);

        while(h0>0)
        {
            tempototal=tempo(h0); /// Calcula o tempo total em mins
            somatempo+=tempototal;/// Acumula o tempo Total
            tipoveiculo = tipo(); /// Le o tipo de veiculo
            veiculos++;           /// Contador para veiculos (numero total)
            valor=total(tempototal,tipoveiculo);/// Valor a ser pago sem disconto
            valortotal=valortotal+valor;        /// Acumula o valor total sem disconto

            if(tempototal>=120)
            {
                valordisconto=disconto(tipoveiculo,valor);/// Função que calcula Disconto por tipo
                valorCd=valor-valordisconto;              /// Valor com disconto
                totalDisc+=valordisconto;                 /// Acumula o Valor do disconto
            }

            switch(tipoveiculo)
            {
                case 1:
                    cont1++;///...................................... Contador por tipo
                    valorsomatipo1+=valor;///........................ Acumula tempo por tipo
                    valortotaldiscontotipo1+=valordisconto;///....... Valor total do disconto para o tipo X
                    somatempotipo1+=tempototal;///................... Soma do tempo por tipo
                    break;
                case 2:
                    cont2++;
                    valorsomatipo2+=valor;
                    valortotaldiscontotipo2+=valordisconto;
                    somatempotipo2+=tempototal;
                    break;
                case 3:
                    cont3++;
                    valorsomatipo3+=valor;
                    valortotaldiscontotipo3+=valordisconto;
                    somatempotipo3+=tempototal;
                    break;
                case 4:
                    cont4++;
                    valorsomatipo4+=valor;
                    valortotaldiscontotipo4+=valordisconto;
                    somatempotipo4+=tempototal;
                    break;
                case 5:
                    cont5++;
                    valorsomatipo5+=valor;
                    valortotaldiscontotipo5+=valordisconto;
                    somatempotipo5+=tempototal;
                    break;
            }
            printf(" \n\n Hora inicial :");
            scanf("%d",&h0);
        }
    system("cls");

    /// Calculos finais

    totalCd=totalcdisc(valortotal,totalDisc); /// Valor total com disconto
    mediatempo=somatempo/veiculos;            /// Media do tempo total
    valormedio=totalCd/veiculos;              /// Valor total medio

    printf("\n ============= RESUMO GERAL =============\n");
    printf("\n Valor total......................R%c   %.2f",36,valortotal);
    printf("\n Total Veiculos...................     %d",veiculos);
    printf("\n Valor total com disconto.........R%c   %.2f",36,totalCd);
    printf("\n Tempo Medio .....................Mins %.2f ",mediatempo);
    printf("\n Valor Medio......................R%c   %.2f \n",36,valormedio);
    printf("\n ========================================");

    valortotalcomdisctipo1= valorsomatipo1-valortotaldiscontotipo1; /// Valor total com disconto tipo X
    if(cont1) /// Caso o contador seja diferente de 0 , calcula-se a media (evita divisao por 0)
    {
        mediatempotipo1=somatempotipo1/cont1;
        valormediotipo1=valortotalcomdisctipo1/cont1;
    }

    printf("\n Total de Bicicletas  %d ",cont1);
    printf("\n Valor total sem disconto R%c  %.2f",36,valorsomatipo1);
    printf("\n Valor total com disconto R%c  %.2f",36,valortotalcomdisctipo1);
    printf("\n Valor total de descontos R%c  %.2f",36,valortotaldiscontotipo1);
    printf("\n Tempo medio veiculos     min %.2f",mediatempotipo1);
    printf("\n Valor Medio veiculos     R%c  %.2f  ",36,valormediotipo1);

    printf("\n=================================================\n");

//=====================================================================================

    valortotalcomdisctipo2 = valorsomatipo2-valortotaldiscontotipo2;
    if(cont2)
    {
        mediatempotipo2 = somatempotipo2 / cont2;
        valormediotipo2 = valortotalcomdisctipo2/cont2;
    }

    printf("\n Total de Motos  %d ",cont2);
    printf("\n Valor total sem disconto R%c  %.2f",36,valorsomatipo2);
    printf("\n Valor total com disconto R%c  %.2f",36,valortotalcomdisctipo2);
    printf("\n Valor total de descontos R%c  %.2f",36,valortotaldiscontotipo2);
    printf("\n Tempo medio veiculos     min %.2f",mediatempotipo2);
    printf("\n Valor Medio veiculos     R%c  %.2f  ",36,valormediotipo2);

    printf("\n=================================================\n");

//=====================================================================================

    valortotalcomdisctipo3= valorsomatipo3-valortotaldiscontotipo3;
    if(cont3)
    {
        mediatempotipo3=somatempotipo3/cont3;
        valormediotipo3=valortotalcomdisctipo3/cont3;
    }
    printf("\n Total de Carros  %d ",cont3);
    printf("\n Valor total sem disconto R%c  %.2f",36,valorsomatipo3);
    printf("\n Valor total com disconto R%c  %.2f",36,valortotalcomdisctipo3);
    printf("\n Valor total de descontos R%c  %.2f",36,valortotaldiscontotipo3);
    printf("\n Tempo medio veiculos     min %.2f",mediatempotipo3);
    printf("\n Valor Medio veiculos     R%c  %.2f  ",36,valormediotipo3);

    printf("\n=================================================\n");

//=====================================================================================

    valortotalcomdisctipo4= valorsomatipo4-valortotaldiscontotipo4;
    if(cont4)
    {
        mediatempotipo4=somatempotipo4/cont4;
        valormediotipo4=valortotalcomdisctipo4/cont4;
    }

    printf("\n Total de Vans  %d ",cont4);
    printf("\n Valor total sem disconto R%c  %.2f",36,valorsomatipo4);
    printf("\n Valor total com disconto R%c  %.2f",36,valortotalcomdisctipo4);
    printf("\n Valor total de descontos R%c  %.2f",36,valortotaldiscontotipo4);
    printf("\n Tempo medio veiculos     min %.2f",mediatempotipo4);
    printf("\n Valor Medio veiculos     R%c  %.2f  ",36,valormediotipo4);
    printf("\n=================================================\n");

//=====================================================================================

    valortotalcomdisctipo5= valorsomatipo5-valortotaldiscontotipo5;
    if(cont5)
    {
        mediatempotipo5=somatempotipo5/cont5;
        valormediotipo5=valortotalcomdisctipo5/cont5;
    }
    printf("\n Total de Caminhoes  %d ",cont5);
    printf("\n Valor total sem disconto R%c  %.2f",36,valorsomatipo5);
    printf("\n Valor total com disconto R%c  %.2f",36,valortotalcomdisctipo5);
    printf("\n Valor total de descontos R%c  %.2f",36,valortotaldiscontotipo5);
    printf("\n Tempo medio veiculos     min %.2f",mediatempotipo5);
    printf("\n Valor Medio veiculos     R%c  %.2f  ",36,valormediotipo5);
    printf("\n=================================================\n");

//=====================================================================================
    system("pause");
    return 0;
}

 

Rodolfo Moretto


HOT NA SEMANA

C, Ordenar um Vetor em Ordem Crescente

CSS, Efeito clarear e escurecer em CSS

C, Programa Números em Ordem Crescente

C++, Tabuada com código super simples







© Copyright 2017 - INFORMATICODE, todos os direitos reservados.