JakeBass Posted June 13, 2015 at 06:08 AM Report #584758 Posted June 13, 2015 at 06:08 AM (edited) podem-me dar alguma dica para definir o nº de casas decimais? queria fazer isto sem utilizar strings ou funções pre-definidas. int calculatePi(int n_digits) { long double scale = 1; for( int a = 1; a < n_digits; a = a + 1 ) { int d_factor = pow(10, a); scale = scale / d_factor; } long double value = (pi / scale) * scale; return value; } Edited June 13, 2015 at 09:32 AM by apocsantos geshi
HappyHippyHippo Posted June 13, 2015 at 09:35 AM Report #584760 Posted June 13, 2015 at 09:35 AM tens uma função que retorna um inteiro e depois colocar um long double como valor de retorno ? além disso, perguntas como "definir o nº de casas decimais", mas definir como ? em programação isso não funciona assim tens de ser mais claro no que enquadra o problema IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
JakeBass Posted June 13, 2015 at 09:55 AM Author Report #584761 Posted June 13, 2015 at 09:55 AM (edited) obrigado, era isso e o loop. é um exercicio na command line: introduz-se o nº de dígitos, e retorna o valor de pi. long double calculatePi(int n_digits) { long double scale = 1; int d_factor; for( int a = 1; a < n_digits; a = a + 1 ) { d_factor = pow(10, a); } scale = scale / d_factor; long double value = (pi / scale) * scale; return value; } Edited June 13, 2015 at 07:13 PM by apocsantos geshi
HappyHippyHippo Posted June 13, 2015 at 01:37 PM Report #584766 Posted June 13, 2015 at 01:37 PM Onde viste essa forma de calcular o pi? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
JakeBass Posted June 13, 2015 at 02:39 PM Author Report #584770 Posted June 13, 2015 at 02:39 PM pois, coloquei o pi numa constante e a função apenas filtra pelo nº de digitos. Seria interessante acrescentar o cálculo de pi. o exercicio está neste link: https://github.com/karan/Projects tem lá outras soluções
soniculture Posted June 28, 2015 at 03:56 PM Report #585500 Posted June 28, 2015 at 03:56 PM Olá Sketxz, Antes de mais acho que estás a abordar mal o problema à partida. O objectivo deste problema é usares strings, algo que à partida descartas. Ou seja, o objectivo deste tipo de problema é teres um número tão mas tão grande que não o consegues representar com inteiros. Para isso tens que usar Strings ou Strings decimais como normalmente se referem neste tipo de problemas. Caso contrário não tem grande ciência. Algumas notas: long double value = (pi / scale) * scale; // qual o objectivo???? Não escrevas isto assim: for( int a = 1; a < n_digits; a = a + 1 ) Escreve assim: for( int a = 1; a < n_digits; a++ ) Existe um livro excelente chamado Programação com Classes em C++ da FCA onde tes a resolução deste problema!!! Cumprimentos.
HappyHippyHippo Posted June 28, 2015 at 04:51 PM Report #585510 Posted June 28, 2015 at 04:51 PM O objectivo deste problema é usares strings, algo que à partida descartas. como podes ter tanta a certeza sobre esse ponto ? estudas no mesmo local ? é que quando uma pessoa diz à cabeça que um método não pode ser utilizado é mais normal ser uma imposição do que falta de conhecimento IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
soniculture Posted June 28, 2015 at 05:13 PM Report #585515 Posted June 28, 2015 at 05:13 PM Por e simplesmente porque o problema se torna de certa forma trivial! É um exercício típico de programação com strings... Só por isso!
HappyHippyHippo Posted June 28, 2015 at 05:35 PM Report #585517 Posted June 28, 2015 at 05:35 PM mas o problema é estares a impor uma suposição sobre o problema. o que deverias ter feito não era descartar por completo a afirmação do criador do tópico, mas sim questionar/duvidar da restrição apresentada e perguntar de onde vem essa impossibilidade IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
soniculture Posted June 28, 2015 at 05:58 PM Report #585518 Posted June 28, 2015 at 05:58 PM Bah... eu não impus nada!!!! Só disse que estava a abordar mal o problema e em minha opinião está.. só isso! A intenção é ajudar e sinceramente acho que ajudar também é dar opinião sobre o método de resolução e não só sobre o código. Mas registei a tua dica! Obrigado 🙂 Aliás PI calcula-se através de uma sucessão... o que até dá jeito para programar!!! Só para dar atirar mais uma farpa...
h9armando Posted December 26, 2015 at 12:15 AM Report #591051 Posted December 26, 2015 at 12:15 AM Nada de flame wars! Eu não entendo porque é que o OP não quer usar strings, mas se impõe isso, tudo bem.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now