program locadora_veiculos;
uses crt;
type cli = record
nome, telefone: string;
codigo: integer;
end;
vei = record
modelo: string;
marca: string;
diaria: real;
situacao: string;
cliente: integer;
diarias: integer;
end;
var veiculos: array [1..10] of vei;
clientes: array [1..50] of cli;
i, opcao, icliente: integer;
function procura_carro(modelo: string; v: array of vei; i: integer): integer; {procura a posicao onde esta localizado o carro com modelo X, modelo: modelo do carro, v: vetor dos carros, i: posicao do proximo carro a ser cadastrado}
var j: integer; {j eh um contador}
begin
procura_carro:=-1;
for j:=0 to i-2 do
if (lowercase(v[j].modelo) = lowercase(modelo)) then
procura_carro:=j;
end;
function procura_cliente(codigo:integer; c: array of cli; i: integer): integer; {procura a posicao onde esta localizado o cliente com codigo X, codigo: codigo do cliente, c: vetor dos carros, i: posicao do proximo cliente a ser cadastrado}
var j: integer; {j eh um contador}
begin
procura_cliente:=-1;
for j:=0 to i-2 do
if (c[j].codigo = codigo) then
procura_cliente:=j;
end;
procedure mostra_carros(v: array of vei; i: integer); {procedimento que mostra todos os carros da locadora, estejam eles disponiveis para alugar ou nao, v: vetor de carros, i: posicao do proximo carro a ser cadastrado}
var j, contacarros:integer; {j eh um contador, contacarros eh um contador pra mostrar uma mensagem de erro caso nao haja nenhum carro cadastrado}
begin
contacarros:=0;
for j:=0 to i-2 do
begin
writeln(j+1, '-', v[j].marca, ', ', v[j].modelo, ', R$', v[j].diaria:0:2,' a diaria. Situacao: ', v[j].situacao);
contacarros:=contacarros+1;
end;
if (contacarros = 0) then
writeln('Nao temos nenhum carro cadastrado');
readkey;
end;
function mostra_carros_disponiveis(v: array of vei; i: integer): integer; {procedimento que mostra todos os carros disponiveis da locadora, v: vetor de carros, i: posicao do proximo carro a ser cadastrado}
var j: integer; {j eh um contador}
begin
mostra_carros_disponiveis:=0;
for j:=0 to i-2 do
if (v[j].situacao = 'Disponivel') then
begin
mostra_carros_disponiveis:=mostra_carros_disponiveis+1;
writeln(mostra_carros_disponiveis, '-', v[j].marca, ', ', v[j].modelo, ', R$', v[j].diaria:0:2,' a diaria.');
end;
if (mostra_carros_disponiveis = 0) then
begin
writeln('Desculpe, todos nossos veiculos estao alugados');
readkey;
end;
end;
procedure cadastro_veiculo(var v: array of vei; var i: integer); {procedimento para cadastrar o veiculo, v: vetor de carros, i: posicao do proximo carro a ser cadastrado}
var modelo: integer; {modelo eh uma variavel temporaria pra dizer se o carro ja foi cadastrado ou nao}
begin
if (i > 10) then
begin
writeln('Nossa locadora nao suporta mais veiculos');
readkey;
end
else
begin
repeat
write('Escreva a marca do veiculo: ');
readln(v[i-1].marca);
write('Escreva o modelo do veiculo: ');
readln(v[i-1].modelo);
modelo:=procura_carro(v[i-1].modelo, v, i);
if (modelo = -1) then
begin
write('Escreva o valor da diaria: ');
readln(v[i-1].diaria);
end
else
writeln('Carro ja cadastrado, tente outro carro');
until (modelo = -1);
v[i].situacao:='Disponivel';
v[i].marca:='';
v[i].modelo:='';
v[i].diaria:=0;
v[i].diarias:=0;
v[i].cliente:=0;
i:=i+1;
end;
end;
procedure aluga_carro(var v: array of vei; i: integer; var cl: array of cli; var icliente: integer); {}
var modelo: string; {modelo: modelo do carro a ser alugado}
posicaocarro, posicaocliente, codigocliente: integer; {posicaocarro: indica a posicao onde esta localizado o carro no vetor de carros, posicaocliente: indica a posicao do cliente caso ele ja esteja cadastrado no sistema, codigocliente: variavel para ler o codigo do cliente}
begin
if (i = 1) then
begin
writeln('Nao temos carros cadastrados ainda');
readkey;
end
else
begin
writeln('Nossos carros:');
if (mostra_carros_disponiveis(v, i) <> 0) then
repeat
write('Escreva o modelo do carro: ');
readln(modelo);
posicaocarro:=procura_carro(modelo, v, i);
if (posicaocarro = -1) then
begin
writeln('Desculpe, nao temos esse modelo.');
readkey;
end
else if (v[posicaocarro].situacao = 'Alugado') then
begin
writeln('Esse carro ja esta alugado!');
readkey;
end
else
begin
write('Escreva o codigo do cliente: ');
readln(codigocliente);
posicaocliente:=procura_cliente(codigocliente, cl, icliente);
if (posicaocliente = -1) then
begin
cl[icliente-1].codigo:=codigocliente;
write('Escreva o nome do cliente: ');
readln(cl[icliente-1].nome);
write('Escreva o telefone do cliente: ');
readln(cl[icliente-1].telefone);
end;
repeat
write('Quantos dias de aluguel? ');
readln(v[posicaocarro].diarias);
if ((v[posicaocarro].diarias < 1) or (v[posicaocarro].diarias > 30)) then
begin
writeln('Voce deve alugar o carro por no minimo 1 e no maximo 30 dias');
readkey;
end;
until ((v[posicaocarro].diarias >= 1) and (v[posicaocarro].diarias <= 30));
v[posicaocarro].situacao:='Alugado';
v[posicaocarro].cliente:=codigocliente;
if (posicaocliente = -1) then
begin
icliente:=icliente+1;
cl[icliente].nome:='';
cl[icliente].codigo:=0;
cl[icliente].telefone:='';
end;
end;
until (posicaocarro <> -1);
end;
end;
procedure devolve_carro(var v: array of vei; i: integer; cl: array of cli; icliente: integer); {procedimento pra devolver um carro, v: vetor de carros, cl vetor de clientes, i numero de carros cadastrados ate o momento, icliente numero de clientes cadastrados ate o momento}
var j, contacarros: integer; {j eh um contador, contacarros eh usado pra mostrar uma mensagem de erro caso nao haja nenhum carro alugado}
begin
contacarros:=0;
writeln('Carros alugados:');
for j:=0 to i-2 do
begin
if (v[j].situacao = 'Alugado') then
begin
contacarros:=contacarros+1;
writeln(j+1, ', ', v[j].marca, ', ', v[j].modelo, ', Cliente: ', cl[procura_cliente(v[j].cliente, cl, icliente)].nome, ', Total a pagar: R$', v[j].diaria*v[j].diarias:0:2);
end;
end;
if (contacarros > 0) then
begin
write('Escolha o carro a devolver pelo codigo: ');
readln(j);
if ((j <= i-1) and (j >= 1) and (v[j-1].situacao = 'Alugado')) then
begin
v[j-1].situacao:='Disponivel';
v[j-1].diarias:=0;
v[j-1].cliente:=0;
end
else
begin
writeln('Esse carro nao existe ou nao esta alugado');
readkey;
end;
end
else
begin
writeln('Nenhum carro esta alugado.');
readkey;
end;
end;
begin
i:=1;
veiculos[i].situacao:='Disponivel';
veiculos[i].marca:='';
veiculos[i].modelo:='';
veiculos[i].diaria:=0;
veiculos[i].diarias:=0;
veiculos[i].cliente:=0;
icliente:=1;
clientes[icliente].nome:='';
clientes[icliente].codigo:=0;
clientes[icliente].telefone:='';
repeat
writeln('1- Cadastro de veiculos');
writeln('2- Saida de veiculos');
writeln('3- Devolucao de veiculos');
writeln('4- Exibir veiculos da locadora');
writeln('0- Fechar programa');
write('Escolha uma opcao: ');
readln(opcao);
if (opcao = 1) then
cadastro_veiculo(veiculos, i)
else if (opcao = 2) then
aluga_carro(veiculos, i, clientes, icliente)
else if (opcao = 3) then
devolve_carro(veiculos, i, clientes, icliente)
else if (opcao = 4) then
mostra_carros(veiculos, i)
else if (opcao <> 0) then
begin
writeln('Opcao invalida');
readkey;
end;
clrscr;
until (opcao = 0);
end.
FEMAP (AED-1)
segunda-feira, 20 de junho de 2011
quarta-feira, 25 de maio de 2011
trabalho de AED
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.
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.
segunda-feira, 28 de março de 2011
segunda-feira, 14 de março de 2011
Resposta - Exercício de Prática de algoritmos - descrição narrativa 14/03
a) - Trocar um pneu furado:
1 - Colocar o macaco embaixo do carro e erguer o carro;
2 - Utilizando a chave de roda, desapertar os parafusos do pneu danificado;
3 - Retirar o pneu danificado;
4 - Encaixar o pneu reserva;
5 - Apertar os parafusos utilizando a chave de roda;
6 - Soltar o macaco, abaixando o carro.
b) - Fazer um café usando coador:
1 - Esquentar água;
2 - Colocar o pó de café no coador, sobre a garrafa (se necessário adicionar açúcar);
3 - Despejar a água quente dentro do coador;
4 - Esperar que toda a mistura seja filtrada;
5 - Retirar o coador.
c) - Ler dois números e apresentar o resultado da divisão do primeiro pelo segundo:
1 - Ler o primeiro número;
2 - Ler o segundo número e verificar se é diferente de zero;
3 - Dividir o primeiro número pelo segundo;
4 - Exibir resultado.
d) - Ler cinco números e calcular média aritmética. Ler outro número e compará-lo com a média, indicando o resultado:
1 - Ler cinco números;
2 - Somar os cinco números;
3 - Dividir o resultado da soma do passo 2 por cinco;
4 - Mostrar o resultado do passo 3;
5 - Ler o outro número;
6 - Verificar se o número do passo 5 é menor, igual ou maior que o resultado do passo 4;
7 - Mostrar o resultado do passo 6.
e) - Ler duas notas de um aluno e indicar se ele está aprovado (>= 6) ou reprovado:
1 - Ler os dois números indicadores da nota do aluno;
2 - Somar os dois números apresentados no passo 1;
3 - Verificar se o resultado do passo 2 é menor, igual, ou maior que 6;
4 - Exibir resultado;
5 - Caso o resultado seja menor que 6, o aluno está reprovado;
6 - Caso o resultado seja maior ou igual a 6, o aluno está aprovado.
f) - Ler o preço de um produto e calcular seu novo preço com base numa porcentagem;
1 - Ler o preço do produto;
2 - Multiplicar o preço pela porcentagem;
3 - Somar o valor do passo 2 no valor inicial;
4 - Exibir resultado.
g) - Ler o salário de um funcionário e calcular o seu aumento. Para salários até R$420,00 - aumento de 20%; de 421,00 a 1.000,00 - aumento de 15%; acima de 1.000,00 - aumento de 10%:
1 - Ler o salário do fúncionario;;
2 - Caso o resultado do passo 1 seja menor ou igual a R$420,00, multiplica-lo por 0,2.
3 - Caso o resultado do passo 1 seja maior ou igual a R$421,00 e menor ou igual a R$1.000,00, multiplica-lo por 0,15.
4 - Caso o resultado do passo 1 seja maior que R$1.000,00, multiplica-lo por 0,1.
5 - Exibir o resultado.
1 - Colocar o macaco embaixo do carro e erguer o carro;
2 - Utilizando a chave de roda, desapertar os parafusos do pneu danificado;
3 - Retirar o pneu danificado;
4 - Encaixar o pneu reserva;
5 - Apertar os parafusos utilizando a chave de roda;
6 - Soltar o macaco, abaixando o carro.
b) - Fazer um café usando coador:
1 - Esquentar água;
2 - Colocar o pó de café no coador, sobre a garrafa (se necessário adicionar açúcar);
3 - Despejar a água quente dentro do coador;
4 - Esperar que toda a mistura seja filtrada;
5 - Retirar o coador.
c) - Ler dois números e apresentar o resultado da divisão do primeiro pelo segundo:
1 - Ler o primeiro número;
2 - Ler o segundo número e verificar se é diferente de zero;
3 - Dividir o primeiro número pelo segundo;
4 - Exibir resultado.
d) - Ler cinco números e calcular média aritmética. Ler outro número e compará-lo com a média, indicando o resultado:
1 - Ler cinco números;
2 - Somar os cinco números;
3 - Dividir o resultado da soma do passo 2 por cinco;
4 - Mostrar o resultado do passo 3;
5 - Ler o outro número;
6 - Verificar se o número do passo 5 é menor, igual ou maior que o resultado do passo 4;
7 - Mostrar o resultado do passo 6.
e) - Ler duas notas de um aluno e indicar se ele está aprovado (>= 6) ou reprovado:
1 - Ler os dois números indicadores da nota do aluno;
2 - Somar os dois números apresentados no passo 1;
3 - Verificar se o resultado do passo 2 é menor, igual, ou maior que 6;
4 - Exibir resultado;
5 - Caso o resultado seja menor que 6, o aluno está reprovado;
6 - Caso o resultado seja maior ou igual a 6, o aluno está aprovado.
f) - Ler o preço de um produto e calcular seu novo preço com base numa porcentagem;
1 - Ler o preço do produto;
2 - Multiplicar o preço pela porcentagem;
3 - Somar o valor do passo 2 no valor inicial;
4 - Exibir resultado.
g) - Ler o salário de um funcionário e calcular o seu aumento. Para salários até R$420,00 - aumento de 20%; de 421,00 a 1.000,00 - aumento de 15%; acima de 1.000,00 - aumento de 10%:
1 - Ler o salário do fúncionario;;
2 - Caso o resultado do passo 1 seja menor ou igual a R$420,00, multiplica-lo por 0,2.
3 - Caso o resultado do passo 1 seja maior ou igual a R$421,00 e menor ou igual a R$1.000,00, multiplica-lo por 0,15.
4 - Caso o resultado do passo 1 seja maior que R$1.000,00, multiplica-lo por 0,1.
5 - Exibir o resultado.
Assinar:
Postagens (Atom)