Jump to content
nunopicado

Exercicio, só porque sim...

Recommended Posts

nunopicado

Boas

Só porque sim, aqui fica um exercício para fazerem, e proporem as vossas soluções.

É algo do mais simples que há, e até o aprendiz mais aprendiz é capaz de o fazer. O truque está em não usar a solução óbvia e sim procurar a mais eficaz.

Requisitos:

Fazer 10 perguntas, e receber 10 respostas (texto).

Não interessa quais perguntas são, surpreendam-me! ;)

Simples não?

Vamos complicar só um bocadinho...

As perguntas devem ser feitas em ordem aleatoria.

Os mais "velhinhos" atrasem p.f. um pouco a resposta, para dar hipotese aos outros de proporem as suas soluções.

Depois, se for o caso, debate-se o assunto! ;)

Até já!


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Posso colocar as questões num ficheiro e carregá-las a partir dele? Eu já tenho algumas ideias em mente, e seria muito mais decente meter as perguntas num TXT :D


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Poder podes... :) A ideia é ver as vossas opções para tal!

Mas sugiro uma coisa (a todos): Keep It Simple! ;)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
passarito

Em caso de optimização, o melhor seria um ficheiro de registo de dados (file of record). É que nestes podes colocar o ponteiro para leitura onde tu quizeres directamente.

Ponto negativos desta solução: é que terias de fazer algo para gerires as perguntas e respostas!

Share this post


Link to post
Share on other sites
nunopicado
:) Keep it simple...

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Eu já tenho uma solução funcional de 56 linhas (sem linhas em branco).

Só me falta é criar as questões :D

@passarito, eu não utilizei nenhum file of. Se é para haver simplicidade, também a deve haver na hora de criar as questões.

Eu dou a hipótese de as questões serem escritas, uma por linha, num TXT. As primeiras 10 linhas são contabilizadas, as restantes ignoradas. Assim pode-se escrever facilmente as questões.

Para as meter no formato file of tinha de andar a criar um programa só para criar o dito ficheiro, e eu não estou para isso :D

O Object Pascal fornece ferramentas muito boas para resolver isto num instante. :)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Olha aí uma para a lista:

“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”

--- Bill Gates ---

;)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Suponho que isso seja bom :D

Mas é uma frase do Tio Bill e não uma pergunta, Nuno... :P

É preciso mesmo fornecer as questões?

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Oh Nuno, eu acho que não vai haver muitos novatos a participar... a época escolar já lá vai, e se fosse época escolar teríamos alguns tópicos com pedido de ajuda e este tópico quase de certeza sem respostas deles... :confused:

Não valia mais debatermos aqui entre nós as nossas soluções e trocarmos ideias?

Se entretanto algum novato quiser participar, será muito bem-vindo (claro!), teremos todo o gosto em lhe explicar o que usámos e ajudar na sua tentativa :)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Moço: Esquece as questões... Mete lá blablabla 1 a 10, que por mim tanto me dá...

Eu quero-vos é ver a relacionar duas strings, uma que já exista no programa com outra que o utilizador vai dar.

Edit: 'Bora lá que estou à espera... ;)

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Eu quero-vos é ver a relacionar duas strings, uma que já exista no programa com outra que o utilizador vai dar.

Wait wait wait, pal... O que queres dizer com isto?


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Wait wait wait, pal... O que queres dizer com isto?

O que disse... :)

Strings que já existem: Perguntas

Strings que o utilizador vai inserir: Respostas

O resto é código!


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Ok, e se eu te disser que no fim faço uma revisão das respostas dadas às perguntas, mas desta vez ordenadas tal como no ficheiro? :P


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Eu respondo: Keep it simple! ;)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Olha, que se dane... fiz isto como intervalo de um relatório que ando a fazer, e fiz como me veio à cabeça. Espero que gostes :D

{$mode objfpc}
program exercicio_nunopicado;
uses classes, sysutils, crt;

const MAX = 10;
type TLista = set of byte;

var perguntas, respostas : TStringList;
   disponiveis : TLista = [1..MAX];
   questao : byte   = 0;
   resp    : string = '';
   n       : byte   = 1;

procedure Pause; begin repeat until readkey = #13; end;

function ObterQuestao(var lista : TLista) : byte;
begin
   randomize;
   repeat
       ObterQuestao := random(MAX)+1;
   until (ObterQuestao in lista);
   lista := lista - [ObterQuestao];
end;

function Int2Str(num : integer) : string;
begin
   str(num, Int2Str);
   if num < 10 then Int2Str := '0' + Int2Str;
end;

function SubString(s : string; ind, size : byte) : string;
begin
   Delete(s, ind, size);
   SubString := s;
end;

begin
   try
       perguntas := TStringList.Create;
       respostas := TStringList.Create;
       perguntas.LoadFromFile('perguntas.txt');

       repeat
           questao := ObterQuestao(disponiveis);
           writeln('Questao ', n, ': ', perguntas[questao-1]);
           write('Resposta? '); readln(resp);
           respostas.Append(Int2Str(questao) + ': ' + perguntas[questao-1] + ' -> ' + resp);
           inc(n);
       until (disponiveis = []);

       respostas.Sorted := False;
       respostas.Sort;

       writeln; writeln('REVISAO:');
       for resp in respostas do
           writeln(SubString(resp, 1, 4));

       respostas.SaveToFile('respostas.txt');

       perguntas.Destroy;
       respostas.Destroy;
       Pause;

   except
       on ex:exception do begin
           writeln(ex.classname,': ',ex.message);
           Pause;
       end;
   end;
end.


Knowledge is free!

Share this post


Link to post
Share on other sites
pwseo

É preciso ler as questões de um ficheiro? Não podem estar hardcoded no programa? E nesse caso, porque não colocá-las num array de strings (e ter um array de strings para as respostas)?

Acho que não estou a perceber bem o que pretendes, Nuno :)

Share this post


Link to post
Share on other sites
thoga31

É um exercício muito free style, segundo me parece. Utiliza o que bem entenderes, @pwseo ;)

Eu cá preferi carregar de um ficheiro, se quiseres metê-las no código, força. Pessoalmente não gosto nada de ver códigos com as perguntas hardcoded.

Aproveitei também para me voltar a meter com a minha velha amiga TStringList, já tinha saudades :D

Faz uma solução desse género para variar.

Também fico à espera das propostas do @nunopicado e do @passarito. ;)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

É preciso ler as questões de um ficheiro? Não podem estar hardcoded no programa? E nesse caso, porque não colocá-las num array de strings (e ter um array de strings para as respostas)?

Acho que não estou a perceber bem o que pretendes, Nuno :)

Já eu acho que foste o único (até agora) que percebeu bem o que eu queria... :)

Keep It Simple é o mote!

Para o caso que é, hardcoded está optimo, tu é que sabes.

Se preferires, até podes usar ponteiros!

Isto não será bem uma prova para ver quem ganha... :)

É mais para ver movimento, e perceber o tipo de programação que cada um faz perante um desafio tão parvo como este! ;)

Thoga: Está aí uma solução. Consegues pensar noutra?

Sinceramente, até pensei que ias por outro lado! hehehehe É dificil escolher entre duas amigas, não é?


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Eu pensei em várias formas, Nuno. Mas esta foi a mais rápida de implementar, aproveitei e peguei no exercício para descontrair de uma coisa super chata que estava a fazer.

Se quisesse mesmo pegar no objectivo de eficácia, não teria ido para as TStringList's.

Talvez faça outra solução, já se vê. De qualquer das formas, dei uma solução prática para aplicações "mais-maiores".

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Sem duvida, essa é um solução até mais "pro" do que a hardcoded!

Eu é que estava certo que ias escolher outra coisa! hehehe


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.