lammu Posted June 8, 2006 at 09:22 PM Report #31928 Posted June 8, 2006 at 09:22 PM Bem pessoal venho pedir ajuda o programa corre bem so k tens pekenos bugs k eu nao sei resolver se alguem me ajudar agradecia ca ta o programa. ao escolher a opcao 2 k e acresentar nomes idade e numero corre bem. a segunda vez passa logo po nome program lammu; uses crt; const opcoes = ['n','s','S','N']; sim = ['s','S']; nao = ['n','N']; var alunos: Text; procedure ficheiro; var op:char; begin Clrscr; op:='z'; Repeat Gotoxy(20,12); Write('Quer continuar? (s/n)'); Read(op); until op in opcoes; if op in sim then begin Rewrite(alunos); Close(alunos); Clrscr; Gotoxy(20,12); Write('Opera‡Æo bem sucedida.'); Readln; Readln; end else begin Gotoxy(20,12); Write('Opera‡Æo mal sucedida.'); Readln; Readln; end; end; procedure novo; var op:char; st,n,nome,id,aux:string; idade:integer; begin Repeat Clrscr; Append(alunos); Gotoxy(5,5); Write('N£mero? '); Gotoxy(5,7); Write('Nome? '); Gotoxy(5,9); Write('Idade? '); Gotoxy(13,5); Readln(n); Gotoxy(13,7); Readln(nome); Gotoxy(13,9); Readln(idade); Str(idade,id); st:=n+nome+id; Writeln(alunos, st); Gotoxy(5,15); Write('Continuar? (s/n)'); Gotoxy(22,15); Read(op); until op in nao; Close(alunos); end; procedure listar; var linha,nr,nm,ida:string; l:integer; begin clrscr; l:=4; reset(alunos); while not Eof(alunos) do begin ReadLn(alunos, Linha); nr:=copy(linha,1,2); nm:=copy(linha,3,20); ida:=copy(linha,23,2); Gotoxy(5,l); Write(nr); Gotoxy(8,l); Write(nm); Gotoxy(30,l); Write(ida); l:=l+1; end; repeat until keypressed; end; procedure menu; var op:integer; begin Clrscr; Repeat Clrscr; Gotoxy(5,5); Write('1 - Novo ficheiro'); Gotoxy(5,7); Write('2 - Acrescentar dados'); Gotoxy(5,9); Write('3 - Listar'); Gotoxy(5,11); Write('0 - Sair'); Gotoxy(5,15); Write('Qual a tua op‡Æo? '); Readln(op); case op of 1: Ficheiro; 2: Novo; 3: Listar; end; until op=0; end; begin Assign(alunos, 'c:\10e\alunos.dat'); Menu; end. Quando colocares código utiliza a função GeShi e seleciona o respectivo código.
maiden Posted June 8, 2006 at 10:04 PM Report #31954 Posted June 8, 2006 at 10:04 PM Boas, Bem vindo ao fórum 😉 Ao escreveres uma mensagem tens a opção de inserir o código pelo GeSHi, de forma a ficar mais legivel. begin write('exemplo'); readln; end. Cumps,
ReXatoZ Posted June 16, 2006 at 06:33 PM Report #33331 Posted June 16, 2006 at 06:33 PM Oi, antes de mais vindo ao fórum 😁 Quanto à problema k dizes k acontece não vejo qual a razão. Axo k o código ta bem feito e tem uma boa estrutura, no entanto vou te dar uma sugestão e perguntar umas cenas. Porquê k escreves 2x readln? Write('Opera‡Æo bem sucedida.'); Readln; Readln; (...) Write('Opera‡Æo mal sucedida.'); Readln; Readln; end; Sugiro k devias avisar o utilizador (tbm k deves ser so tu k utilizas o programa, mas pa ficar + completo) para o máx. de caracteres do nome, pois cm fizeste: ReadLn(alunos, Linha); nr:=copy(linha,1,2); nm:=copy(linha,3,20); ida:=copy(linha,23,2); o utilizador pode introduzir mais k 20 caracteres e assim vai interferir com a leitura da idade, pois se tal acontecer vai aparecer caracteres na posição 23 e 24 da string -> para isso, ao declarar a variável podias por nome:string[20]. Só mais uma coisa, se introduzires menos k 20 caracteres no nome consegues ler a idade? Cumps.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now