FranSel Postado Novembro 2, 2011 Denunciar Share Postado Novembro 2, 2011 Oi pessoal, preciso de ajuda, preciso fazer um programa que encontre o valor do meio de um conjunto de dados.Tipo, se eu tiver valores:12345Ele tem que me retornar que o valor do meio é 3...Mesmo que não estiver na ordem..Agradeço se puderem me ajudar, é bem urgente! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 2, 2011 Denunciar Share Postado Novembro 2, 2011 (editado) 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 elementosvetor[n/2+1];Onde n (int) é o número de elementos. Editado Novembro 2, 2011 por mJi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FranSel Postado Novembro 2, 2011 Autor Denunciar Share Postado Novembro 2, 2011 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 3, 2011 Denunciar Share Postado Novembro 3, 2011 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); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FranSel Postado Novembro 3, 2011 Autor Denunciar Share Postado Novembro 3, 2011 Oiii..Obrigada, mas isso qeu você calculou é a média, já tenho essa cálculo feito..O meu problema é assim: tenho esses numeros (1,2,3,4,5,6,7,8,9)Ele tem que me retorna o 5..que é o valor do meio...Obrigada! :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 4, 2011 Denunciar Share Postado Novembro 4, 2011 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thematrix Postado Novembro 4, 2011 Denunciar Share Postado Novembro 4, 2011 (editado) 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 9main(){ 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 Novembro 4, 2011 por thematrix Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thematrix Postado Novembro 4, 2011 Denunciar Share Postado Novembro 4, 2011 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 5main(){ 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);} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FranSel Postado Novembro 5, 2011 Autor Denunciar Share Postado Novembro 5, 2011 Ok obrigada Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
FranSel
Oi pessoal, preciso de ajuda, preciso fazer um programa que encontre o valor do meio de um conjunto de dados.
Tipo, se eu tiver valores:
1
2
3
4
5
Ele tem que me retornar que o valor do meio é 3...Mesmo que não estiver na ordem..
Agradeço se puderem me ajudar, é bem urgente!
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
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.