Mandar um cafézinho para o programador:


Me ajude a transformar café em código!
Mostrando postagens com marcador IF e ELSE. Mostrar todas as postagens
Mostrando postagens com marcador IF e ELSE. Mostrar todas as postagens

Equação do segundo grau em C++ - Bháskara

Neste tutorial de C++, vamos aprender como resolver uma equação do 2º grau, usando a fórmula de Bháskara, em C++. É uma questão de nossa lista de exercícios de testes condicionais:
  • 11. Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax² + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:   
    Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
       
    Se o delta calculado for negativo, a equação não possui raízes reais. Informe ao usuário e encerre o programa;
       
    Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
     
    Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário;

Fórmula de Bháskara em C++

Primeiro, pedimos os três coeficientes a, b c.
Também declaramos a variável delta para armazenar o delta (jura?) e root1 e root2, para armazenar as raízes.

O primeiro teste é verificar se a é diferente de 0, somente se for é que podemos calcular as raízes.
Se não for, cai no ELSE e avisamos que a equação não existe.

Sendo diferente de 0, temos que calcular o delta:
De Bháskara: delta = b² - 4ac

Agora, vamos testar o delta.
Se for negativo, dizemos que não tem raiz real.
Se for 0, calculamos a única raiz: (-b/2a)
Se for maior que 0, calculamos as duas raizes (-b- raiz(delta))/2a e (-b+raiz(delta))/2a

Veja como ficou nosso código:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float a, b, c, delta,
          root1, root2;

    cout << "Coeficiente a: ";
    cin >> a;

    cout << "Coeficiente b: ";
    cin >> b;

    cout << "Coeficiente c: ";
    cin >> c;

    if(a != 0){
        delta = (b*b) - (4*a*c);

        if(delta<0){
            cout <<"Não tem raízes reais\n";
        }
        else if (delta==0){
            root1=(-b)/(2*a);
            cout << "Possui apenas uma raiz real: "<<root1<<endl;
        }else{
            root1=(-b - sqrt(delta))/(2*a);
            root2=(-b + sqrt(delta))/(2*a);
            cout << "Raiz 1: "<<root1<<endl;
            cout << "Raiz 2: "<<root2<<endl;
        }
    }else{
        cout <<"a=0, não é uma equação do segundo grau\n";
    }

}

Desafio de C++

Você consegue resolver essa questão para dar raízes complexas?

3 Números em ordem crescente e decrescente em C++

Neste tutorial, vamos resolver dois exercícios da nossa lista de testes condicionais.
  • 03. Faça um programa que peça 3 números e os coloque em ordem crescente.
  • 04. Faça um programa que peça 3 números e os coloque em ordem decrescente.

3 números em ordem crescente

Vamos armazenar os números nas variáveis num1, num2 e num3, e também usaremos uma variável temporária, uma auxilar, a temp.

A ideia é a seguinte: queremos colocar o maior valor digitado na variável num1. O segundo maior valor, na variável num2 e o menor na num3.

Para isso, vamos fazer três comparações:

  1. Comparar num1 com num2, se num2 for maior, invertemos os valores. Após esse primeiro teste, garantimos que o valor contido em num1 é maior que num2.
  2. Comparar num1 com num3, se num3 for maior, invertemos os valores. Após esse segundo teste, garantimos que o valor contido em num1 é maior que em num2 e agora maior que num3.
  3. Agora temos num2 e num3, se num3 for maior, devemos inverter os valores, assim teremos o valor contido em num2 maior que num3.


Para fazer as inversões de valores, usaremos o tutorial:
Como trocar o valor de variáveis

Nosso código fica:
#include <iostream>
using namespace std;

int main()
{
    int num1, num2, num3, temp;

    cout << "Numero 1: ";
    cin >> num1;

    cout << "Numero 2: ";
    cin >> num2;

    cout << "Numero 3: ";
    cin >> num3;

    if(num2 > num1){
        temp = num1;
        num1 = num2;
        num2 = temp;
    }

    if(num3 > num1){
        temp = num1;
        num1 = num3;
        num3 = temp;
    }

    if(num3 > num2){
        temp = num2;
        num2 = num3;
        num3 = temp;
    }

    cout <<num1<<" >= "<<num2<<" >= "<<num3<<endl;
}

3 números em ordem decrescente

A lógica é a mesma da anterior, apenas queremos que num1 tenha o menor valor, num2 o segundo menor valor e num3 o maior valor.

Nosso código fica:

#include <iostream>
using namespace std;

