questao numero 1:
program ex1;
uses crt, dos;
var opcao1, opcao2: char; {opcao1 = escolher se é hoje ou amanha o compromisso; opcao2 = escolher se deseja ou nao terminar o programa}
h, m, subtracao: integer; {h = hora do compromisso, e armazena o horario do compromisso convertido para minutos; m = minuto do compromisso; subtracao = diferença entre o horario do sistema e o horario do compromisso}
hatual, matual, satual, csatual: word; {hatual = hora do sistema e armazena o horario do sistema convertido para minutos; matual = minuto do sistema; satual = segundo do sistema; csatual = centesimos de segundos do sistema}
horadodia: string; {horadodia = determinar se o compromisso do dia seguinte é de tarde, de manhã, de noite ou de madrugada}
begin
repeat
writeln('Escreva o dia do compromisso: (h para hoje, a para amanha)');
repeat
readln(opcao1);
if (opcao1 <> 'a') and (opcao1 <> 'h') then
writeln('Opcao invalida! Escreva h para hoje, ou a para amanha');
until (opcao1 = 'a') or (opcao1 = 'h');
repeat
writeln('Qual a hora do compromisso?');
readln(h);
if (h > 23) or (h < 0) then
writeln('Hora invalida! Entre com um numero entre 0 e 23');
until (h <= 23) and (h >= 0);
repeat
writeln('Qual o minuto do compromisso?');
readln(m);
if (m > 59) or (m < 0) then
writeln('Minuto invalido! Entre com um numero entre 0 e 60');
until (m >= 0) and (m <= 59);
h:=h*60+m;
gettime(hatual,matual,satual,csatual);
hatual:=hatual*60+matual;
subtracao:=h-hatual;
if (opcao1 = 'h') then
if (subtracao >= 0) then
writeln('Esteja preparado! Seu compromisso inicia daqui: ', subtracao div 60, 'h e ', subtracao mod 60, 'min')
else
writeln('Voce se atrasou para o compromisso! Ele iniciou ha: ', -subtracao div 60,'h e ',-subtracao mod 60, 'min')
else
begin
if (h >= 0) and (h < 5*60) then
horadodia:='madrugada'
else if (h >= 5*60) and (h < 12*60) then
horadodia:='manha'
else if (h >= 12*60) and (h < 18*60) then
horadodia:='tarde'
else if (h >= 18*60) and (h < 24*60) then
horadodia:='noite';
writeln('Amanha de ', horadodia, ' voce tem um compromisso agendado pras: ', h div 60,'h e ',h mod 60,'min');
end;
writeln('Deseja continuar o programa? (s ou n)');
repeat
readln(opcao2);
if (opcao2 <> 'n') and (opcao2 <> 's') then
writeln('Opcao invalida! Escreva s para continuar, ou n para terminar o programa');
until (opcao2 = 'n') or (opcao2 = 's');
clrscr;
until (opcao2 = 'n')
end.
questao numero 2:
program ex2;
uses crt;
var n, ntemp, contador, temp, i, j, capicua: integer; {n = numero a ser testado; ntemp = variavel temporaria para efetuar operacoes com o numero sem perder o numero original; contador = utilizado para contar quantos algarismos tem o numero a ser testado; temp = utilizado para calcular o exponencial de 10 e armazenar 1 se o numero for quadrado perfeito, e 0 caso contrario, e tambem armazenar o quadrado do numero, para testar se o numero é quadrado perfeito ou nao; i = contador do for; j = utilizado para armazenar quanto a metade do numero de algarismos do numero; capicua = armazena 1 se o numero for capicua, e 0 se não for}
begin
for n:=0 to 10001 do
begin
ntemp:=n;
contador:=0;
while (ntemp <> 0) do
begin
ntemp:=ntemp div 10;
contador:=contador+1;
end;
ntemp:=n;
j:=contador div 2;
capicua:=1;
while (contador >= j-1) and (capicua = 1) do
begin
temp:=1;
for i:=1 to contador-1 do
temp:=temp*10;
if (ntemp div temp <> ntemp mod 10) then
capicua:=0;
ntemp:=ntemp mod temp div 10;
contador:=contador-2;
end;
contador:=1;
repeat
temp:=contador*contador;
contador:=contador+1;
until (temp >= n);
if (temp = n) then
temp:=1
else
temp:=0;
if (capicua = 1) and (temp = 1) then
writeln(n, '-Esse numero eh capicua e quadrado perfeito!');
end;
readln;
end.
questao numero 3:
program ex3;
uses crt;
var n1, n2, mdc, opcao: integer; {n1 = armazena o primeiro numero pro MDC; n2 = armazena o segundo numero pro MDC; mdc = armazena o mdc, que vai diminuindo caso esse numero nao divida os dois numeros n1 e n2; opcao = variavel para finalizar o programa ou nao}
begin
repeat
writeln('Escreva dois numeros para o calculo do MDC');
readln(n1, n2);
if (n1 < n2) then
mdc:=n1
else
mdc:=n2;
while (n1 mod mdc <> 0) or (n2 mod mdc <> 0) do
mdc:=mdc-1;
writeln('O MDC entre ', n1,' e ', n2,' eh: ',mdc);
repeat
writeln('Deseja reiniciar o programa? (1 para sim, 2 para nao)');
readln(opcao);
if (opcao <> 1) and (opcao <> 2) then
writeln('Opcao invalida! Escreva 1 para sim e 2 para nao');
until (opcao = 1) or (opcao = 2);
clrscr;
until (opcao <> 1);
end.
questao numero 4:
program ex4;
uses crt, dos;
var opcaomenu:integer;
opcao1: char;
h, m, subtracao: integer;
hatual, matual, satual, csatual: word;
horadodia: string;
n, ntemp, contador, temp, i, j, capicua: integer;
n1, n2, mdc: integer;
pro1, pro2, pro3: integer; {pro1 = contabilizar o numero de vezes que o programa 1 foi executado; pro2 = contabilizar o numero de vezes que o programa 2 foi executado; pro3 = contabilizar o numero de vezes que o programa 3 foi executado}
begin
pro1:=0;
pro2:=0;
pro3:=0;
repeat
writeln('Escolha qual programa voce quer executar:');
writeln('1- Compromissos');
writeln('2- Numeros Capicua');
writeln('3- MDC de dois numeros');
writeln('4- Finalizar programa');
repeat
readln(opcaomenu);
if (opcaomenu < 1) or (opcaomenu > 4) then
writeln('Opcao invalida! Entre com um numero entre 1 e 4');
until (opcaomenu >= 1) and (opcaomenu <= 4);
if (opcaomenu = 1) then
begin
writeln('Escreva o dia do compromisso: (h para hoje, a para amanha)');
repeat
readln(opcao1);
if (opcao1 <> 'a') and (opcao1 <> 'h') then
writeln('Opcao invalida! Escreva h para hoje, ou a para amanha');
until (opcao1 = 'a') or (opcao1 = 'h');
repeat
writeln('Qual a hora do compromisso?');
readln(h);
if (h > 23) or (h < 0) then
writeln('Hora invalida! Entre com um numero entre 0 e 23');
until (h <= 23) and (h >= 0);
repeat
writeln('Qual o minuto do compromisso?');
readln(m);
if (m > 59) or (m < 0) then
writeln('Minuto invalido! Entre com um numero entre 0 e 60');
until (m >= 0) and (m <= 59);
h:=h*60+m;
gettime(hatual,matual,satual,csatual);
hatual:=hatual*60+matual;
subtracao:=h-hatual;
if (opcao1 = 'h') then
if (subtracao >= 0) then
writeln('Esteja preparado! Seu compromisso inicia daqui: ', subtracao div 60, 'h e ', subtracao mod 60, 'min')
else
writeln('Voce se atrasou para o compromisso! Ele iniciou ha: ', -subtracao div 60,'h e ',-subtracao mod 60, 'min')
else
begin
if (h >= 0) and (h < 5*60) then
horadodia:='madrugada'
else if (h >= 5*60) and (h < 12*60) then
horadodia:='manha'
else if (h >= 12*60) and (h < 18*60) then
horadodia:='tarde'
else if (h >= 18*60) and (h < 24*60) then
horadodia:='noite';
writeln('Amanha de ', horadodia, ' voce tem um compromisso agendado pras: ', h div 60,'h e ',h mod 60,'min');
end;
pro1:=pro1+1;
end
else if (opcaomenu = 2) then
begin
for n:=0 to 10001 do
begin
ntemp:=n;
contador:=0;
while (ntemp <> 0) do
begin
ntemp:=ntemp div 10;
contador:=contador+1;
end;
ntemp:=n;
j:=contador div 2;
capicua:=1;
while (contador >= j-1) and (capicua = 1) do
begin
temp:=1;
for i:=1 to contador-1 do
temp:=temp*10;
if (ntemp div temp <> ntemp mod 10) then
capicua:=0;
ntemp:=ntemp mod temp div 10;
contador:=contador-2;
end;
contador:=1;
repeat
temp:=contador*contador;
contador:=contador+1;
until (temp >= n);
if (temp = n) then
temp:=1
else
temp:=0;
if (capicua = 1) and (temp = 1) then
writeln(n, ' Numero capicua e quadrado perfeito!');
end;
pro2:=pro2+1;
end
else if (opcaomenu = 3) then
begin
writeln('Escreva dois numeros para o calculo do MDC');
readln(n1, n2);
if (n1 < n2) then
mdc:=n1
else
mdc:=n2;
while (n1 mod mdc <> 0) or (n2 mod mdc <> 0) do
mdc:=mdc-1;
writeln('O MDC entre ', n1,' e ', n2,' eh: ',mdc);
pro3:=pro3+1;
end
else if (opcaomenu = 4) then
begin
writeln('O programa 1 foi executado ', pro1, ' vezes');
writeln('O programa 2 foi executado ', pro2, ' vezes');
writeln('O programa 3 foi executado ', pro3, ' vezes');
end;
readln;
clrscr;
until (opcaomenu = 4);
end.
Nenhum comentário:
Postar um comentário