Ir ao conteúdo

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


Posts recomendados

Postado

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.
  • Moderador
Postado

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
Postado

@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. 

Postado

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
Postado

@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;
}

 

Postado

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 ?

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!