Variável altera valor sem motivo aparente

Tava escrevendo um código em C pra resolver o problema sugerido no post do Facebook: Redirecting...

Alguém pode me explicar porque alterou o valor das primeiras posições da matriz?

Segue o código: https://pastebin.com/VUadU3F3

Brother, porque você inicializa os produtos com 396 itens?
Fiz o teste aqui, e inicializando em 400 (20x20) itens o erro não acontece.

2019-03-20_08-13

2 curtidas

@douglas.comim, de 0 a 401(esta assim no FOR), não tem 402 números?? desculpe a ignorância, caso estiver dizendo alguma errado, sou bem leigo em C…

O que estava ocorrendo?
Erro de acesso de memória na lógica de execução do produto, ao chegar
com b em 17 como primeiro multiplicador, o código seguia normalmente até o 20 e saia do segundo loop, porém a variável cont estava em 3, ao rodar a = 1 e b = 0 incrementava-se cont e então era reduzido 3 de b indo para b = -3 logo acarretou em acesso inválido de memória.

Segue abaixo algumas alterações que eu fiz, e a diferença entre o seu código e o que eu alterei:
https://gist.github.com/acomerlatto/ff90093ab969408f3937fb52b8773e52/revisions#diff-a36465579089f366a95fa07ecf4e5f34

1 curtida

Foi exatamente esse o erro. O certo é iniciar com 397 posições, mas eu fiz confusão achando que na declaração da array o ‘0’ contava como uma.

Valeu pelas dicas, amigo!