Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Não sei porque não funciona

#include <stdio.h>

#include <stdlib.h>

int soma(int* a, int b){

int soma = 0;

for(int i = 0 ; i < b ; i++){

    soma = soma + a[b];
    
}
return soma;

}

int main(){

int nums[3];

nums[0] = 10;

nums[1] = 20;

nums[2] = 30;

int total = soma(nums, 3);

printf("%d",total);

}

1 resposta
solução!

O problema no código está na função soma. Ao somar os elementos do array a, você está acessando o elemento na posição b, que é o tamanho do array, mas as posições válidas de um array vão de 0 até seu tamanho -1.

Segue uma correção da função soma:

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

int soma(int* a, int b)
{
        int soma = 0;

        for(int i = 0 ; i < b ; i++)
        {
                soma = soma + a[i]; // Ajustei aqui: estava somando a[b] em vez de a[i]

        }
        return soma;
}

int main()
{
        int nums[3];

        nums[0] = 10;
        nums[1] = 20;
        nums[2] = 30;

        int total = soma(nums, 3);
        printf("%d",total);
        return (0); // Adicionei um retorno 0 ao final da função main para indicar que o programa foi executado sem erros
}

Se esta resposta te ajudou, favor marcar como solucionado. :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software