1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ajuda urgernte para iniciante

Discussão em 'Programação' iniciada por Madruga, 30 de Novembro de 2006. (Respostas: 8; Visualizações: 905)

  1. Madruga

    Madruga Power Member

    Boas

    Comecei este ano a dar c++ e preciso de uma ajudar enorme, isto pk este exercicio saiu no teste e td a gente teve ele mal, e como as notas n foram grande coisa ele deu a oportunidade de fazer-mos ele outra x, tenhu q entraga-lo 2ª e o exercicio consta o seguinte:

    Elabore um programa em C++, que leia o numero de minutos decorridos desde a meia noite e mostre esse numero no formato horas:minutos. Por exemplo se o numero lido for 515 deve ser mostrado 8:35, se o numero for 1335 deve ser mostrado 22:15. Tenha atenção que o dia tem 1440minutos.

    Bem, eu no teste não tive tempo para o fazer, mas mesmo que consigo n consigo pegar nele =( alguem pode faze-lo? pFF este exercicio vale 3 valores :)

    cumpz
    madruga
     
  2. K0mA

    K0mA Power Member

    Não percebo nada de C++ mas se dividires os 515 por 60 minutos obterás 8,5833333333333333333333333333333 horas.

    Agora era pegar neste valor e dizer que as horas são 8(a parte inteira).
    Quanto aos minutos (a parte decimal) terias de fazer:

    0,5833333333333333333333333333333 x 60 minutos = 35 min.
    ou seja se o numero for 515 então passaram 8:35 min.

    Serviu para ajudar?
     
    Última edição: 30 de Novembro de 2006
  3. Madruga

    Madruga Power Member

    essa é a logica do problema! :) essa raciocinio ta certo o prob é que não consigo fazer o programa :'( comecei o c++ a 10 aulas e n m dou bem, vou ler tuturias para ver bem como é isto... mas alguem pode-me resolver o programa sff? :)
     
  4. HecKel

    HecKel The WORM

    Darem-te a solução não te vai ajudar em nada.

    Mas se queres obter a parte décimal, dou-te uma pista:

    procura ajuda por uma função de truncatura
    trunca o valor que obtens
    subtrai o valor original a esse valor truncado
    ficas com a parte décimal.

    abraços, HecKel
     
  5. Madruga

    Madruga Power Member

    Boas

    Ao fim de andar a tentar... cheguei a esta conclusão:

    #include <iostream>;
    using namespace std;
    main ()
    {
    int M,h,min;
    cout<<"introduza o numero de minutos decorridos(Max:1440)";
    cout<<'\n';
    cin >>M; // O M é o numero de minutos introduzidos
    h=M/60; // O h é o numero de horas
    min=M%60; // O min é o numero de minutos
    if(M>=0 && M<=1440)cout<<h <<":" <<min <<" horas";
    else if(M>1440)cout<<"introduza um valor menor a 1440";
    else if(M<0)cout<<"introduza um valor superior a 0";
    cout <<'\n';
    }

    o que acham? tabom? o que preciso mudar para correr ainda melhor? :)
     
  6. Madruga

    Madruga Power Member

    opiniões?...
     
  7. JGAlmeida

    JGAlmeida Folding Colaborator

    Boas.

    Não percebo de c mas assim por alto diria que devias testar se o parametro está dentro dos limites antes de fazeres os calculos, e talvez fazer os calculos logo na linha (se é que isso é possivel), tipo isto:

    if (M>=0 && M<=1440) cout<< M/60 <<":" << M%60 <<" horas";
    else if (M>1440) cout<<"introduza um valor menor a 1440";
    else if (M<0)cout<<"introduza um valor superior a 0";
    cout <<'\n';

    EDIT: Quase nem reparava, isso dá-te o num de minutos mal. Lê o post do KOMA, que já estás quase lá. o M%60 já te dá o resto da divisão
     
    Última edição: 3 de Dezembro de 2006
  8. Madruga

    Madruga Power Member

    não percebi bem essa parte do koma... alguem pode alterar então o programa sff? :D
     
  9. eddyjay

    eddyjay 1st Folding then Sex


    Tens de multiplicar M%60 por 60 para te dar os numero de minutos... dá um numero inteiro se for introduzido um inteiro, mas se for introduzido um float pode dar qq coisa como 35.15 minutos, que não interessa por isso fazes qq coisa como abs((M%60)*60)
     

Partilhar esta Página