Solucionado (ver solução)
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))