TOPIC

PROBLEM 1963 - URI Fórum 1.0

beecrowd asked 8 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • gmarini replied 7 years ago

    Olá! O problema pede para que você leia os valores em uma linha. Em C# (e algumas outras linguagens) esse processo precisa ser feito de uma maneira diferente. No seu caso, a entrada pode ser feita da seguinte maneira:

    string[] valores = Console.ReadLine().Split();
    A = Double.Parse(valores[0]);
    B = Double.Parse(valores[1]);

    Além disso, a função matemática Round() vai arredondar seu valor para duas casas decimais somente se as duas ou mais existirem. Repare nos exemplos abaixo:

    Para que o código seja aceito nesse problema, o segundo exemplo (valor b) tem que retornar 15.30, e por isso a função Round() não funciona aqui. Para aplicar a precisão no valor você pode formatar o mesmo, transformando-o em uma string, desta forma:

    Console.Write(c.ToString("0.00") + "%\n");

    assim, ele irá imprimir duas casas após o ponto, independentemente do número de casas do valor original.

    MOD
  • esaboia1 replied 7 years ago

    Olá, fiz o seguinte código:

    using System;
    
    class URI
    {
    
        static void Main(string[] args)
        {
            double A, B;
            A = Convert.ToDouble(System.Console.ReadLine().Trim());
            B = Convert.ToDouble(System.Console.ReadLine().Trim());
            double c = Math.Round((B - A) / A * 100.00, 2);
            Console.Write(c.ToString() + "%\n");
        }
    }

    No entanto está sempre me dando runtime error, alguém sabe o que é? Obrigado!

  • FelipeDerkian replied 7 years ago

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
        float a , b;
        double div =0.0;
        double resp = 0;
        a=0.0;b=0.0;div=0.0;resp=0.0;
        scanf("%f %f",&a,&b);
    
            div = b/a;
            resp = ((div -1)*100);
    
        printf("%.2f%%\n",resp);
    
    }

    alguem pode me ajudar... já testei no debug para dar negativo ou positivo e resultador e esta normal as respostas

    MOD
  • FelipeDerkian replied 7 years ago

    oi tudo bom galera? alguem pode me ajudar esta dando 10% de erro , valeu;

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
        float a , b;
        double div =0.0;
        double resp = 0;
        a=0.0;b=0.0;div=0.0;resp=0.0;
        scanf("%f %f",&a,&b);
        if(a > 0 && a<=b && b<=1000.00){
    
            div = b/a;
            resp = ((div -1)*100);
    
        printf("%.2f%%\n",resp);
    
        }
    }
    MOD
  • leandro.zatesko.alunos replied 8 years ago

    Simples. Nunca utilize float. Com 32 bits você tem muito pouca precisão para trabalhar. Estude um pouco o padrão de representação numérica em ponto flutuante que você vai entender por que.

    Meu conselho: evite usar ponto flutuante sempre que possível. Se realmente necessário, use double.

    Perceba que é perfeitamente possível, neste problema, trabalhar apenas com inteiros, sem precisar de ponto flutuante. Com double também passa (eu, que sou o autor do problema, fi-lo para que double passasse). Mas é um ótimo exercício tentar passá-lo só com inteiros. Fica aí o desafio :)

  • vmazevedo replied 8 years ago

    Galera, já consegui realizar esse exercício. Porém, minha dúvida aqui fica quanto ao uso do float ou do double.

    Compilando meu código aqui no CodeBlocks, deu certo utilizando float, porém usando float aqui no URI o código não é aceito.

    Gostaria de saber qual o motivo e como saber quando devo utilizar o Float ou o Double.

    Grato desde já!!!

  • iprjunior replied 8 years ago

    Accepted Faltava a cereja do bolo! haha

    Obrigado pela dica! Eu sou novo em C++ e não tinha conhecimento do fixed.

  • tiwizard replied 8 years ago

    Use isso para remover a notação cientifica:

    cout << fixed << setprecision(2) << por << endl;

  • iprjunior replied 8 years ago

    [Accepted]

    Galera não sei o que está de errado, tem valores que são impressos certos, outros em notação cientifica e inteiros tb! Já fiz várias modificações, mas nada resolve.

    Agradeço desde já.

  • gsguerra replied 8 years ago

    Obrigado aos dois. Era apenas isso :)

  • azaid0 replied 8 years ago

    use double instead of float.

  • tiwizard replied 8 years ago

    ja tentou usar double ?

  • gsguerra replied 8 years ago

    Sinceramente não sei o que fiz de errado

    Problema resolvido.

    Recebi WA 10%

  • azaid0 replied 8 years ago

    Wrong problem Category..

    Right Category is Beginner.