Hazike Postado Maio 26, 2020 Denunciar Share Postado Maio 26, 2020 #include <stdio.h> void intercalada(int vetA[], int tamA, int vetB[], int tamB) { int a = 0, b = 0; int i; for(i = 0; i < (tamA+tamB); i++) { if(!(i % 2)) { if(a > tamA) { printf("%d ", vetB); b++; } else { printf("%d ", vetA[a]); // estou recebendo segmentation fault nessa linha, algm pode me ajudar? a++; } } else { if(b > tamB) { printf("%d ", vetA[a]); a++; } else { printf("%d ", vetB); b++; } } } } int main() { int tamA = 10, tamB = 5; int vetA[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; int vetB[5] = {2, 2, 2, 2, 2}; intercalada(vetA[10], tamA, vetB[5], tamB); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hazzu Postado Maio 31, 2020 Denunciar Share Postado Maio 31, 2020 (editado) Em 26/05/2020 em 19:41, Hazike disse: if(a > tamA) Para o caso a = tamA, isso resultará falso e você acabará imprimindo a linha: Em 26/05/2020 em 19:41, Hazike disse: printf("%d ", vetA[a]); que resultará no acesso a uma posição na memória não reservada para seu vetor (Falha de segmentação). Falha de segmentação é um erro que ocorre em programa quando este tenta acessar um endereço na memória RAM que está reservado para outro programa ou que não existe. Lembre-se que em C os índices das posições vetoriais começam em 0 e terminam em tam-1, fazendo com que a posição tam não exista. Editado Maio 31, 2020 por Hazzu Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Hazike
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.