Comece agoraComece grátis

Calculando raízes quadradas com um laço for

Assim como em R, laços for em C++ executam o mesmo código um número específico de vezes, alterando apenas o valor de um índice a cada iteração. A sintaxe de um laço for é um pouco mais complexa do que em R.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 declara o índice como um inteiro (o caso mais comum) e define o valor como 0 na primeira iteração.
  • i < n define a condição de iteração: quando i atingir o valor n, essa condição falha e o laço para de executar.
  • i++ significa aumentar o valor de i em 1 a cada iteração.

Aqui, você vai completar a definição de uma função para calcular a raiz quadrada usando o método babilônico. (Em código real, é melhor usar sqrt(), que aplica um algoritmo moderno mais rápido.)

Este exercicio faz parte do curso

Otimizando código R com Rcpp

Ver curso

Instruções do exercicio

  • Inicialize uma variável local double x como um.
  • Especifique um laço for.
    • Inicialize um inteiro, i, como 0.
    • Defina a condição de iteração como i menor que n.
    • Incremente i em um a cada passo.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double sqrt_approx(double value, int n) {
    // Initialize x to be one
    double x = ___;
    // Specify the for loop
    ___(int i = ___; ___; ___) {
        x = (x + value / x) / 2.0;
    }
    return x;
}

/*** R
sqrt_approx(2, 10)
*/
Editar e Executar Código