Orientação na resolução de uma questão em C [RESOLVIDO]

1. Orientação na resolução de uma questão em C [RESOLVIDO]

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 28/04/2014 - 18:06h

Prezados,

Venho através deste pedir a ajuda de vocês, hoje pela manhã fiz uma prova de Algoritmos II, utilizando como base de resolução a linguagem C. Fui péssimo na prova, pois nunca fui um cara bom em matemática, sobretudo raciocínio lógico, muito disso também se dá pelo fato de não ter ido muito bem na primeira disciplina - Algoritmos I - mas, como bom brasileiro, eu não desisto e sei que, assim como eu, muitos outros já passaram e ainda passarão por isso, uns com mais dificuldades outros com menos. Mas vamos ao que interessa, eis a questão que eu não consegui resolver de jeito nenhum:

1. Construa um programa em C que solicite ao usuário três parâmetros: q - quantidade de vetores, n - quantidade de inteiros e a - amplitude do intervalo de inteiros possíveis. Em seguida, realize em sequência as seguintes tarefas:

a) Gerar aleatoriamente cada um dos q vetores, com n elementos, variando de 0 até n-1.

b) Para cada vetor, calcule:

a. Media Aritmética;
b. Moda;
c. Mediana.

-----------------------------------------------------------------------------------------------------

OBS 1: como eu já fiz um exercício semelhante, porem menos complexo, vou postar o código logo abaixo, para que vocês compreendam um pouco melhor a didática do meu professor.

// Titulo: geravetor.c
// Autor: Everton
// Data: 19/03/14
/* Construa um programa em C que solicite ao usuário três parâmetros: n - quantidade de vetores, a - amplitude do intervalo de inteiros possíveis e x - novo elemento, em seguida, busque-o no vetor e informe a posição que o elemento foi encontrado.*/

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

#define M 100

void geraVetor(int vet[], int n, int a)
{
int i;
for(i=0;i<n;i++)
{
vet[i] = rand()%a;
}
}

void mostraVetor(int vet[], int n)
{
int i;
printf("\n-------------------------------");
for(i=0;i<n;i++)
{
printf("\n[%2d] [%p] (%3d)",i,&vet[i],vet[i]);
}
printf("\n-------------------------------\n");
}

int busca_elemento(int vet[], int n, int x)
{
int i;

i=0;

while(i<n && vet[i]!=x) i++;

return(i);

}

int main()
{
int vetor[M];
int N, A, X, E;

printf("\nEntre com N:");
scanf("%d",&N);
printf("\nEntre com A:");
scanf("%d",&A);
printf("\nEntre com X:");
scanf("%d",&X);


geraVetor(vetor, N, A);

mostraVetor(vetor, N);

E = busca_elemento(vetor, N, X);

if(E == N)
printf("\nElemento nao encontrado !!!\n");
else
printf("\nElemento encontrado na posicao %d \n",E);


system("pause");
}

OBS 2: Reparem que no exemplo do código anterior, o professor pede que gere 1 VETOR com N elementos aleatórios, no entanto, na questão da prova ele pede para gerar Q VETORES (pensei em vetores multidimensionais, matrizes... mas não consegui resolver de jeito nenhum), porem como que a gente pode criar Q VETORES com N ELEMENTOS ALEATÓRIOS? Realmente fiquei sem direção. Sei que para muitos é algo simples, porém, para meu nível de conhecimento ainda é algo complexo, espero sinceramente contar com a ajuda de vocês, agradeço antecipadamente!


  


2. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 28/04/2014 - 18:35h

Tente compilar o seu código com a opção ( -Wall ) que o compilador vai te informar algumas dicas:
------------------
gcc programa.c -o programa -Wall
------------------



// e só te ajudando em relação a essa função...

void geraVetor(int vet[], int n, int a)
{
int i;

for (i = 0; i < n; i++)
{
vet[i] = rand()%a; // esse seria o modo correto
}
}



Postado nas pressas para ir estudar ;)



3. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 28/04/2014 - 18:46h

Pois é, na hora de passar o código eu devo ter tirado a posição [ i ], mas é isso mesmo, eu havia esquecido, vou corrigir o erro de sintaxe. Valeu!


4. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 28/04/2014 - 18:48h

Engraçado, eu fui fazer a correção agora e quando abri o editor a posição vet[ i ] já encontra-se no código, mas quando eu salvo a alteração o texto não modifica.. Mas não tem problema, o importante é que eu entendi o que vocês quis dizer, mais uma vez grato!


5. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 28/04/2014 - 19:05h

Precisei colocar a posição i do vetor com espaçamento: vet[ i ]


6. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/04/2014 - 09:02h

Edite sua postagem original e coloque o código em C cercado pelas tags [code] e [/code]. Desse jeito, mesmo o texto [i] deixa de ser interpretado como tag que inicia formatação de letras em itálicos.

Com relação ao seu problema, seu professor não ensinou coisa alguma sobre alocação dinâmica de memória?


7. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 29/04/2014 - 10:33h

Grato pela dica ([ code ][ / code ])Paulo! Então, com relação ao conceito alocação de dinâmica, o meu professor vai abordar agora para cobrar na 2ª avaliação desse período, nessa, que foi a 1ª ele pediu para resolver usando as técnicas apresentadas até agora.


8. CONSEGUI!!!

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 29/04/2014 - 11:06h

Pessoal, consegui desenvolver a função para resolver a questão, de qualquer maneira agradeço a todos que responderam! Abraços!


9. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/04/2014 - 12:53h

Fico curioso para saber a solução que você adotou, especialmente se não estiver usando alocação dinâmica. Imagino que você poderia estar usando um valor máximo preestabelecido para q e n, mas o enunciado não dizia isso, dizia?


10. Re: Orientação na resolução de uma questão em C [RESOLVIDO]

Everton Melo
everton_melo

(usa Ubuntu)

Enviado em 30/04/2014 - 13:57h

Então Paulo, no caso dessa questão, como o enunciado pede que os valores q e n sejam valores dinâmicos, cheguei a conclusão que esse vetor é bidimensional, ou seja, uma matriz, logo, quando o usuário entra com o q > 1, o vetor passa a ter mais de uma linha, deixando de ser unidimensional. Por outro lado o n na condição de elemento que preenche as posições do vetor exerce o papel de colunas. Por exemplo, quando o usuário entra com os valores de q = 2 e n = 5; criamos uma matriz 2x5. No momento minha dificuldade é fazer a passagem dessa matriz que está dentro de uma função geraVetor(), para uma outra função de calculo(), onde eu calculo a média, moda e mediana. Estou aprendendo a passar utilizando ponteiros, mas, como falei no post, eu sou usuário inicial, não tenho habilidade avançada em raciocínio lógico, sobretudo não sei praticamente nada de linguagem C, inicialmente, no 1º período do curso eu tinha medo e as vezes raiva, hoje começo a perceber que estou gostando de C, e ao passo que eu me aprofundo através de pesquisas, testes após testes, percebo que é uma linguagem poderosa.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts