Ir ao conteúdo
  • Cadastre-se

C++ calcular o valor do seno ou cosseno do ângulo passado


Visitante

Posts recomendados

Muitos programas comumente oferecem diversas funções para o usuário. Em um programa gráfico o usuário escolhe a função que deseja através de componentes gráficos como menus e botões. Já em programas de linha de comando podemos deixar o usuário escolher uma função através de códigos ou símbolos.

Seguindo essa linha faça um programa que permita ao usuário solicitar o cálculo do seno ou do cosseno de um ângulo, e este ângulo pode ser fornecido em graus ou radianos.

Para isso o usuário deverá primeiro informar uma letra para dizer se deseja o cálculo de seno ou cosseno (s ou c). Em seguida, ele deve informar outra letra dizer se o ângulo a ser fornecido será dado em graus ou radianos (g ou r). Por fim, o usuário deve informar um número decimal com o ângulo desejado. O programa deve então calcular o seno ou cosseno do ângulo informado de acordo com a definição do usuário.

Obs.: soluções em Python devem utilizar funções da biblioteca math. Soluções em C++ devem usar a biblioteca cmath.

Entradas:

  • Uma letra, s ou c, indicando se será calculado o seno ou o cosseno, respectivamente.
  • Uma letra, g ou r, indicando se o ângulo a ser informado está em graus ou radianos.
  • Um número decimal representando o ângulo desejado, que pode estar em graus ou radianos

Saídas:

  • O valor do seno ou cosseno do ângulo passado.
Link para o comentário
Compartilhar em outros sites

  • Moderador

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@farnyy Vamos por partes.

 

@DiF Como ele disse mandar só a pergunta e meio complicado tente mandar um código que fica mais fácil de ajudar. 

 

Vou deixar um exemplo aqui de explicação e tente fazer a solução conforme esta aqui

 

Primeiro você precisa saber o que o usuário quer que seja calculado.

Depois vai ser realizado o calculo.

Por fim mostra o resultado.

 

Pegando a logica do seu exercício primeiro você tem que receber a letra para saber se vai ser calculado o seno ou o cosseno (s ou c), depois saber se será em graus ou radianos (g ou r).

 

Primeiro faça o método para receber os dois valores e guardar ambos em duas variáveis.

 

Depois podemos selecionar o que se pede com IF.

if(var1 == s) {
vai cair no graus 
Faça o que se pede
} else if (var1 == c) {
vai cair no cosseno 
faça o que se pede
}

 Depois podemos verificar a segunda opção que seria o ângulo:

if(var2 == g) {
vai cair no graus 
Faça o que se pede
} else if (var1 == r) {
vai cair no radianos 
faça o que se pede
}

 

Depois disso faça o que se pede.
Monte um código e se ainda estiver com alguma duvida mande aqui no post. 

Link para o comentário
Compartilhar em outros sites

Segue um exemplo em Java:

Spoiler

package code;

public class GrausRadianosTest {

    public static void main(String[] args) {
        boolean calcularSeno = false;
        boolean usarGrau     = false;

        double angulo    = 0.0;
        double resultado = 0.0;

        /*
         * Formato de entrada:
         * (c|s) (g|r) x
         */
        if (args.length != 3) {
            System.err.println("[ E ]: Quantidade inválida de parâmetros.");
            System.exit(1);
        }

        if (args[0].equalsIgnoreCase("S")) {
            calcularSeno = true;
        } else if (!args[0].equalsIgnoreCase("C")) {
            System.err.println("[ E ]: Operação inválida.");
            System.exit(2);
        }

        if (args[1].equalsIgnoreCase("G")) {
            usarGrau = true;
        } else if (!args[1].equalsIgnoreCase("R")) {
            System.err.println("[ E ]: Medida inválida.");
            System.exit(3);
        }

        if (args[2].matches("\\d+(\\.\\d+)?")) {
            angulo = Double.parseDouble(args[2]);
        } else {
            System.err.println("[ E ]: Ângulo inválido.");
            System.exit(4);
        }

        if (calcularSeno) {
            if (usarGrau) {
                resultado = calcularSenoDeGrau(angulo);
            } else {
                resultado = calcularSenoDeRadiano(angulo);
            }
        } else {
            if (usarGrau) {
                resultado = calcularCossenoDeGrau(angulo);
            } else {
                resultado = calcularCossenoDeRadiano(angulo);
            }
        }

        System.out.println("resultado = " + resultado);
    }

    private static double calcularCossenoDeGrau(double angulo) {
        System.out.println("Calculando cosseno do ângulo " + angulo + " em graus.");
        return 0.0;
    }

    private static double calcularSenoDeGrau(double angulo) {
        System.out.println("Calculando seno do ângulo " + angulo + " em graus.");
        return 0.0;
    }

    private static double calcularCossenoDeRadiano(double angulo) {
        System.out.println("Calculando cosseno do ângulo " + angulo + " em radiano.");
        return 0.0;
    }

    private static double calcularSenoDeRadiano(double angulo) {
        System.out.println("Calculando seno do ângulo " + angulo + " em radiano.");
        return 0.0;
    }
}

 

 

Só precisa adaptar a lógica para ser compatível com C e implementar as funções de cálculo.

 

Esse código usa os parâmetros de linha de comando para funcionar. Por exemplo, pode ser chamado assim:

java code.GrausRadianosTest s g 60.0

 

Isso fará ele calcular o seno do ângulo 60 em graus.

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

@Pedro Kazoii boa tarde! Eu fiz assim porém esta dando resultado errado, você poderia me ajudar a ver o que esta errado? Se eu entrar com s, r, 0.5 tem que sair 0.4794. porém ta saindo -0.364929.

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	char var1= 's' or 'c', var2 = 'g' or 'r';
	float var3, resultado;
	cin>>var1>>var2>>var3;
	if(var1 == 's' and var2 == 'g')
	{
		resultado= sin(var3);
	} 
	 else if (var1 == 'c' and var2 == 'g')
	{
		resultado= cos(var3);
	}
	else if(var1=='s' and var2=='r')
	{
		resultado= (var3 / (M_PI / 180));
		resultado= sin(resultado);
	}
	else if(var1=='c' and var2=='r')
	{
		resultado= (var3 / (M_PI / 180));
		resultado= sin(resultado);
	}
		cout<<resultado;
	
	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Seu programa tem cosias estranhas :(

 

char var1= 's' or 'c', var2 = 'g' or 'r';
	

 

Que pretende com essas declarações?

 

Sabe quanto vale 's' or 'c'? 1 'g' or 'r'? 1. Qual o propósito dessas declarações? Zero é falso. Qualquer outro valor é verdadeiro. and or not xor, tudo isso avalia para zero ou 1.

 

21 horas atrás, farnyy disse:

resultado= (var3 / (M_PI / 180));

 

Até onde eu sei cmath não tem M_PI. Está em math.h. E mesmo assim para usar você precisa de um 

#define _USE_MATH_DEFINES

Que tal o simples e usar 
 

std::numbers::pi


disponível em C++20, ou usar 
 

#define M_PI 3.1415926536


que é bem razoável para um programa de estudantes?

 

Note que as funções seno e cosseno operam em radianos. Você pode usar apenas um if e converter se  a entrada foi em graus. O enunciado não está bom: seria mais esperto deixar a unidade como último parâmetro para poder simplesmente assumir radianos se o usuário não digitasse nada para esse campo. Ou se usasse a linha de comando poderia usar o simples
 

pgm S 3.14 


ou
 

pgm S 180 G


Mas não dá pra mudar o enunciado. Só lamentar.

 

21 horas atrás, farnyy disse:

cin>>var1>>var2>>var3;


Que tal uma mensagem instruindo o infeliz que vai usar isso sobre o que ele vai digitar e em que ordem?

 

21 horas atrás, farnyy disse:

cout<<resultado;

 

E que tal explicar o que seria esse solitário número?

 

 

E podia mesmo usar nomes mais significativos...

 

Que tal trocar var1, var2 e var3 por operacao, valor e unidade ?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...