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:  
Entre para seguir isso  
Matheus Dionysio

C Erro de segmentação com alocação dinamica de vetor

Recommended Posts

Olá, estou fazendo um exercício em c , e nãoo sei porque a função esta dando falha de segmentação.

 

 

void preencher (int vetS[],int vetB[],int vetM[],int n ){
  int i,e,a;
 
  //Criando os vetores;
  puts("Insira o numero de elementos no vetor" );
  scanf("%i",&n);
  vetS =(int *) malloc((n+1)*sizeof(int));
  vetM =(int *) malloc((n+1)*sizeof(int));
  vetB =(int *) malloc((n+1)*sizeof(int));

  //prenchendo os vetores com numeros aleatorios
  puts("digite : \n1 - Para gerar entre 0 e 9\n2 - para gerar valores entre 0 e 99\n3 - para gerar valores entre 0 e 999");
  scanf("%i",&e);
  while ( (e > 3) || (e <= 0) ){
  puts("Favor digitar um numero entre 1 e 3");
  scanf("%i",&e);    
  }

 

  if( e == 3)
   for (i = 1;i <= n;i++){
    a = rand () %1000;
    printf("%i\n",a );
    vetS = a;
    vetB = a;
    vetM = a;
   }
 else if(e == 2)
  for (i = 1;i <= n;i++){
   a = rand () %100;
   vetS = a;
   vetB = a;
   vetM = a;
  }

 else
  for (i = 1;i <= n;i++)
  {
   a = rand () %100;
   vetS = a;
   vetB = a;
   vetM = a;
  }    
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Matheus Dionysio No ultimo não seria: 
   a = rand () %10;

 

Por que não começa com for(i=0; ...

 

Lembre-se você usou n+1 para alocar, mas n ainda continua sendo n < (n+1) 

 

Tenta verificar qual parte do código apresenta esse erro, use um printf antes da alocação e um depois...

 

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

Entre para seguir isso  





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

×