Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maja

Mensagem de erro...

Recommended Posts

Estou fazendo um programa em pascal, método da bissecção, e ele tá apresentando esse erro: 'Unexpected end of file', não sei pq ele tá aparecendo, alguém pode mim orientar...

 

:wacko:

Ele tá assim...¬¬

 

PROGRAM BIS;
 USES CRT;
{...}
 PROCEDURE ENTER;
 BEGIN
   GOTOXY(4,22);
   WRITE('ENTRE COM O VALOR DESEJADO E TECLE <ENTER> P/ O PROGRAMA PROSSEGUIR.');
 END;
 {...}
 PROCEDURE TELA;
 VAR I,J:INTEGER;
 BEGIN
   WINDOW(1,1,80,25);
   TEXTBACKGROUND(15);
   CLRSCR;
   FOR I := 1 TO 79 DO
	  BEGIN
		GOTOXY(I,1);
		TEXTCOLOR(BLACK);
		WRITE(' ');
	  END;
   GOTOXY(28,2);
   WRITELN('*** METODO DA BISSECCAO *** ');
   GOTOXY(1,1);
   WRITE(#201);
   GOTOXY(80,1);
   WRITE(#187);
   GOTOXY(1,24);
   WRITE(#200);
   GOTOXY(80,24);
   WRITE(#188);
   FOR J := 2 TO 79 DO
	  BEGIN
		GOTOXY(J,1);
		WRITE(#205);
		GOTOXY(J,24);
		WRITE(#205);
	  END;
   FOR J := 2 TO 23 DO
	  BEGIN
		GOTOXY(1,J);
		WRITE(#186);
		GOTOXY(80,J);
		WRITE(#186);
	  END;
   ENTER;
   normvideo;
 END;

{..}

 procedure mold;
 VAR J:INTEGER;
 BEGIN
   GOTOXY(14,10);
   WRITE(#201);
   GOTOXY(60,10);
   WRITE(#187);
   GOTOXY(14,16);
   WRITE(#200);
   GOTOXY(60,16);
   WRITE(#188);
   FOR J := 15 TO 59 DO
	  BEGIN
		GOTOXY(J,10);
		WRITE(#205);
		GOTOXY(J,16);
		WRITE(#205);
	  END;
   FOR J := 11 TO 15 DO
	  BEGIN
		GOTOXY(14,J);
		WRITE(#186);
		GOTOXY(60,J);
		WRITE(#186);
	  END;
   ENTER;
 END;

 {FUNCAO LOGX}

 FUNCTION LOG(X:REAL):REAL;
 BEGIN
   LOG := LN(X)/LN(10);
 END;


{...}

 {FUNCAO F}

 FUNCTION F(X:REAL):REAL;
 BEGIN

   { ATUALIZE AQUI A FUNCAO SOBRE A QUAL DESEJA-SE A RAIZ: " F := ______".}

   F := 1-X*LN(X);
 END;
{...}

{PROGRAMA PRINCIPAL}


 VAR
   X:CHAR;
   OP,X0,X1,X2,F0,F1,F2,ERRO:REAL;
   INT,I,L,K:INTEGER;
 BEGIN
   REPEAT
	 BEGIN
	   CLRSCR;
	   TELA;
	   GOTOXY(4,4);
	   WRITE('A FUNCAO DEVE SER ALTERADA NO PROGRAMA RAIZ.');
	   GOTOXY(6,6);
	   WRITE('DIGITE O INTERVALO INFERIOR: ');
	   READLN(X0);
	   GOTOXY(6,8);
	   WRITE('DIGITE O INTERVALO SUPERIOR: ');
	   READLN(X1);
	   I := 1;
	   F0 := F(X0);
	   F1 := F(X1);
	   K := 0;
	   IF (F0 * F1) > 0
		 THEN BEGIN
				GOTOXY(8,17);
				TEXTCOLOR(RED + BLINK);
				WRITELN('ERRO NA ENTRADA.');
				K := 1;
				NORMVIDEO;
			  END
		 ELSE BEGIN
				MOLD;
				GOTOXY(16,11);
				WRITE('ESCOLHA O CRITERIO DE PARADA:');
				GOTOXY(18,13);
				WRITE('[1] - ERRO PERMITIDO.');
				GOTOXY(18,14);
				WRITE('[2] - N§ DE ITERACOES.');
				GOTOXY(42,15);
				WRITE('OPCAO: ');
				READLN(OP);
				IF OP = 1
				  THEN BEGIN
						 GOTOXY(16,17);
						 WRITE('# ERRO PERMITIDO # :');
						 READLN(ERRO);
						 WHILE (ABS(F0) > ERRO) AND (ABS(F1) > ERRO) DO
							BEGIN
							  L := 0;
							  IF ABS(X0 - X1) < (ERRO * ABS(X1))
								THEN BEGIN
									   GOTOXY(13,19);
									   TEXTCOLOR(YELLOW);
									   WRITE('AS RAIZES DA EQUACAO SAO: ',X0:2:8,' E ',X1:2:8);
									   L := 1;
									   NORMVIDEO;
									 END;
							   IF L = 0
								 THEN BEGIN
										X2 := 0.5 * (X0 + X1);
										F2 := F(X2);
										IF (F2 * F0) < 0
										  THEN BEGIN
												 X1 := X2;
												 F1 := F2;
											   END
										  ELSE BEGIN
												 X0 := X2;
												 F0 := F2;
											   END;
									   END;
								INC(I);
							  END;
						 GOTOXY(9,20);
						 TEXTCOLOR(RED);
						 WRITE('N§ DE ITERACOES EXECUTADAS: ',I);
						 NORMVIDEO;
						 IF ( K = 0 )
						   THEN BEGIN
								  IF (ABS(F0) <= ERRO)
									THEN BEGIN
										   GOTOXY(7,19);
										   WRITE('A RAIZ DA EQUACAO : ',X0:2:8);
										 END
									ELSE BEGIN
										   GOTOXY(7,19);
										   WRITE('A RAIZ DA EQUACAO : ',X1:2:8);
										 END;
								END;
					   END
				  ELSE BEGIN
						 GOTOXY(16,17);
						 WRITE('# N§ MAXIMO DE INTERACOES # :');
						 READLN(INT);
						 WHILE (I < INT) DO
							BEGIN
							  L := 0;
							  IF (F0 = 0) AND (F1 = 0)
								THEN BEGIN
									   GOTOXY(13,19);
									   TEXTCOLOR(YELLOW);
									   WRITE('AS RAIZES DA EQUACAO SAO: ',X0:2:8,' E ',X1:2:8);
									   L := 1;
									   NORMVIDEO;
									 END;
							   IF L = 0
								 THEN BEGIN
										X2 := 0.5 * (X0 + X1);
										F2 := F(X2);
										IF (F2 * F0) < 0
										  THEN BEGIN
												 X1 := X2;
												 F1 := F2;
											   END
										  ELSE BEGIN
												 X0 := X2;
												 F0 := F2;
											   END;
									   END;
								INC(I);
							  END;
						 IF ( K = 0 )
						   THEN BEGIN
								  IF (ABS(F0) <= 0.00001)
									THEN BEGIN
										   GOTOXY(7,19);
										   WRITE('A RAIZ DA EQUACAO : ',X0:2:8);
										 END
									ELSE BEGIN
										   GOTOXY(7,19);
										   WRITE('A RAIZ DA EQUACAO : ',X1:2:8);
										 END;
								END;
					   END;
				   END;
		GOTOXY(4,22);
		CLREOL;
		GOTOXY(80,22);
		WRITE(#186);
		GOTOXY(4,22);
		WRITELN('TECLE <ESC> PARA SAIR.');
		X := READKEY;
	 END;
   UNTIL X = #27;
 END.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a cara de uma identada mais espaçosa no seu código e veja tods seus begin's e end's!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim qnd eu disse + espaçoza é pra qnd der erros em programas e você naum souber oq fazer oq invez de dar um tab de 2! ai tipo você vai saber onde abre e fecha chave, pq eu naum manjo Pascal, ai a unica coisa q eu imagino é q seja um erro de chaves!

 

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.