Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

08 Corrigindo bugs

Quando eu simulo o código do exercício utilizando a correção sugerida o XCode me retorna um erro na última linha: Binary operator '/' cannot be applied to operands of type 'Double' and 'Int'

Esse erro ocorre mesmo qdo eu uso var soma:Double = 0 ou var soma = 0.0, conforme exemplos abaixo:

var notas = [9, 6.5, 4, 8.25]
var soma:Double = 0
for nota in notas {
  soma += nota
}
print(soma / notas.count)
var notas = [9, 6.5, 4, 8.25]
var soma = 0.0
for nota in notas {
  soma += nota
}
print(soma / notas.count)
11 respostas

Você precisa declarar o tipo da variável notas . Ficaria como abaixo:

var notas:Double = [9, 6.5, 4, 8.25] var soma:Double = 0.0 for nota in notas { soma+=nota } print(soma / notas.count) ```

Quando eu faço isso aparecem mais erros:

var notas:Double = [9, 6.5, 4, 8.25]  
var soma:Double = 0.0
for nota in notas {
    soma += nota
}
print(soma / notas.count)

Erro na linha 1: Contextual type 'Double' cannot be used with array literal

Erro na linha 3: Type 'Double' does not conform to protocol 'Sequence'

Erro na linha 6: Value of type 'Double' has no member 'count'

Tenta colocar o array como Float.

Como eu faço isso?

var notas:Float= [9, 6.5, 4, 8.25]  
var soma:Float = 0.0
for nota in notas {
    soma += nota
}
print(soma / notas.count)

Dá exatamente os mesmos 3 erros anteriores

não deu aqui, deixa eu tentar de uma outra forma

solução!

Esse deu certo :D

var notas: Array<Double> = [9, 6.5, 4, 8.25]
var soma = 0.0
var contnotas = 0.0
for nota in notas {
    soma += nota
    contnotas+=1
}

print(soma/contnotas)

Só pra você entender, o Swift não permite fazer contas se as variáveis não são do mesmo tipo, isso é pra evitar erro. Em alguns casos ajuda e em outros não. Como o valor de nota.count é um valor inteiro, nós teríamos que transformar esse valor em Double. Pra facilitar, criei uma variável com outro contador, já lido como Double.

Agora deu certo. A resposta do exercício está incorreta, então.

Achei outra solução também que é transformar o notas.count em double:

var notas = [9, 6.5, 4, 8.25]
var soma:Double = 0
for nota in notas {
  soma += nota
}
print(soma / Double(notas.count))