TOPIC
PROBLEM 1963 - URI Fórum 1.0
This topic was solved and cannot recieve new replies.
-
gmarini replied 7 years ago
MODOlá! 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.
-
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
MOD#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
-
FelipeDerkian replied 7 years ago
MODoi 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); } }
-
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.
-
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
Sinceramente não sei o que fiz de errado
Problema resolvido.
Recebi WA 10%