ERRO! No meu programa aparece o erro Segmantation fault (core dump). [RESOLVIDO]

1. ERRO! No meu programa aparece o erro Segmantation fault (core dump). [RESOLVIDO]

Thomas Weverton dos Santos Moura
twsm

(usa Ubuntu)

Enviado em 20/05/2015 - 23:53h

Boa noite, estava fazendo um exercício da faculdade e me deparei com esse erro Segmantation fault (core dump). Testei o mesmo arquivo no Devc/c++ no meu windows só q não aparece esse erro.. oq fazer...

Segue o programa...

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

void mat_imp (int imp[][2]){

int i, j, rst;

for (i=1; i<=2; i++){
for (j=1; j<=2; j++){
printf("Digite um número:");
scanf("%d", &imp[i][j]);
}
}

printf("\t___Números Ímpares Encontrados___\n");
for (i=1; i<=2; i++){
for (j=1; j<=2; j++){
rst=(imp[i][j])%2;
if(rst!=0){
printf("[L]:%d [C]:%d = %d\n", i, j, imp[i][j]);
}
}
}
}


main(){

int impar[2][2];

mat_imp(impar);
}


  


2. Indice inválido

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 21/05/2015 - 00:27h

Boa noite

Tu estas levando em conta como o índice começe em 1 e termine em 2.

Em muitas linguagens, como e C e C++, o primeito índice de um array, está na posição 0

Ex:



char foo[2];

foo[0] = 'a'; //primeiro índice
foo[1] = 'b'; //segundo e último índice
foo[2] = 'c'; //Índice inválido, uma vez que foi declarado array de 2 posições



Sendo, acredito que fazendo correção nos for, deve resolver, como abaixo:


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

void
mat_imp (int imp[][2])
{

int i, j, rst;

for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
printf ("Digite um número:");
scanf ("%d", &imp[i][j]);
}
}

printf ("\t___Números Ímpares Encontrados___\n");
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
rst = (imp[i][j]) % 2;
if (rst != 0)
{
printf ("[L]:%d [C]:%d = %d\n", i, j, imp[i][j]);
}
}
}
}


main ()
{

int impar[2][2];

mat_imp (impar);
}





3. Re: ERRO! No meu programa aparece o erro Segmantation fault (core dump). [RESOLVIDO]

Thomas Weverton dos Santos Moura
twsm

(usa Ubuntu)

Enviado em 21/05/2015 - 01:08h

uilianries escreveu:

Boa noite

Tu estas levando em conta como o índice começe em 1 e termine em 2.

Em muitas linguagens, como e C e C++, o primeito índice de um array, está na posição 0

Ex:



char foo[2];

foo[0] = 'a'; //primeiro índice
foo[1] = 'b'; //segundo e último índice
foo[2] = 'c'; //Índice inválido, uma vez que foi declarado array de 2 posições



Sendo, acredito que fazendo correção nos for, deve resolver, como abaixo:


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

void
mat_imp (int imp[][2])
{

int i, j, rst;

for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
printf ("Digite um número:");
scanf ("%d", &imp[i][j]);
}
}

printf ("\t___Números Ímpares Encontrados___\n");
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
rst = (imp[i][j]) % 2;
if (rst != 0)
{
printf ("[L]:%d [C]:%d = %d\n", i, j, imp[i][j]);
}
}
}
}


main ()
{

int impar[2][2];

mat_imp (impar);
}





Thanks uilianries funcionou aqui!!!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts