Ir ao conteúdo
  • Cadastre-se

C++ Função : Receber e imprimir valores da fórmula de bháskara.


Dafne Guimarães

Posts recomendados

Boa noite, Galera

 

A fórmula está errada? Os resultados estão saindo próximos mas errados.

 

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

/*Faça uma função que receba por parâmetro os valores necessário para o cálculo da fórmula de báskara e imprima as suas
raízes, caso seja possível calcular.*/
	void recebe_valor();
	void calcula_valor(float a, float b, float c);
	float imprime_valor(float raiz1, float raiz2, float bhask);
	
int main() {
	recebe_valor();
	return 0;
}

void recebe_valor(){
	float a, b, c;
	printf("Para calcular a formula de bhaskara digite as seguintes variaveis: a, b, c:\n");
  	scanf("%f %f %f", &a, &b, &c);
  	
  	calcula_valor(a, b, c);
}

void calcula_valor(float a, float b, float c){
	float bhask=0;
	float raiz1=0, raiz2=0;

		bhask= (pow(b,2)-(4*a*c));		

	if(bhask<1){
		printf("Nao ha raiz na funcao:\n");
		return 0;
	}
	
	imprime_valor (raiz1, raiz2, bhask);
}

float imprime_valor(float raiz1, float raiz2, float bhask){
		float b;
			
		raiz1 = ((-b)+ sqrt(bhask));
		printf("A primeira raiz eh:%2.f\n",raiz1);
		
		raiz2 = ((-b)-sqrt(bhask));
		printf("A segunda raiz eh:%2.f",raiz2);
	}

 

Link para o comentário
Compartilhar em outros sites

52 minutos atrás, Dafne Guimarães disse:

float imprime_valor(float raiz1, float raiz2, float bhask)

{

float b;

 

raiz1 = ((-b)+ sqrt(bhask));

printf("A primeira raiz eh:%2.f\n",raiz1);

 

raiz2 = ((-b)-sqrt(bhask));

printf("A segunda raiz eh:%2.f",raiz2);

 

}

Qual o valor de b nessa função? não está vazio?

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

  • Membro VIP

Olá @Dafne Guimarães.

 

10 horas atrás, Dafne Guimarães disse:

int main() {
	recebe_valor();
	...
}

void recebe_valor(){
  ...
  calcula_valor(a, b, c);
}

void calcula_valor(float a, float b, float c){
  ...
  imprime_valor (raiz1, raiz2, bhask);
}

 

 

Outro ponto importante. Você não deve ficar invocando um procedimento dentro do outro. O mais correto seria deixar a função terminar, ai volta para o main() e invoca um próximo método.

 

Perceba que o nome do primeiro método é recebe_valor(). Dentro dele você invoca o calcula_valor(), mas entenda que uma coisa não está "dentro" da outra! Receber é receber, calcular é calcular... são etapas diferentes. Primeiro recebe, depois calcula, depois imprimi. Da forma que você fez, fica parecendo que "calcular" é uma sub-estapa para receber! E não é!

 

 

Poderia ser algo como:

int main() {
    recebe_valor();
    calcula_valor(a, b, c);
    imprime_valor (raiz1, raiz2, bhask);
}

Veja que isso é só um esboço, você precisa efetuar as adaptações necessárias, como usar algumas variáveis globais, e/ou fazer alguma função retornar algum valor etc.

 

 

No aguardo.

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

9 horas atrás, omegahugal disse:

Qual o valor de b nessa função? não está vazio?

Shii! Foi isso o meu erro! Esqueci de passar o valor no float imprime_valor (float raiz1, float raiz2, float bhask, float b). Modifiquei lá em cima e agora foi! Além do (2.a) que esqueci de pôr debaixo da função. 

9 horas atrás, omegahugal disse:


float imprime_valor(float raiz1, float raiz2, float bhask)

{

 

valeu, muito obrigada! :)

adicionado 1 minuto depois
11 minutos atrás, Simon Viegas disse:

Olá @Dafne Guimarães.

 

 

Outro ponto importante. Você não deve ficar invocando um procedimento dentro do outro. O mais correto seria deixar a função terminar, ai volta para o main() e invoca um próximo método.

 

Perceba que o nome do primeiro método é recebe_valor(). Dentro dele você invoca o calcula_valor(), mas entenda que uma coisa não está "dentro" da outra! Receber é receber, calcular é calcular... são etapas diferentes. Primeiro recebe, depois calcula, depois imprimi. Da forma que você fez, fica parecendo que "calcular" é uma sub-estapa para receber! E não é!

 

 

Poderia ser algo como:


int main() {
    recebe_valor();
    calcula_valor(a, b, c);
    imprime_valor (raiz1, raiz2, bhask);
}

Veja que isso é só um esboço, você precisa efetuar as adaptações necessárias, como usar algumas variáveis globais, e/ou fazer alguma função retornar algum valor etc.

 

 

No aguardo.

 

Pois é, então, eu fazia isso, ai ontem mandando pra uma colega ele falou disso e falou pra fazer como eu fiz nessa programação ae. Mas já que você está falando isso, vou voltar a fazer como antes mesmo. Lembro do professor ter ensinado como você falou.

 

Obrigada.

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

  • Membro VIP
9 minutos atrás, Dafne Guimarães disse:

Pois é, então, eu fazia isso, ai ontem mandando pra uma colega ele falou disso e falou pra fazer como eu fiz nessa programação ae. Mas já que você está falando isso, vou voltar a fazer como antes mesmo. Lembro do professor ter ensinado como você falou.

 

Beleza. Qualquer coisa posta o código atual para analisarmos ou, se for o caso, onde tem dúvidas.

 

No aguardo.

  • Curtir 1
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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!