problema na logica

1. problema na logica

ly
redunicorn

(usa Outra)

Enviado em 18/10/2016 - 22:37h

//questão: faça um programa que leia um valor n, inteiro e calcule e mostre a seguinte soma s=1 + 1/2 + 1/3 + 1/4 + .... + 1/n
#include<stdlib.h>
#include<stdio.h>
int main()
{
int i, num;
float soma;
printf("digite um numero inteiro: \n");
scanf("%d",&num);
soma=0;
for(i=1;i<=num;i++)
{soma=1+1/i;
}
printf("a soma e: %f \n",soma);
system("pause");
return 0;
}
// o resultado esta sempre dando o mesmo número


  


2. Re: problema na logica

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2016 - 22:54h

A lógica é essa:

1. Calcule o MMC de todos os números entre 1 e N;
2. Divida a resposta do item 1 por cada um dos valores entre 1 e N (um a um);
3. Após dividir, multiplique cada resposta por seu "1" respectivo;
4. Por fim, divida o numerador final pelo denominador final;


3. Re: problema na logica

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 18/10/2016 - 22:54h

não sei como funciona em C, mas, na matemática é "s + (x / y)", pois primeiro é a divisão e depois a soma. Por favor corrijam-me se eu estiver errado fiquei curioso também.





______________________________________________________________________
OS: Kali Linux kali-rolling kali-rolling
Kernel: x86_64 Linux 4.6.0-kali1-amd64
Resolution: 2390x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB


4. Re: problema na logica

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2016 - 23:02h

ctw6av escreveu:

não sei como funciona em C, mas, na matemática é "s + (x / y)", pois primeiro é a divisão e depois a soma. Por favor corrijam-me se eu estiver errado fiquei curioso também.


Está certo, mas no caso é uma soma de frações, neste tipo: 1/1 + 1/2 + 1/3 + ... + 1/n; para resolver como você disse, poderia usar-se um somatório (que no C seria implementado por um laço for). Eu usei a lógica da soma de frações (resumida no primeiro post). O mais complicado seria tirar o MMC dos números (1o. passo)


5. Re: problema na logica

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2016 - 23:02h

PS. "system(pause)" não funciona no Linux!


6. Re: problema na logica

ly
redunicorn

(usa Outra)

Enviado em 18/10/2016 - 23:12h

unnslacker escreveu:

A lógica é essa:

1. Calcule o MMC de todos os números entre 1 e N;
2. Divida a resposta do item 1 por cada um dos valores entre 1 e N (um a um);
3. Após dividir, multiplique cada resposta por seu "1" respectivo;
4. Por fim, divida o numerador final pelo denominador final;

---
~$ seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l


Está dando errado porque não estou calculando o MMC??




7. Re: problema na logica

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2016 - 23:15h

Sim, e você está somando apenas dois números: o "1" com o "1/i" (não está incrementando as somas)


8. Re: problema na logica

Paulo Jr
Pebis

(usa Debian)

Enviado em 18/10/2016 - 23:20h

declara o int i como float i;
Inicia a variável soma com 1 (float soma =1)
dentro do for faz assim:

soma=soma + (1/i);


9. Re: problema na logica

Paulo Jr
Pebis

(usa Debian)

Enviado em 18/10/2016 - 23:30h

//questão: faça um programa que leia um valor n, inteiro e calcule e mostre a seguinte soma s=1 + 1/2 + 1/3 + 1/4 + .... + 1/n

#include<stdlib.h>
#include<stdio.h>
int main()
{
int num=0;
float soma=1, i=1; ///////declara i como float e inicializa as variáveis

printf("digite um numero inteiro: \n");
scanf("%d",&num);

for(i=1;i<=num;i++)
{
soma=soma + (1/i); /////////// Incrementa a variável soma com a fração
}
printf("a soma e: %f \n",soma);
// system("pause"); ////////////////////// removido pois não existe no Linux
getchar(); /////////// serve para pausar
return 0;
}




10. Re: problema na logica

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2016 - 23:31h

Pebis escreveu:

declara o int i como float i;
Inicia a variável soma com 1 (float soma =1)
dentro do for faz assim:

soma=soma + (1/i);


Ai tira a graça! ;)
Fazer por MMC é mais emocionante; mas por somatório, além de estar certo também, é melhor, mais simples e rápido


11. Re: problema na logica

Paulo Jr
Pebis

(usa Debian)

Enviado em 18/10/2016 - 23:37h

unnslacker escreveu:

Pebis escreveu:

declara o int i como float i;
Inicia a variável soma com 1 (float soma =1)
dentro do for faz assim:

soma=soma + (1/i);


Ai tira a graça! ;)
Fazer por MMC é mais emocionante; mas por somatório, além de estar certo também, é melhor, mais simples e rápido

---
~$ seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l


kkkkkk, uma hora dessa eu não consigo nem somar 1+1 sem calculadora, imagina lembrar que existia MMC


12. Re: problema na logica

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/10/2016 - 23:43h

Pebis escreveu:

unnslacker escreveu:

Pebis escreveu:

declara o int i como float i;
Inicia a variável soma com 1 (float soma =1)
dentro do for faz assim:

soma=soma + (1/i);


Ai tira a graça! ;)
Fazer por MMC é mais emocionante; mas por somatório, além de estar certo também, é melhor, mais simples e rápido

---
~$ seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l


kkkkkk, uma hora dessa eu não consigo nem somar 1+1 sem calculadora, imagina lembrar que existia MMC


kkkkk certo! eu falei no MMC porque ele falou em usar integer e usando a ideia que postei no primeiro post (aliás, esqueci de dizer que no quarto passo a conta deve ser feita num float) seria possível fazê-la numa integer (dividir o MMC dos denominadores pelos próprios denominadores sempre dará um número inteiro), sem precisar incrementar as respostas num for (que necessita de um float);

Acho que entendi errado a pergunta e deixei de perguntar isso, kkkkk






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts