Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 1002. Mostrar todas as postagens
Mostrando postagens com marcador 1002. Mostrar todas as postagens

quarta-feira, 24 de março de 2021

URI (BEECROWD) - 1002 - Área do Círculo - Iniciante - JavaScript, Python3, Haskell, C e C++

Plataforma: URI (BEECROWD)

Problema1002

Linguagens: JavaScript, Python3, C e C++

Enunciado:

A fórmula para calcular a área de uma circunferência é: area = π . raio2. Considerando para este problema que π = 3.14159:

- Efetue o cálculo da área, elevando o valor de raio ao quadrado e multiplicando por π.

Solução:

Esse é um dos exercícios mais simples da plataforma, ideal para quem está começando no mundo da programação. Resolvi ele em três linguagens diferentes até o momento: JavaScript, Python3, C e C++.

A solução em JavaScript tem as duas primeiras linhas que são padrão. No URI você precisa ler o arquivo de texto da entrada padrão e dividir os dados de entrada, linha a linha, jogando isso para um array chamado lines. Basicamente é isso que é feito nas duas primeiras linhas. Considere que elas serão obrigatórias nas suas soluções de problemas com a linguagem JavaScript.

De acordo com a documentação, "o método shift() remove o primeiro elemento de um array e retorna esse elemento. Este método muda o tamanho do array". Como nosso array terá (em tese) somente um valor, pelo menos tomando como base os arquivos de entrada que estão no exemplo do exercício, isso não será problema, pois estamos armazenando o valor na variável r, com o devido cast realizado para que o valor seja um número (number).

Criamos então uma variável para o resultado (res), que faz o cálculo necessário para a área do círculo (pi x r²) e fixa a precisão em quatro casas decimais utilizando toFixed com parâmetro 4.

Depois disso é só usar o comando de escrita console.log no formato solicitado.

var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');

var r = Number(lines.shift());
var res = (r * r * 3.14159).toFixed(4);
   
console.log(`A=${(res)}`);

Solução em Python3:

r = float(input())
print("A={:.4f}".format(r * r * 3.14159))

Solução em Haskell:

Em Haskell é necessário importar a função printf, pois com ela é fácil de delimitar as casas decimais. Usa-se readLn para ler o valor da entrada padrão e tratá-lo como um Double, como pede o exercício. Depois basta formatar a saída com printf, calculando n x R² com n = 3.14159 como sugere o exercício.

import Text.Printf (printf)
main :: IO ()
main = do 
   r <- readLn :: IO Double
   printf "A=%.4f\n" (3.14159 * r * r)

Solução em C: 

Existem vários caminhos para resolver este problema em C.  Eu criei uma variável de ponto flutuante de dupla precisão (double), realizei a leitura com scanf e fiz o cálculo da área diretamente no printf. Utilizei a função pow, da biblioteca math.h, que já faz a potência e retorna o valor também em double.
Na formatação da saída, usei %.4lf porque o .4 aqui faz a delimitação de quatro casas decimais.

Importante: pode ser que ao testar o código com math.h você precise usar "-lm" no gcc. Isso se deve à linkedição (ligação) que precisa ser realizada com a biblioteca matemática. Pode ser que isso seja necessário com outras bibliotecas também.

#include <stdio.h>
#include <math.h>

int main() {
    double r;
    
    scanf("%lf", &r);
    printf("A=%.4lf\n", 3.14159 * pow(r, 2.0));
}

Solução em C++: 

A fórmula para a questão é sempre a mesma, o que muda são as instruções de entrada e saída, basicamente. Aqui usei std::cin para a leitura do valor e std::cout para a escrita da resposta. A delimitação de casas decimais foi feita com fixed e setprecision(4). Esta função está na biblioteca iomanip, que foi incluída na linha 2 do código.

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double r;
    
    cin >> r;
    cout << "A=" << fixed << setprecision(4) << 3.14159 * (r * r) << endl;
    
    return 0;
}

E as suas soluções, como ficaram? Estão diferentes das minhas?

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas