Teste 2 - Engenharia mecânica

7
Algoritmos e Programação Teste 02 Prof. Marcos Saúde [email protected] Aluno: Thiago Toscano Ferrari Curso: Engª Mecânica - Noturno

description

Material de apoio para Algoritmos e Programação da Faculdade Pitágoras em Linhares - 2010

Transcript of Teste 2 - Engenharia mecânica

Page 1: Teste 2 - Engenharia mecânica

Algoritmos e ProgramaçãoTeste 02

Prof. Marcos Saú[email protected]

Aluno: Thiago Toscano Ferrari

Curso: Engª Mecânica - Noturno

Page 2: Teste 2 - Engenharia mecânica

Teste 02 Desenvolva um programa (em Pascal) que leia uma

Data de Nascimento e a Data Atual e calcule a idade da Pessoa;

O programa deve usar:

Uma função chamado BISSEXTO, que recebe o valor de um ano como parâmetro de entrada (número inteiro) e retorna um valor Boolean (lógico). A regra utilizada será: o ano é bissexto se for divisível por 4 e não for divisível por 100, ou ser for divisível por 400;

Uma função chamada DATA_VALIDA, que recebe três números inteiros como parâmetro de entrada (dia, mês e ano), e retorna um valor Boolean (lógico). A data será válida (função retorna True) se seguir as seguintes regras:

A) Para os meses 1,3,5,7,8,10 e 12, o dia deve ser de 1 a 31; B) Para os meses 4,6,9 e 11, o dia deve ser de 1 a 30; C) Caso o mês seja 2: se o ano for bissexto o dia deve ser de 1 a

29, caso contrário, o dia deve ser de 1 a 28; Obs: Esta função, como visto na letra C, poderá usar a função

BISSEXTO referida no tópico anterior;

Page 3: Teste 2 - Engenharia mecânica

Teste 02 Um procedimento chamado Calcular_Idade, que

recebe como parâmetro de entrada duas datas (dia1, mes1, ano1, dia2, mes2 e ano2) – indicativas de Data do Nascimento e Data Atual. Este procedimento deverá usar a função DATA_VALIDA para verificar se as datas entradas estão de acordo com as regras de validade. O procedimento deve exibir uma mensagem de erro, caso uma das datas seja inválida. Caso contrário, o procedimento deverá calcular e informar na tela a idade calculada;

O programa deve ler a Data de Nascimento (dia, mês e ano) e a Data Atual (dia, mês e ano) e usar o procedimento Calcular_Idade;

Page 4: Teste 2 - Engenharia mecânica

Teste 02 - RespostaProgram Calculo_de_idade ; uses ctr; var D1, M1, A1, D2, M2, A2, data : Integer ; function Bissexto ( k : integer ) : boolean ; begin Bissexto := ((( k mod 4 ) = 0 ) and ( ( k mod 100 ) <> 0 )) or (( k mod

400 ) = 0 ) ; end;

function data_valida ( d, m, k: integer ) : boolean ; begin if ( d < 1 ) then data_valida := false else if (( m = 1 ) or ( m = 3 ) or ( m = 5 ) or ( m = 7) or ( m = 8) or ( m

= 10) or ( m = 12 ) and ( d < 32 )) then data_valida := true

Page 5: Teste 2 - Engenharia mecânica

Teste 02 - Respostaelse

if (( m = 4 ) or ( m = 6) or ( m = 9) or ( m = 11 ) and ( d < 31 )) then data_valida := true else

if (( Bissexto ( A1 ) ) and ( d < 30 ) and ( m = 2 ) and ( d >0 )) then

data_valida := true else

if (( m = 2 ) and ( d < 29 ) and ( d >0 ))then data_valida := true

else

data_valida := false end;

Page 6: Teste 2 - Engenharia mecânica

Teste 02 - Resposta procedure calcular_idade ( d1, m1, a1, d2, m2, a2 : integer ) ; var idade : integer ; begin idade := a2 - a1 ; if a1 > a2 then write (' A data é invalida' ) else if ( a1 <= a2 ) and ( m1 >= m2 ) and ( d1 >= d2 ) then idade := idade - 1 else if a1 <= a2 then idade := idade ; write ( ' A idade e : ',idade ) ; end;

Page 7: Teste 2 - Engenharia mecânica

Teste 02 - Resposta begin write ( 'Digite o dia em que voce nasceu:'); readln ( D1 ); write ( 'DIgite o mes em que voce nasceu:'); readln ( M1 ); write ( 'Digite o ano em que voce nasceu:'); readln ( A1 ); write ( 'Digite o dia atual:'); readln ( D2 ); write ( 'Digite o mes atual:'); readln ( M2 ); write ( 'Digite o ano atual:'); readln ( A2 ); if (( data_valida ( D1, M1, A1 )) and ( data_valida ( D2, M2, A2 ))) then calcular_idade ( D1, M1, A1, D2, M2, A2 ) else write (' A data é invalida' ) ; readkey ; end.