Ir ao conteúdo

Posts recomendados

Postado

Preciso que esse código tendo um vetor de tamanho 100 efetue a seguinte somatória S= (v[1] - v[100])³+(v[2] - v[99])³+...+(v[50] - v[51])³ . Usei um for para preenche-lo a partir do primeiro valor, depois outro for efetua a somatória de todos os vetores, o problema é que não importa o primeiro número sempre retorna o mesmo valor.

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

void main(){
       int  i, prim, final;//Declaração de variáveis
       float vet[100], S, a;
       prim = 0;//Define prim como 0, primeira posição do vetor
       final= 99;//Define final como 99, ultima posição do vetor
       i=1; //Define i como 1                   
       printf("Digite o primeiro valor: \n");//Imprime o pedido do número ao usuário
       scanf("%f", &a);//Leitura do número
       vet[0]= a; //Define vet[0] como a, o primeiro número

       for(i=1;i<100;i++){//Preenche o vetor com iguais o anterior subtraindo 2
       vet= a-2.00;
       a = vet;    
       }
       
       for(prim=0; prim<51; prim++)
           for(final=99; final>50; final--){ //Efetua a somatória até que o prim seja 50 e final seja 51
       S = S+pow((vet[prim]-vet[final]),3);
       }
       printf ("\nO resultado e': %f", S); //Retorna o resultado
       }

Postado

@Hugo Roberto B Alves mano refiz um pouco do seu codigo para tirar um pouco da "poluição" no codigo. Então, reveja mais o uso dos laços FOR e como eles funcionam, em casos assim é sempre bom da um printf nos laços para ver o que realmente ta acontecendo. Outra coisa que você ta fazendo é atribuindo um valor (ex: i=1 ... for(i=1;...)) nesse caso a primeira parte do for você já atribui o valor a variavel... bons estudos cara =D

 

#include <stdio.h>
#include <math.h>
#define N 100
int main(void){
  int i;
  float vet[N]={}; //colocar sempre os '{}' para evitar valores aleatorios -ja alocados na memoria- em cada casa do array
  float S, a;
  
  printf("Digite o primeiro valor: \n");
  scanf("%f", &a);
  vet[0]=a; //primeiro espaço ja reservado
  for(i=0;i<N;i++){

    /*aqui somar o primeiro valor 'i+1' para que os valores ja guardados em v[0]/v[i] nao sejam
    sobreposto novamente, lembrando que i esta em 0 então o segundo valor é v[1], ou seja, v[i+1]*/ 
    vet[i+1]=a+2; //a equação é estatica, então os valores serao iguais em todas as casas
    
    printf("%.1f\t", vet[i]);//apenas imprimindo os valores para ver o que acontece no loop e certificar que esta certo
    
    //declado os loops de contagem de cada casa
    for(int prim=0; prim<51; prim++){
      for(int final=99; final>50; final--){
        //S+=pow(...) é o mesmo que S=S+pow(...), porém, de acordo com os livros é uma forma mais dinamica (mais rapida de executar)
        S+=pow((vet[prim]-vet[final]),3); 
      }
    }
  }
  printf ("\nO resultado e': %.2f", S);
  return 0;
}

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!