Jump to content

NUMERA


passarito
 Share

Recommended Posts

Boas,

Há já algum tempo falei aqui de um programa "avançadissimo" que fiz para a minha mulher, namorada na altura.

Estava ela a realizar um trabalho, quando me falou de um grande problema: As páginas do trabalho não estavam numeradas e não sabia (ou não havia como) colocar a numeração automática no Word. Isto em DOS e em computadores que se colocavam 2 disketes, uma para o SO e outra com o programa, o tal Word....

Bom foi então que aqui o "marmanjo" teve a ideia luminosa de fazer um programa em para numerar as páginas da namorada.

Resultado, a minha mulher ficou contentissima pois aquilo era fácil e funcionava às mil maravilhas.

De notar, que decorria o ano 1992 e o que abaixo se segue é a obra prima da altura. Não lhe mudei um virgula o que aqui apresento é tal e qual o que fiz na altura. De realçar que já me preocupava com a indentação.... ah prof. João Luis que tanto nos chateava a cabeaça por causa disso!!!!! Um bem haja para ele.

uses crt,printer;
var UlPa,cont1,cont2,xx:integer;
sn,NR:char;

Procedure INTRODUCAO;
begin
repeat
 clrscr;
 write('Tipo de numeraçao  -> Normal/Romana [N/R]: ');
 repeat
NR:=upcase(readkey);
 until NR in ['N','R'];
 writeln(NR);
 textcolor(15+blink);
 if NR='R' then writeln('O MAXIMO DA NUMERACAO ROMANA É 10 «X»');
 textcolor(7);
 write('Quantas páginas quer numerar: ');read(xx);
 while xx<1 do begin
if NR='N' then gotoxy(1,2) else gotoxy(1,3);
clreol;
write('Quantas páginas quer numerar: ');read(xx);
 end;
 if (NR='R') and (xx>10) then begin
while xx>10 do begin
  gotoxy(1,3);
  clreol;
  write('Quantas páginas quer numerar: ');read(xx);
end;
 end;
 if NR='R' then begin
gotoxy(1,2);
write('O MAXIMO DA NUMERACAO ROMANA É 10 «X»');
gotoxy(1,4);
 end;
 write('De que numero quer começar: ');readln(cont2);
 UlPa:=xx+cont2-1;
 write('Ultima página=',UlPa,'  Sim\N„o ');
 repeat
sn:=upcase(readkey);
 until sn in ['S','N',#27];
 if sn=#27 then begin
writeln;
write('Quer sair [s/N] ');
repeat
  sn:=upcase(readkey);
until sn in ['S','N'];
if sn='S' then halt;
 end;
 writeln(sn);
until sn='S';
end;

procedure NUMERADOR;
begin
writeln('Coloque a folha nº',cont2,' para numerar e pressione «ENTER» para continuar');
readln;
clrscr;
repeat
 cont1:=1;
 repeat
writeln(cont1);
writeln(lst);
cont1:=cont1+1;
 until cont1=65;
 writeln('									  ',cont2);
 writeln(lst,'									  ',cont2);
 cont2:=cont2+1;
 if cont2<>UlPa+1 then begin
writeln('Coloque a folha nº',cont2,' para numerar e pressione «ENTER» para continuar');
readln;
 end;
until cont2=UlPa+1;
end;


procedure TRANSFORMACAO(var contr:string);
begin
 case cont2 of
1:contr:='I';
2:contr:='II';
3:contr:='III';
4:contr:='IV';
5:contr:='V';
6:contr:='VI';
7:contr:='VII';
8:contr:='VIII';
9:contr:='IX';
  10:contr:='X';
 end;
end;


procedure ROMANA;
var contr:string;
begin
TRANSFORMACAO(contr);
writeln('Coloque a folha nº',contr,' para numerar e pressione «ENTER» para continuar');
readln;
clrscr;
repeat
 cont1:=1;
 repeat
writeln(cont1);
writeln(lst);
cont1:=cont1+1;
 until cont1=65;
 writeln('									  ',contr);
 writeln(lst,'									  ',contr);
 cont2:=cont2+1;
 TRANSFORMACAO(contr);
 if cont2<>UlPa+1 then begin
writeln('Coloque a folha nº',contr,' para numerar e pressione «ENTER» para continuar');
readln;
 end;
until cont2=UlPa+1;
end;





begin
repeat
 INTRODUCAO;
 if NR='N' then NUMERADOR else ROMANA;
 write('Mais alguma numeraç„o [s/N] ');
 repeat
sn:=upcase(readkey);
 until sn in ['S','N'];
 writeln(sn);
until sn='N';
end.
Link to comment
Share on other sites

Hmmmm, uns dão flores... Outros bombons. Ainda há alguns que levam ao cinema, ou que fazem serenatas!

Aqui o passarito, fazia programas! 😉

Muito bem! hehehee

"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.

Link to comment
Share on other sites

Gostei do código e da forma como contornaste o problema da numeração romana - é uma solução óptima para a época. Hoje em dia bastar-te-ia a função IntToRoman. 😄

Os smiles... como havia pessoal que usava e abusava dos smiles como se não houvesse mais nada de interessante para se colocar nas mensagens, ficaram reduzidos ao essencial com a mudança de plataforma. Até agora, a solução está a funcionar muito bem 😛

Knowledge is free!

Link to comment
Share on other sites

É um pequeno bug, em principio a seu tempo será resolvido.

Até lá, para teres indentação perfeita, usa o editor básico (botão superior esquerdo da barra de ferramentas do editor).

Neste, podes na mesma usar as tags BBcode para formatar o texto, mas tem de ser de cabeça, os botões (ainda) não estão activos.

NOTA: Tens de colocar o editor básico antes de começar a escrever o post, caso contrário ficam lá umas tags erradas!

"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.

Link to comment
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
 Share

×
×
  • 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.