int main()
{
    int num1, num2, num3, temp;

    cout << "Numero 1: ";
    cin >> num1;

    cout << "Numero 2: ";
    cin >> num2;

    cout << "Numero 3: ";
    cin >> num3;

    if(num2 < num1){
        temp = num1;
        num1 = num2;
        num2 = temp;
    }

    if(num3 < num1){
        temp = num1;
        num1 = num3;
        num3 = temp;
    }

    if(num3 < num2){
        temp = num2;
        num2 = num3;
        num3 = temp;
    }

    cout <<num1<<" <= "<<num2<<" <= "<<num3<<endl;
}

Comparando dois números em C++: Maior, Menor ou Iguais

Questão resolvida, com código comentado, do tutorial de Exercícios de testes condicionais em C++:
01. Faça um programa que peça dois números, e diga qual é maior ou se são iguais.

Como comparar dois números em C++

Vamos armazenar os números nas variáveis num1 e num2.
Primeiro, vamos testar se a primeira é maior que a segunda, se for cai no primeiro IF e diz isso no cout.

Se não for, cai no ELSE.
Nesse ELSE, o segundo número é maior que o primeiro, ou pode ser igual.

Testamos isso com um novo IF aninhado, para saber se num2 é maior que num1, se for, avisamos isso.

Caso num1 não seja maior que num2, ou num2 não seja maior que num1, então cai no ELSE aninhado e temos necessariamente que os números são iguais.

Veja como ficou nosso código:

#include <iostream>
using namespace std;

int main()
{
    int num1, num2;

    cout << "Numero 1: ";
    cin >> num1;
    cout << "Numero 2: ";
    cin >> num2;

    if(num1>num2)
        cout <<num1<<" é maior que "<<num2<<endl;
    else
        if(num2>num1)
            cout <<num2<<" é maior que "<<num1<<endl;
        else
            cout << "São iguais"<<endl;
    return 0;
}

Exercícios de Testes Condicionais em C++

Pessoal, encerramos mais uma vez uma seção de nosso curso de C++.
Parabéns se chegou aqui. Agora vamos praticar nossos conhecimentos fazendo alguns exercícios.

E lembrem-se: tentem bastante, mas muito, muito mesmo.
Não de? Pensa mais um pouco. Depois mais, dá uma volta, esfria a cabeça, e tentem de novo.

Resolver problemas é sinônimo de ser programador, portanto tente resolver os exercícios abaixo, usando seus conhecimentos básicos de C++ e de testes condicionais.

Problemas de testes condicionais em C++

01. Faça um programa que peça dois números, e diga qual é maior ou se são iguais.
Como comparar dois números

02. Faça um programa que diz se um número recebido é positivo ou negativo.
Código na apostila

03. Faça um programa que pede dois inteiro e armazene em duas variáveis. Em seguida, troque o valor das variáveis e exiba na tela
Como trocar o valor de duas variáveis

04. Faça um programa que peça 3 números e os coloque em ordem crescente.

05. Faça um programa que peça 3 números e os coloque em ordem decrescente.
3 números em ordem crescente e decrescente

06. Programe um software que recebe as coordenadas X e Y do usuário, e diga em qual quadrante o ponto está.

07. Faça um programa de calculadora simples, que pede dois números ao usuário, em seguida exibe um menu onde ele vai escolher que operação será realizada. A operação e a saída devem estar em um switch case.

08. Usando os conceitos de switch case, faça um programa que pergunte o mês ao usuário (número de 1 até 12), e diga quantos dias aquele mês possui. Fevereiro tem 28 dias (não é bissexto).
Quantos dias o mês tem

09. Usando os conceitos de switch case, faça um programa que pergunte o mês ao usuário (número de 1 até 12), e diga quantos dias aquele mês possui, incluindo se é ano bissexto ou não.
Código na apostila

10. Faça um programa que recebe os três lados de um triângulo e diz se é equilátero, isósceles ou escaleno.
Tipos de triângulo em C++

11. Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax² + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:

    Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
    Se o delta calculado for negativo, a equação não possui raizes reais. Informe ao usuário e encerre o programa;
    Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
    Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário;


