Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Magux

[Resolvido] rand()

Recommended Posts

Estou tendo um problema com o rand(), ele tá me dando uns bugs sinistros na hora do laço mais em baixo, se eu tirá-lo e colocar os dados manualmente funciona, mas pra testar todo o código fica inviável. Pq mais pra frente a genta tá trabalhando com matrizes 10x10 e 20x20...

 

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

int main (void){
 int M[7][4];
 int i,j,m,pi,pj;

 //Montando uma Matriz M insirindo valores, coloquei a opção de números randômicos até 20 para teste:
 for(i=0;i<7;i++){
  for(j=0;j<4;j++){
   M[i][j]= rand()%20;
   //printf("Insira M[%d][%d]:",i,j);
   //scanf("%d",&M[i][j]); 
 }}

 //Achando e escrevendo o menor e sua posição:
 m= M[0][0];
 for(i=0;i<7;i++){
  for(j=0;j<4;j++){
   if (M[i][j]<m){
	m= M[i][j];
	pi= i;
	pj= j;
 }}}

printf("O menor valor é M[%d][%d]=%d.",pi,pj,M[pi][pj]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

A pergunta é: "E se o menor valor de toda matriz está no M[0][0] ?"

Quando o zero estiver nesta posição, ele não vai inicializar o "pi" e nem o "pj", que estarão com lixo de memória, assim ele irá acessar M[237824][23847234] por exemplo, e causará uma segfault =)

 

Inicialize o pi e pj com zero e tudo vai funcionar ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

defina "bugs sinistros" por favor...

 

não se esqueça de alimentar o gerador...

srand(int);

eu aconselho:

srand(time(NULL));

se você tiver em um linux, leia os valores de /dev/random para valores realmente aleatórios

Compartilhar este post


Link para o post
Compartilhar em outros sites

A pergunta é: "E se o menor valor de toda matriz está no M[0][0] ?"

OK arrumado!

 

defina "bugs sinistros" por favor...

 

não se esqueça de alimentar o gerador...

bugs sinsitros ele não calcula nada direito com os valores aleatórios, os valores são inserido corretos, mas na hora de devolver o calculo ele devolve números aleatórios.

 

essa função srand eu não aprendemos, o rand ele nos mostrou e falou para usássemos, mas sempre dá erros de calculo quando usamos ela, algum problema recorrendo no Dev C++ talvez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o rand entra com números aleatório certo?

 

no caso tu pode definir o limite superior através do módulo rand()%20 números do modulo de 20. ou seja 0 a 19

 

o problema é que por algum motivo quando eu insiro os valores da matriz 1 a 1, os calculos a posteriore são feitos corretamente (média, soma etc), caso eu utilize rand, os valores são arbitrardos corretos porém na hora de fazer os calculos sai uns números impossível

 

tipo: média de 3 termos, 4 5 7, sai média 2342235

 

o problema é que com o mesmo código se eu inserir os números a média sai certo.

 

tou achando que é problema com o DevC++

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, com certeza absoluta não é o front-end Devcpp ou o compilador, pode postar o código aqui pra gente resolver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mandei as questões pro meu parceiro de trabalho, tão logo ele mande de volta eu posto aqui pra nós..

 

Existe alguma ferramenta que possa 2 pessoas programarem o mesmo arquivo sem precisar ficar mandando arquivo umas pras outras? E existe algum debugger online? Ou que apenas verifique o codigo em busca de irregularidades (arnaldo cesar coelho, A REGRA È CLARA!!!!)

 

agradeço a disponibilidade desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, realmente o problema não era no rand() que eu estava usando mas na hora de ler os valores eu esqueci de começar a contar a partir do zero na matriz. Obrigado pela ajuda Victor e Tarantula. Como faço pra colocar respondido lá em cima?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.