A maior rede de estudos do Brasil

No visual C++ tem como usar a repetição for dentro da for?


#include "stdio.h"
#include "conio.h"
// faça im programa que calcule a seguite equção S=(37*38)/2(36*37)/2...(1*2)/37
int main()
{
    printf("A solucao da soma eh:\n");
    printf("Soma = ");
    float x,y,z,soma, resultado;
    for( x=1; x<=37 ; x++ )(y=2; y<=38; y++)( && z=37; z=1; z--)
    {
        
        
        resultado+=soma;

        printf("(%d * %d)/%d + ",x,y,z);
    }
        printf("= %d.", resultado);
    getch();
}

me ajudem a sair desse problema!!


4 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Vamos resolver a soma da série proposta usando C++. Inicialmente vamos sanar a dúvida: sim, é possível usar laços aninhados, que é o nome técnico usado para o que quer fazer, masalém de estar fazendo errado, nesse problema isso não é necessário.

Para começar a solução em si, vamos entender a série pedida:


\[S=\dfrac{37\cdot38}1+\dfrac{36\cdot37}2+\cdots+\dfrac{1\cdot2}{37}\]

Perceba que no primeiro termo temos:


\[\eqalign{x&=37 &= 38-1\cr y&=38&=39-1\cr z&=1&=0+1}\]

E no segundo:


\[\eqalign{x&=36 &= 38-2\cr y&=37&=39-2\cr z&=2&=0+2}\]

De forma que no n-ésimo termo teremos:


\[\eqalign{x&=38-n\cr y&=39-n\cr z&=0+n}\]

O que faz com que possaos escrever a série como:


\[S=\sum\limits_{n=1}^{37}\dfrac{(38-n)\cdot(39-n)}{n}\]

Ou em C++:

#include "stdio.h"

#include "conio.h"

// faça im programa que calcule a seguite equção S=(37*38)/1+(36*37)/2+...+(1*2)/37

int main()

{

    printf("A solucao da soma eh:\n");

    printf("Soma = ");

    double resultado=0;

    for(int n=1; n<=37; n++)

    { 

x = 38-n; y = 39-n; z = n;

        resultado += 1.0*x*y/z;

        printf("(%d * %d)/%d + ",x,y,z);

    }

    printf("= %lf", resultado);

    getch();

}

Vamos resolver a soma da série proposta usando C++. Inicialmente vamos sanar a dúvida: sim, é possível usar laços aninhados, que é o nome técnico usado para o que quer fazer, masalém de estar fazendo errado, nesse problema isso não é necessário.

Para começar a solução em si, vamos entender a série pedida:


\[S=\dfrac{37\cdot38}1+\dfrac{36\cdot37}2+\cdots+\dfrac{1\cdot2}{37}\]

Perceba que no primeiro termo temos:


\[\eqalign{x&=37 &= 38-1\cr y&=38&=39-1\cr z&=1&=0+1}\]

E no segundo:


\[\eqalign{x&=36 &= 38-2\cr y&=37&=39-2\cr z&=2&=0+2}\]

De forma que no n-ésimo termo teremos:


\[\eqalign{x&=38-n\cr y&=39-n\cr z&=0+n}\]

O que faz com que possaos escrever a série como:


\[S=\sum\limits_{n=1}^{37}\dfrac{(38-n)\cdot(39-n)}{n}\]

Ou em C++:

#include "stdio.h"

#include "conio.h"

// faça im programa que calcule a seguite equção S=(37*38)/1+(36*37)/2+...+(1*2)/37

int main()

{

    printf("A solucao da soma eh:\n");

    printf("Soma = ");

    double resultado=0;

    for(int n=1; n<=37; n++)

    { 

x = 38-n; y = 39-n; z = n;

        resultado += 1.0*x*y/z;

        printf("(%d * %d)/%d + ",x,y,z);

    }

    printf("= %lf", resultado);

    getch();

}

User badge image

Daniel

Há mais de um mês

#include "stdio.h"
#include "conio.h"
// faça im programa que calcule a seguite equção S=(37*38)/2(36*37)/2...(1*2)/37
int main()
{
    printf("A solucao da soma eh:\n");
    printf("Soma = ");
    float x,y,z,soma, resultado;
    for(x=37, y = 38, z = 1; x>=1, y>=2, z<=37; x--, y--, z++)

{
     soma = (x*y)/z;

     resultado+=soma;

     printf("(%d * %d)/%d + ",x,y,z);

    }
        printf("= %d.", resultado);
    getch();
}

###############

Como você pode ver, não é necessário mais de um for, pois cada elemento do for pode ter mais de um parâmetro. Repare que entre os parâmetros do primeiro elemento (declaração das variáveis) usa-se a vírgula e, após a declaração das mesmas, usa-se o ponto e vírgula para seguir para o próximo elemento do for.

Na segunda parte você vai atribuir o valor da multiplicação (x*y)/z (para cada velor de x, y e z) à variável soma e em seguida somá-la ao valor da variável resultado (que é inicialmente 0, por default). Repare que os valores de x, y e z mudam ao mesmo tempo, a cada 'loop' realizado pelo for.

 

Espero ter solucionado a dúvida!

 

User badge image

Guilherme

Há mais de um mês

O seu programa so teve um erro a variavel resultado não foi declarada antes, logo ela n tem valor quando vc usou ela dentro do laço for "resultado+=soma" o programa não rodou mais se declarar a mesma de fora do laço for (para não zerar), resultado=0;

O programa rodo perfeitamente

User badge image

Guilherme

Há mais de um mês

Mano, obrigado pela a ajuda.

Essa pergunta já foi respondida por um dos nossos especialistas