double[] doacoes = {103.54, 259.72, 82.16, 154.87, 364.45, 14.49 };
int i = 0;
int w = doacoes.Count();
double total = 0;
while(i <= w)
{
total += doacoes[i];
i++;
Console.WriteLine(total);
}
double[] doacoes = {103.54, 259.72, 82.16, 154.87, 364.45, 14.49 };
int i = 0;
int w = doacoes.Count();
double total = 0;
while(i <= w)
{
total += doacoes[i];
i++;
Console.WriteLine(total);
}
Oii, Philip! Tudo bem?
É muito bom ver você praticando a lógica de repetição com arrays. Essa é uma base importante para lidar com conjuntos de dados.
Analisando o seu código, notei um detalhe técnico que causará um erro durante a execução, especificamente um IndexOutOfRangeException. Isso acontece porque, ao usar while(i <= w), o loop tentará acessar um índice que não existe.
Em C#, assim como em muitas linguagens, os índices de um array começam em 0 e vão até o tamanho menos um. Se o array tem 6 elementos, os índices são de 0 a 5. Quando o seu código tenta acessar o índice 6 (porque você usou o operador <= ), o programa interrompe o funcionamento.
Pra ajustar e deixar seu código rodando perfeitamente, você pode alterar a condição para apenas "menor que" (<) e mover o Console.WriteLine para fora do bloco de repetição, garantindo que o total apareça apenas uma vez ao final.
double[] doacoes = { 103.54, 259.72, 82.16, 154.87, 364.45, 14.49 };
int i = 0;
int quantidade = doacoes.Length; // Usamos Length para arrays
double total = 0;
while (i < quantidade)
{
total += doacoes[i];
i++;
}
Console.WriteLine("Total de doações: " + total);
O que mudou?
i < quantidade. Assim, o código percorre do índice 0 até o 5 e para antes de tentar acessar o 6..Length em vez de .Count(), que é mais comum em listas ou consultas LINQ.Console.WriteLine fora do while, evitamos que o sistema imprima o valor parcial em cada passo da soma.Caso queira ver mais detalhes sobre como os índices funcionam na memória, a documentação da Microsoft sobre arrays é excelente para visualizar essa estrutura.
Continue explorando essas estruturas.