Você está aqui: C ::: Dicas & Truques ::: Matemática e Estatística

Como resolver uma equação do segundo grau em C - Como calcular Bhaskara em C

Quantidade de visualizações: 674 vezes
Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem C.

Definimos como equação do 2º grau ou equações quadráticas qualquer equação do tipo ax² + bx + c = 0 em que a, b e c são números reais e a ≠ 0. Ela recebe esse nome porque, no primeiro membro da igualdade, há um polinômio de grau dois com uma única incógnita.

Note que, dos coeficientes a, b e c, somente o a é diferente de zero, pois, caso ele fosse igual a zero, o termo ax² seria igual a zero, logo a equação se tornaria uma equação do primeiro grau: bx + c = 0.

Independentemente da ordem da equação, o coeficiente a sempre acompanha o termo x², o coeficiente b sempre acompanha o termo x, e o coeficiente c é sempre o termo independente.

Como resolver uma equação do 2º grau

Conhecemos como soluções ou raízes da equação ax² + bx + c = 0 os valores de x que fazem com que essa equação seja verdadeira. Uma equação do 2º grau pode ter no máximo dois números reais que sejam raízes dela. Para resolver equações do 2º grau completas, existem dois métodos mais comuns:

a) Fórmula de Bhaskara;
b) Soma e produto.

O primeiro método é bastante mecânico, o que faz com que muitos o prefiram. Já para utilizar o segundo, é necessário o conhecimento de múltiplos e divisores. Além disso, quando as soluções da equação são números quebrados, soma e produto não é uma alternativa boa.

Como resolver uma equação do 2º grau usando Bhaskara

Como nosso código C vai resolver a equação quadrática usando a Fórmula de Bhaskara, o primeiro passo é encontrar o determinante. Veja:

\[\Delta =b^2-4ac\]

Nem sempre a equação possui solução real. O valor do determinante é que nos indica isso, existindo três possibilidades:

a) Se determinante > 0, então a equação possui duas soluções reais.
b) Se determinante = 0, então a equação possui uma única solução real.
c) Se determinante < 0, então a equação não possui solução real.

Encontrado o determinante, só precisamos substituir os valores, incluindo o determinante, na Fórmula de Bhaskara:

\[x = \dfrac{- b\pm\sqrt{b^2- 4ac}}{2a}\]

Vamos agora ao código C. Nossa aplicação vai pedir para o usuário informar os valores dos três coeficientes a, b e c e, em seguida, vai apresentar as raizes da equação:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

// função principal do programa
int main(int argc, char *argv[]){
  // os coeficientes
  float a, b, c;
  // as duas raizes, a imaginaria e o discriminante
  float raiz1, raiz2, imaginaria, discriminante;

  // vamos pedir para o usuário informar os valores dos coeficientes
  printf("Valor do coeficiente a: ");
  scanf("%f", &a);
  printf("Valor do coeficiente b: ");
  scanf("%f", &b);
  printf("Valor do coeficiente c: ");
  scanf("%f", &c);
    
  // vamos calcular o discriminante
  discriminante = (b * b) - (4 * a * c);
    
  // a equação possui duas soluções reais?
  if(discriminante > 0){
    raiz1 = (-b + sqrt(discriminante)) / (2 * a);
    raiz2 = (-b - sqrt(discriminante)) / (2 * a);
    printf("Existem duas raizes: x1 = %f e x2 = %f", raiz1, raiz2);
  }
  // a equação possui uma única solução real?
  else if(discriminante == 0){
    raiz1 = raiz2 = -b / (2 * a);
    printf("Existem duas raizes iguais: x1 = %f e x2 = %f", raiz1, 
      raiz2);  	
  }
  // a equação não possui solução real?
  else if(discriminante < 0){
    raiz1 = raiz2 = -b / (2 * a);
    imaginaria = sqrt(-discriminante) / (2 * a);
    printf("Existem duas raízes complexas: x1 = %f + %f e x2 = %f - %f",
      raiz1, imaginaria, raiz2, imaginaria);
  }
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

Valor do coeficiente a: 1
Valor do coeficiente b: 2
Valor do coeficiente c: -3
Existem duas raizes: x1 = 1.0 e x2 = -3.0

Link para compartilhar na Internet ou com seus amigos:

C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercícios Resolvidos de C - Lendo a idade de um nadador e classificando sua categoria como infantil, juvenil, adolescente, adulto ou sênior

Quantidade de visualizações: 269 vezes
Pergunta/Tarefa:

Escreva um programa C que solicita a idade de um nadador e classifica sua categoria de acordo com as seguintes regras:

a) De 5 a 7 anos - Infantil;
b) De 8 a 10 anos - Juvenil;
c) De 11 a 15 anos - Adolescente;
d) De 16 a 30 anos - Adulto;
e) Acima de 30 anos - Sênior.

Sua saída deverá ser parecida com:

Informe sua idade: 19
Sua categoria é Adulto
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

int main(int argc, char *argv[]) {
  // variáveis usadas na resolução do problema
  int idade;
    
  // vamos solicitar a idade do nadador
  printf("Informe sua idade: ");
  scanf("%d", &idade);
     
  // vamos verificar a categoria do nadador
  if((idade >= 5) && (idade <= 7)) {
    printf("Sua categoria é Infantil");  
  }
  else if((idade >= 8) && (idade <= 10)) {  
    printf("Sua categoria é Juvenil");  
  }
  else if((idade >= 11) && (idade <= 15)) {
    printf("Sua categoria é Adolescente");  
  }
  else if((idade >= 16) && (idade <= 30)) {
    printf("Sua categoria é Adulto");  
  }
  else if(idade > 30) {
    printf("Sua categoria é Sênior");  
  }
  else {
    printf("Não pertence a nenhuma categoria.");  
  }
   
  printf("\n\n");
  system("PAUSE");
  return 0;
}



C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercício Resolvido de C - Ler três números inteiros e indicar se eles estão em ordem crescente ou decrescente

Quantidade de visualizações: 1039 vezes
Pergunta/Tarefa:

Escreva um programa C que pede para o usuário informar três números inteiros e informa se eles estão em ordem crescente ou decrescente. Se os números estiverem em ordem crescente, escreva "Ordem Crescente". Se estiverem em ordem decrescente, escreva "Ordem Decrescente". Do contrário escreva "Sem ordem definida".

Sua saída deverá ser parecida com:

Primeiro número: 4
Segundo número: 8
Terceiro número: 11
Ordem Crescente
Resposta/Solução:

Veja a resolução comentada deste exercício em C:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do exercício
  int a, b, c;
	
  setlocale(LC_ALL,""); // para acentos do português
  
  // vamos pedir para o usuário informar três números
  printf("Primeiro número: ");
  scanf("%d", &a);
  printf("Segundo número: ");
  scanf("%d", &b);
  printf("Terceiro número: ");
  scanf("%d", &c);
    
  // os números estão em ordem crescente?
  if (a < b && b < c){
    printf("Ordem Crescente");
  }
  // os números estão em ordem decrescente?
  else if (a > b && b > c){
    printf("Ordem Decrescente");
  }
  // sem ordem definida
  else{
    printf("Sem ordem definida");
  } 
	
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



C ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

C para iniciantes - Como ordenar os elementos de um vetor de inteiros usando a ordenação da bolha (Bubble Sort) na linguagem C

Quantidade de visualizações: 9569 vezes
O método ou algorítmo de ordenação da bolha é uma das técnicas mais simples de ordenação. No entanto, este método não é eficiente, visto que o tempo despendido para sua execução é muito elevado se comparado à outros métodos existentes. Geralmente usamos este método quando queremos ordenar 50 elementos ou menos.

O entendimento deste método é fácil. Se estivermos ordenandos os valores do menor para o maior, o método da bolha percorre os elementos do vetor (array), comparando e movendo o menor valor para a primeira posição do vetor, tal qual bolhas indo para a superfície. Veja um exemplo completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

void bubble_sort(int matriz[], int tam){
  int temp, i, j;

  for(i = 0; i < tam; i++){
    for(j = 0; j < tam; j++){
      if(matriz[i] < matriz[j]){
        temp = matriz[i];
        matriz[i] = matriz[j];
        matriz[j] = temp;
      }
    }
  }
}

int main(int argc, char *argv[])
{
  int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11};
  int i, tamanho = 9;

  // imprime a matriz sem a ordenação
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }

  // vamos ordenar a matriz
  bubble_sort(valores, tamanho);

  // imprime a matriz ordenada
  puts("\n");
  for(i = 0; i < 9; i++){
    printf("%d ", valores[i]);
  }

  puts("\n");
  system("pause");
  return 0;
}

Ao executar este código nós teremos o seguinte resultado:

Sem ordenação:
4, 6, 2, 8, 1, 9, 3, 0, 11

Ordenados:
0, 1, 2, 3, 4, 6, 8, 9, 11


Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 72 usuários muito felizes estudando em nosso site.