Ir ao conteúdo
  • Cadastre-se
Hugo Roberto B Alves

Resultado sempre igual

Recommended Posts

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
       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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;
}

 

Editado por rjort_nine
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×