Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×