Ir para conteúdo
Fórum Script Brasil
  • 0

Encontrar o valor do meio de um conjunto de Valores


FranSel

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0

Apenas uma quantidade de elementos impar terá um elemento exatamente no meio. Fique ciente disto.

Para ter o elemento do meio de um vetor com um número impar de elementos

vetor[n/2+1];

Onde n (int) é o número de elementos.

Editado por mJi
Link para o comentário
Compartilhar em outros sites

  • 0

Oi, sim tenho consciência sim..

Mas você pode me dar um exemplo mais claro, não é simplesmente criar este vetor:

O meu código inicial é esse:

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


main()
{
   float Vetor[100];
   float Mediana =0, Soma=0;
   //FILE *arquivovalores;
   int i, Valores;
   printf("-- Calculo da Mediana --");
   printf("\n");
   printf("Informe quantos valores deseja verificar: ");
   scanf("%i",&Valores);  
   printf("\n");
   
   for(i=0;i<Valores;i++)
        {
             printf("\nInforme o %i valor: ", i);
             scanf("%f", &Vetor[i]);  
                            
        } 
    
    
    
    printf("O valor da mediana e: %2.5f", Mediana );     
     
   getchar();
   getchar();
   system("pause");        
          
}

Só falta calcular a mediana....

Fico aguardando se puder me ajudar.. e mais uma vez agradeço a ajuda.... :blush:

Link para o comentário
Compartilhar em outros sites

  • 0

Está se esquecendo de uma coisa importante: O cálculo de mediana indica qual número está com a mesma quantidade de elementos acima e abaixo. Para isto, é necessário que eles estejam ordenados.

Ainda, caso haja um número par de elementos, deve-se usar a média aritmética dos dois elementos centrais.

Sobre seu código...

Declare um tipo para a função principal;

Prefira %d para a leitura e impressão de inteiros.

Ah, e como você está utilizando um vetor, tem de se cuidar por causa do índice zero. Aquele n/2+1 não se aplica neste caso.

Fica mais ou menos assim:

#include <stdio.h>

int main(){

   float vetor[100], mediana, aux;
   int i, j, valores;

   printf("-- Calculo da Mediana --\n");
   do{
        printf("Informe quantos valores deseja verificar: ");
        scanf("%d",&valores);
    } while(valores >= 100);

    for(i=0;i<valores;i++){
        printf("\nInforme o valor %d: ", i+1);
        scanf("%f", &vetor[i]);
    }

    for(i=0;i<valores;i++){
        for(j=0;j<valores;j++){
            if(vetor[i] < vetor[j]){
                aux = vetor[i];
                vetor[i] = vetor[j];
                vetor[j] = aux;
            }
        }
    }
    
    if(valores%2){
        mediana = vetor[valores/2];
    } else {
        mediana = (vetor[valores/2-1]+vetor[valores/2])/2;
    }

    printf("\nO valor da mediana e: %2.2f\n", mediana);
    system("pause");
    return(0);
}

Link para o comentário
Compartilhar em outros sites

  • 0

Não FranSel, este allgoritmo que lhe passei calcula a mediana, preste atenção nele.

A média aritmética é a soma de todos os elementos dividida pela quantidade de elementos. Em nenhum momento fiz isto no algoritmo que passei.

Veja ele novamente...

Entrada da quantidade de valores -> Entrada dos valores -> Ordenação dos mesmos -> Atribui á variável 'mediana' o valor que está exatamente no centro do vetor (ou a média aritmética dos dois centrais, caso haja um número par de elementos) -> Exibição da mediana.

Link para o comentário
Compartilhar em outros sites

  • 0

so funciona com numeros impares, você vai ter que criar uma condição para no caso se forem 10 numeros, para dizer não tem meio.

ps : se o compilador for code - blocks rodará de boa, se não foi adicione a biblioteca conio.h.

#include<stdio.h>

#define L 9

#include<stdio.h>

#define L 9

main()

{

int vt[L];

int i;

int pos,meio;

for (i=0;i<L;i++){

printf("Digite um numero na posicao %d; ",i+1);

system("clear");

scanf("%d",&vt);

}

pos = i/2;

for(i=0;i<L;i++){

if (pos == i){

meio = vt;

}

}

printf("o numero do meio e %d",meio);

}

Editado por thematrix
Link para o comentário
Compartilhar em outros sites

  • 0

se não quizer fazer um loop e digitar os numeros separdos, você pode usar esse codigo, mas vai ter que tipo digitar um numero e dar espaço digitar outro e dar espaço na mesma linha por exem 1 2 3 4 5 ;

#include<stdio.h>

#define L 5

main()

{

int vt[L];

int i,j=5;

int pos,meio;

printf("Digite um numero na posicao :");

scanf("%d %d %d %d %d",&vt[0],&vt[1],&vt[2],&vt[3],&vt[4]);

pos = j/2;

for(i=0;i<L;i++){

if (pos == i){

meio = vt;

}

}

printf("o numero do meio e %d",meio);

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...