Mini-Projecto Nº2 COMPUTAÇÃO E PROGRAMAÇÃO 4ª feira das 16h30 às 18 INSCRIÇÕES – A realização e entrega deste trabalho por parte dos alunos carece de inscrição prévia. O trabalho é individual. PRAZOS - Este enunciado é disponibilizado aos alunos na aula prática da 3ª feira das 16h30 às 18. O trabalho tem a duração de 30 minutos, após os quais se realizará uma avaliação local sumária, que será completada com o resultado da análise do mini- projecto enviado por e-mail ao respectivo docente, logo após o aluno ter terminado o miniprojecto. SUPORTE – O trabalho deve conter um ficheiro com o código (.cpp) da respectiva implementação em C++. O programa deve conter comentários internos . Escreva um programa que lê os coeficientes de duas rectas (A, B, C e D, E, F) dadas na forma Ax+By+C=0 e Dx+Ey+F=0 e indica se são paralelas, perpendiculares ou meramente concorrentes, utilizando para tal a função Declive, disponibilizada, sabendo que se os declives forem iguais são paralelas, se o producto entre eles for -1 são perpendiculares ou sendo outra situação são concorrentes. Caso se intersectem (perpendiculares ou concorrentes) deverá utilizar as formulas disponibilizadas para determinar as coordenadas do ponto de intersecção. O programa deverá efectuar os seguintes procedimentos: • • • O programa deverá correr ciclicamente até que o utilizador responda que não pretende continuar. O programa deverá pedir ao utilizador os dois ternos correspondentes aos coeficientes das duas rectas (A, B, C) e (D, E, F), e informar o utilizador se se tratam de rectas paralelas, perpendiculares ou meramentes concorrentes. Caso as rectas se intersectem deverá apresentar o ponto de intersecção dado por: x= BF − CE CD − AF , y= EA − BD EA − BD /* Esta função recebe os parametros de uma recta A, B e C e devolve o seu declive. */ double Declive(double A, double B, double C) { return (-A/B); } Resolução /********************************************************************* * Programa para verificar se duas rectas dadas na forma Ax+By+C=0 e * Dx+Ey+F=0, são paralelas, perpendiculares ou apenas concorrentes. * Caso se intersectem, determina o ponto de intersecção. * A funcao Declive e´usada para determinar o declive das rectas. Se * for igual são paralelas, se o producto for -1 são perpendiculares * e caso contrário são concorrentes. * * Input: Valores dos coeficientes das rectas, Response * Output: Tipo de recta, Ponto de intersecção (caso exista) *********************************************************************/ #include <iostream> using namespace std; // cin, cout, <<, >> double Declive(double A, double B, double C); int main() { char response = 'S'; // Valor a S para arranque double x, y; while (response == 'S') { // Pede ao utilizador os coeficientes A, B e C de uma recta cout << "\nValor dos coeficientes A, B e C da primeira recta: "; double A, B, C; cin >> A >> B >> C; // Pede ao utilizador os coeficientes D, E e F de outra recta cout << "\nValor dos coeficientes D, E e F da segunda recta: "; double D, E, F; cin >> D >> E >> F; // Calcula o Declive das rectas double dec1 = Declive(A, B, C); double dec2 = Declive(D, E, F); // Verifica a relação entre as rectas: paralelas, perpendiculares ou concorrentes // e se houver intersecção, calcula o ponto if (dec1 == dec2) cout << "\n As rectas sao PARALELAS\n"; else { x = (B * F - C * E) / (E * A - B * D); y = (C * D - A * F) / (E * A - B * D); } if (dec1*dec2 == -1.0) { cout << "\n As rectas sao PERPENDICULARES\n"; cout << "O ponto de interseccao e' (" << x << "," << y <<")\n"; } else if (dec1 != dec2) { cout << "\n As rectas sao CONCORRENTES\n"; cout << "O ponto de interseccao e' (" << x << "," << y <<")\n"; } // Pergunta ao utilizador se pretende converter mais temperaturas cout << "\n Pretende continuar (S ou N)? "; cin >> response; } } /* Esta função recebe os parametros de uma recta A, B e C e devolve o seu declive. */ double Declive(double A, double B, double C) { return (-A/B); } Valores de teste: A B C 1 -1 1 1 1 -2 2 -1 4 D 1 1 1 E F -1 1 -1 0 1 -1 paralelas perpendiculares concorrentes 1 1 -1 2