PS: Inclua a biblioteca cmath (#include <cmath>) e use a função sqrt(x) para calcular a raiz de x.

Equação do segundo grau com Bháskara em C++

Operadores Relacionais (de comparação) em C++: > , < , >= , <=, == e !=

Neste tutorial de nosso Curso de C++, vamos aprender quais são e como usar os operadores relacionais, também conhecidos como operadores de comparação, que são:
  • > maior que 
  • < menor que 
  • >= maior ou igual
  • <= menor ou igual
  • == igual
  • != diferente

Como comparar coisas em C++

Embora este tutorial seja um pouco chato e teórico, ele é necessário para entendermos melhor o uso dos testes condicionais IF e ELSE, que iremos usar nos próximos tutoriais.

O que vamos fazer agora é ensinar você a realizar a operação de comparação, ela é feita assim:
operando1 operador operando2

Ou seja, vamos usar dois operandos (dados, como números ou caracteres) e um operador (no caso, um relacional).

  • E esta operação sempre retorna um dos valores:
  • TRUE (verdadeiro ou 1)
  • FALSE (falso ou 0)


Sempre.
Operação de relação é sempre uma pergunta que a resposta é 1 ou 0, true ou false.
Ok?

Operador de igualdade em C++: ==

Bom, vamos lá.

Se quisermos saber se um valor x é igual a um y, fazemos:
x == y

Veja bem, é: x == y
E não: x = y

Vamos testar se 1 é igual 1 e depois se é igual a 2, rode o código abaixo:
#include <iostream>
using namespace std;

int main()
{
    cout << (1 == 1) << endl;
    cout << (1 == 2) << endl;

    return 0;
}
O resultado foi:
Como fazer comparações em C++
Realmente, 1 é igual 1 (deu 1, TRUE, o resultado da comparação).
E 1 não é igual a 2 (deu 0, FALSE, o resultado da comparação).

Operador de diferença em C++: !=

Assim como tem um operador que verifica a igualdade, tem outro que verifica a não-igualdade.
Se dois valores forem diferentes, a operação de comparação com != vai resultar TRUE.
Se forem iguais, resulta em FALSE.

Vamos ver na prática, compile e rode:
#include <iostream>
using namespace std;

int main()
{
    cout << ('a' != 'b') << endl;

    return 0;
}
Ou seja, o caractere 'a' é diferente de 'b'.

Agora teste se 'a' é diferente de 'A'.
É ?

Operador de maior em C++: >

Se quisermos testar se um valor X é maior que um valor Y, usamos o operador: >
X > Y

Se X for maior, ele retorna TRUE (1).
Se for igual ou menor, ele retorna FALSE (0).

Operador de maior igual em C++: >=

Se quisermos testar se um valor é maior, ou igual, usamos: >=
X >= Y

Ele retorna 1 (true) se X for maior ou igual que Y, e 0 caso X seja menor.

Por exemplo, para testar se uma pessoa já pode dirigir, beber, entrar no motel...devemos fazer:
idade >= 18


Operador Menor e Menor igual em C++: < e <=

Analogamente, existem os operador menor e menor igual.

Para testarmos se uma pessoa pode doar sangue, devemos testar:
idade < 65

Para saber quem é isento de declarar imposto de renda, devemos testar:
valor <= 28559.70


Cuidado com comparações

Um erro muito grave é confundir:
x = y;

Com:
x == y;

No primeiro caso, é uma atribuição.
A variável x está recebendo o valor da variável y.

No segundo caso é uma comparação.
Sempre leia comparação como uma pergunta: x é igual a y?

E quando você pergunta as coisas pro C++ ele só te dá duas respostas: 1 ou 0
Assim, se quiser armazenar o valor de uma comparação, declare um booleano, ok?

  • Exercício de C++

Faça um programa que pede dois valores ao usuário (pode ser um número ou um caractere), em seguida exiba todas as operações de comparação, como no exemplo abaixo:


Operadores de comparação em C++

Tentou?
Conseguiu?

Nosso código ficou assim:
#include <iostream>
using namespace std;

int main()
{
    int op1, op2;

    cout << "Primeiro valor: ";
    cin >> op1;

    cout << "Segundo valor : ";
    cin >> op2;

    cout << op1 << " >  " << op2 <<" : "<<(op1>op2)<<endl;
    cout << op1 << " <  " << op2 <<" : "<<(op1<op2)<<endl;
    cout << op1 << " >= " << op2 <<" : "<<(op1>=op2)<<endl;
    cout << op1 << " <= " << op2 <<" : "<<(op1<=op2)<<endl;
    cout << op1 << " == " << op2 <<" : "<<(op1==op2)<<endl;
    cout << op1 << " != " << op2 <<" : "<<(op1!=op2)<<endl;
    return 0;
}
E o seu?

Ajude o C++ Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo