Jump to content
Fórum Script Brasil
  • 0

programa em C para calcular o valor de S


angelij
 Share

Question

Preciso criar um programinha que faça o cálculo abaixo, tentei diversas vezes, na verdade tem uma semana que estou trabalhando para criar este programinha mas o máximo que consegui foi o desenvolvido abaixo o qual está incorreto pelo fato de não apresentar o resultado certo.

S = 2 / 50 + 2² / 48 + 2³ / 46 + ... + 2²³ / 2

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

main()
{
    int numerador=2, denominador, potencia, dois, s;
    numerador=numerador*2;
    for (numerador = 2; numerador <= 25; ++dois);
        printf("Numerador", numerador);

    for (denominador = 50; denominador >= 2; --dois);

        printf("Denominador", denominador);

 

    for (potencia = 2; potencia = 25; potencia++)
        numerador = numerador * potencia;
        printf("Potencia: %d", numerador);
}

 

 

Me ajudem!

Edited by angelij
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

não sei si é o que você quer >_<

#include<stdio.h>
#include <math.h>

main() {
    //S = 2 / 50 + 2² / 48 + 2³ / 46 + ... + 2²³ / 2
    
    double s = 0;
    
    int i = 50;
    int e = 0;
    while( i>2 ){
       s += pow( (double)2, e++ ) / 50;
       printf ( "%d/%d\n", (int)pow( 2, e-1 ), i  );
       i-=2; 
    }
    printf ( "\ns=%d/%d <-Isso???\n", (int)pow( 2, e-1 ), i  );
    
}

 

Link to comment
Share on other sites

  • 0

Não confie muito no meu programa... Eu tenho quase certeza que ele tem falhos e não esta devolvendo o que você quer. Isso é por causa que eu não sou tão bom matemático como programador XD.
Sobre sua pergunta de como melhorar, eu te diria que si você tem um calculo complexo o melhor sistema é descompor ele num papel anotando os passos e numerando os passos que você ve repetitivos, pense no seu código como passos. No seu exemplo (S = 2 / 50 + 2² / 48 + 2³ / 46 + ... + 2²³ / 2), eu entendi que S vai acumulando o valor de: de cada repetição dessas:
2 elevado a 0 dividido por 50...
//note que do exponente zero ao dois da um salto de 2, porem os seguintes dão saltos de 1 em um... isso me confundiu algo.
2 elevado a 2 dividido por 48... //logo daqui em diante de 1 em 1.
2 elevado a 3 dividido por 46...

O que é que você vai notando??? que o exponencial vai aumentando, de um em um a partir da segunda avaliação(essa parte não entendi) e o dividendo vai reduzindo em 2 até chegar ao 2, essa é a condiçao de parada do loop while:
2 elevado a 23 dividido por 2.

Os passos repetitivos são loops e certamente podem ser resolvidos com um while o um for. Meu conselho é... Descomponha a expressão em partes mais pequenas, faça num papel, vaia anotando em passos como resolver, compare o resultado do papel com o seu código para ver si o resultado coincide.
Si você tiver um grande problema, você divide ele em partes mais pequenas, isso é aplicável a toda a programação. Infelizmente você deve praticar com todas as funções matemáticas para ao menos saber que fazem e poder recorrer a elas quando seja necessário. As funções matemáticas pertencem a math.h, de uma olhada e veja os exemplos. Aqui tem uma descrição em português.

Si você descompor os passos para mim eu posso fazer ele melhor. Minha intenção é que você aprenda a caminhar por suas próprias pernas, espero que tenha sorte ;)

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.1k
×
×
  • Create New...