Falha de segmentação [RESOLVIDO]

1. Falha de segmentação [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 10/10/2015 - 11:29h

Olá apresenta falha de segmentação , onde poderia corrigir? Alguém pode me ajudar?

root@hotpc:/home/mbrainiac/Área de trabalho/C_programas# gcc 1072.c -o 1072.x
root@hotpc:/home/mbrainiac/Área de trabalho/C_programas# ./1072.x
Falha de segmentação



#include<stdio.h>

int main()
{

int n,x[n],count,in=0,out=0;

scanf("%d",&n);

for(count=0;count < n; count++)
{
scanf("%d",&x[count]);
}
for(count=0;count < n; count++)
{
x[count];
if((x[count]>=10) && (x[count]<=20))
in++;
else
out++;
}
printf("%d Dentro\n%d fora\n",in,out);

return 0;
}



  


2. MELHOR RESPOSTA

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 10/10/2015 - 22:49h

É que você declarou o vetor x sem especificar um valor seguro para o tamanho dele.
Tipo, se fizer assim:

#include<stdio.h>
int main()
{
int n,count,in=0,out=0;
printf("n = %d\n", n);
scanf("%d",&n);
int x[n];
...

Verá que n tem um valor absurdo, no caso é "lixo", que você não especificou.
Observe que esse pedaço de código acima vai funcionar se você digitar por exemplo 10.
Tinha uma explicação do Paulo sobre declarar o tamanho de vetores com variáveis, mas não tô encontrando.
Pessoalmente eu abomino esse tipo de coisa, pois me parece uma gambiarra das brabas, além do mais veja bem, seu programa poderia tranquilamente funcionar com um vetor x de tamanho 100. Sim, pois é que vai ficar no terminal digitando 100 números? Ou mesmo 1000 deles?


3. Re: Falha de segmentação [RESOLVIDO]

edps
edps

(usa Slackware)

Enviado em 10/10/2015 - 23:11h

Saia deste diretório cavernoso (com acentuação) que às vezes pode ser isto a raiz do problema.

Mova o diretório do que deseja compilar para sua $HOME, ou outro diretório mais simples, digo isto porque já me ocorreram problemas ao tentar compilar algo que estava na Área de Trabalho.


4. Re: Falha de segmentação [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 11/10/2015 - 15:28h

Obrigado amigos



5. Re: Falha de segmentação [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 11/10/2015 - 15:43h

SamL escreveu:

É que você declarou o vetor x sem especificar um valor seguro para o tamanho dele.
Tipo, se fizer assim:

#include<stdio.h>
int main()
{
int n,count,in=0,out=0;
printf("n = %d\n", n);
scanf("%d",&n);
int x[n];
...

Verá que n tem um valor absurdo, no caso é "lixo", que você não especificou.
Observe que esse pedaço de código acima vai funcionar se você digitar por exemplo 10.
Tinha uma explicação do Paulo sobre declarar o tamanho de vetores com variáveis, mas não tô encontrando.
Pessoalmente eu abomino esse tipo de coisa, pois me parece uma gambiarra das brabas, além do mais veja bem, seu programa poderia tranquilamente funcionar com um vetor x de tamanho 100. Sim, pois é que vai ficar no terminal digitando 100 números? Ou mesmo 1000 deles?


Infelizmente no Urionline pede para fazer isto no problema 1072, mandao usuário entrar com o valor do tamanho do vetor










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts