Aula 4


Resolução dos exercícios

// programa principal que testa as funcionalidades das varias funções utilizadas para a 
// resolução dos vários exercicios

#include <iostream.h>

// inclui-se para se ter acesso à função sqrt

#include <cmath.h>

using namespace std;

// declaração das funções

float norma_vector(float , float , float );
void normaliza(float& , float& , float& );
float quadrado(float );
float norma_vector_2(float , float , float );
float raiz_postiva_equacao_de_2_grau(float , float , float );

int fibonacci(int );
int factorial(int );

int primeira_soma(int , int );
void segunda_soma(int , int , int &);

bool caracteres_iguais(char ,char );
bool my_and(bool , bool );
bool my_or(bool , bool );

void desenhar_caixa(void);

int read_int(void);
void write_int(int );


int main(void)
{
   float a,b,c,norma, raiz;
   int soma_1, soma_2, num;
   char ca,cb;        
   
   cout << " Introduza tres numeros de virgula flutuante " << endl;
   cin >> a >> b >> c;

   norma = norma_vector(a,b,c);

   cout << " A norma de " << a << ", " << b << " e " << c << " e " << norma << endl;
   normaliza(a,b,c);
   cout << " O vector normalizado : " << a << ", " << b << " e " << c << endl;

   norma = norma_vector_2(a,b,c);

   cout << " A norma dw " << a << ", " << b << " e " << c << " e " << norma << endl;

   raiz = raiz_postiva_equacao_de_2_grau(2,5,3);

   cout << " A raiz positiva da equacao de 2 grau com os valores dw a = 2 , b = 5 e c = 3 e ";
   cout  << raiz << endl;
   cout << "insira dois caracteres : "
   cin >> ca >> cb;
   cout << " Os caracteres inseridos sao ";
   if (caracteres_iguais(a,b))
     cout << "iguais";
   else
     cout << "diferentes";
   cout << endl;

   cout << " A serie fibonacci com 30 digitos: " << fibonacci(30) << endl;

   soma_1 = primeira_soma(4,5);

   cout << " A soma de " << 4 << " e " << 5 << " e " << soma_1 << endl;

   segunda_soma(4,5,soma_2);

   cout << " A soma de " << 4 << " e " << 5 << "(exemplo 2) e " << soma_2 << endl;

   cout << " O factorial de 5 e " << factorial(5) << endl;

   cout << " 0 and 1 e igual " << my_and(0,1) << endl;

   cout << " 0 or 1 e igual " << my_or(0,1) << endl;

   desenhar_caixa();

   return EXIT_SUCCESS;
}

// calcula o quadrado dum numero com virgula flutuante

float quadrado(float num)
{
        return num*num;
}

// calcula a norma do vector (os três numero do parametro)

float norma_vector(float num_1, float num_2, float num_3)
{
        return ((num_1*num_1)+(num_2*num_2)+(num_3*num_3));
}

// calcula a norma do vector com a utilização da função quadrado

float norma_vector_2(float num_1, float num_2, float num_3)
{
        return (quadrado(num_1)+quadrado(num_2)+quadrado(num_3));
}

// normaliza o vector composto pelos três argumentos
void normaliza(float &a, float &b, float &c)
{
  float norma = norma_vector_2(a,b,c);
  a = a/norma;
  b = b/norma;
  c = c/norma;

}
// calcula a raiz positiva duma equação de segundo grau

float raiz_postiva_equacao_de_2_grau(float a, float b, float c)
{
        return (b+(sqrt(quadrado(b)-(4*a*c))/(2*a)));
}

// verifica se dois carateres são iguais

bool caracteres_iguais(char c_1,char c_2)
{
        return (c_1 == c_2);
}


// realiza a formula de fibonacci

int fibonacci(int n)
{
        if(n == 0)
                return 0;
        if(n == 1)
                return 1;
        return (fibonacci(n-1)+fibonacci(n-2));
}

// calcula a soma de dois números

int primeira_soma(int num_1,int num_2)
{
        return num_1 + num_2;
}

// calcula a soma de dois números (passagem por referência)

void segunda_soma(int num_1, int num_2, int &soma)
{
        soma = num_1 + num_2;
}

// calcula o factorial de um número

int factorial(int n)
{
        if(n==1)
                return 1;

        return n*factorial(n-1);
}