Ajuda da galera.

24 views
Skip to first unread message

José Luiz Braga

unread,
May 23, 2021, 9:00:23 PM5/23/21
to ccppbrasil
Estou iniciando na programação e estou tentando fazer funcionas um codigo, porem não estou conseguinto. Sera que alguem pode me ajudar?

Segue minha duvida: Trata-se de uma formula para calcular as 2 raizes de uma equação do segundo grau, a famosa formula de Baskara.

#include<iostream>
#include<math.h>

using namespace std;


int main() {
int a; //Variável de entrada
int b; //Variável de entrada
int c; //Variável de entrada
double r1; //Delta  
double r2; //Delta
double q1; //Raiz 1
double q2; //Raiz 2
cout<< "Digite a : " ;
cin >> a;
cout<< "Digite b : " ;
cin >> b;
cout<< "Digite c : " ;
cin >> c;
     r1 = (b*b)-4*a*c;
     r2 = sqrt (r1);
     printf ("sqrt(%f) = %f\n", r1, r2 ); //Raiz quadrada ( meu código termina aqui, até aqui         faz o que eu quero)
     
Daqui para baixo ele não faz os comandos.

     q1 = (-b-r2)/2*a;  (esses calculos não aparecem)
     q2 = (-b+r2)/2*a; (esses calculos não aparecem)
      
     printf("Raiz 1 = \n", q1); (aparecem vazias)
     printf("Raiz 2 = \n", q2); (aparecem vazias)
     
     
     return 0;
}

Fabio A Mazzarino

unread,
May 23, 2021, 10:04:03 PM5/23/21
to ccppb...@googlegroups.com
José:

Primeiro um warning, que não está causando um problema grave. Quando utilizar variáveis double tente usar %lf no printf, %lf é equivalente a long float, ou seja double. Vc fez assim no primeiro printf.

Depois uma falha que é fácil esquecer no começo. Vc não usou a chave %lf nos dois printf finais, por isso mesmo não houve resultado algum, tente fazer algo mais ou menos assim:
printf("Raiz 1 = %lf\n", q1);
printf("Raiz 2 = %lf\n", q2);

Eu corrigi a falha e funcionou td certinho.
O teste que eu fiz com com a: 1 b: 0 e c: -1

Vc pode tb usar o std::cout pra imprimir a saída:
std::cout << "sqrt(" << r1 << ") = " << r2 << std::endl

e
std::cout << "Raiz 1 = " << q1 << std::endl;
std::cout << "Raiz 2 = " << q2 << std::endl;

Tem gente que gosta de usar printf em C++ no lugar do std::cout por conta da facilidade de formatação de números em ponto flutuante. Na verdade std::cout tem muitas opções de formatação tb, eu recomendo vc dar uma olhada no link abaixo sobre algumas dicas sobre como formatar números com std::cout e iomanip.

Se precisar de mais alguma informação é só perguntar.


Fabio A. Mazzarino

--
Lab C++ - Código, Dicas e Snippets


--
http://ccppbrasil.github.io/
https://twitter.com/ccppbrasil
 
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "ccppbrasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para ccppbrasil+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/ccppbrasil/84d8d695-8574-438f-9175-5713439ba26en%40googlegroups.com.

José Luiz Braga

unread,
May 26, 2021, 6:04:38 PM5/26/21
to ccppb...@googlegroups.com
Show Fabio.

Preciosa dica.

 Apenas uma coisa esse "1" do %1f , representa o que, pois eu de curiosidade coloquei 2,3,4 e funcionou.

Abraço.

de...@roo.com.br

unread,
May 26, 2021, 8:47:34 PM5/26/21
to ccppbrasil
recomendaria usar o inttypes.h

'''
'#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

printf(
    "%" PRIu32 "\n"
    "%" PRIu32 "\n"
    "%" PRIu32 "\n"
    "%" PRIu32 "\n"
    "%" PRIu32 "\n"
    "%" PRIu32 "\n"
    "%" PRIu32 "\n",
    UINT32_MAX,
    UINT32_MAX,
    UINT32_MAX,
    UINT32_MAX,
    UINT32_MAX,
    UINT32_MAX,
    UINT32_MAX);
'''

https://en.wikipedia.org/wiki/C_data_types#inttypes.h

Fabio A Mazzarino

unread,
May 27, 2021, 7:24:05 AM5/27/21
to ccppb...@googlegroups.com
Nao é 1 é l.

lf de long float. :o)


--
Lab C++ - Dicas, Código e Snippets
http://labcpp.com.br

Reply all
Reply to author
Forward
0 new messages