Ir ao conteúdo
  • Cadastre-se

Erro 113 no Pascal ..


Programer

Posts recomendados

Olá, .. no seguinte código pascal a baixo está dandoio erro no //else\\

eu olhei e nada , não consegui descobrir qual éo erro, se puderem me ajudar agradeço ..

Obrigado !!!

 program listadeemail;
uses wincrt;
const max=10;
var lista:array[1..max]of string;
proximo:array[1..max]of integer;
fila:array[1..max]of integer;
inicio,n,atual,anterior:integer;
primeiro,ultimo,qtd:integer;
email:string;

Function DEQUEUE_CIRCULO :integer;
begin
if qtd = 0 then
write('Fila vazia!')
Else
begin
dequeue_circulo := fila[primeiro];
if primeiro = Max then
primeiro := 1
else
primeiro := primeiro + 1;
qtd := qtd - 1;
end;
end;

Procedure ENQUEUE_CIRCULO(dado:integer);
begin
if qtd = max then
write('Fila cheia!')
else
begin
if ultimo = Max then
ultimo := 1;
else
ultimo:=ultimo + 1;
fila[ultimo] := dado;
qtd:=qtd+1;
end;

procedure InicializarFila ;
var i:integer;
begin
for i:=1 to max do
enqueue_circulo(i);
end;

procedure mostra_lista;
begin
atual:=inicio;
while atual <> 0 do
begin
write(lista[atual]);
atual:=proximo[atual];
end;
end;

procedure Incluirnomeio(dado:integer);
begin
novo:=dequeue;
lista[novo]:=dado;
proximo[anterior]:=novo;
proximo[novo]:=atual;
n:=n+1;
end;

procedure incluirNofim (dado:integer);
begin
novo:=dequeue;
lista[novo]:=dado;
proximo[atual]:=novo;
proximo[novo]:=0;
n:=n+1;
end;

procedure incluirNoinicio (dado:integer);
begin
novo:=dequeue;
lista[novo]:=dado;
inicio:=novo;
proximo[novo]:=atual;
n:=n+1;
end;

Procedure Localizar(dado:integer);
begin
Atual:=Inicio;
while (dado > Lista[Atual]) or ( Proximo[Atual] <> 0 ) do
begin
Anterior:=Atual;
Atual:=Proximo[Atual];
end;
end;

Procedure Incluir(dado:integer);
begin
Localizar(dado);
if Atual = 0 then
IncluirNoInicio(dado)
else
if dado = Lista[Autal] then
write('Este nome já consta na Lista')
else
if (Atutal = Inicio) or (Dado < Lista[Atutal]) then
IncluirNoInicio(dado)
else
if (Proximo[Atutal] = 0) or (dado > Lista[Atutal]) then
IncluirNoFim(dado)
else
IncluirNoMeio(dado);
end;

begin
n:=0,ultimo:=0,pri meiro:=1,inicio:=0,inicializarfila;
repeat
clrscr;
write('lista de E-mail');
mostra_lista;
writeln('Entre um E-mail(digite "fim" P/Encerrar)');
readln(E-mail);
if email <> 'fim' then
incluir (email);
until email = 'fim';
end.

Link para o comentário
Compartilhar em outros sites

Os erros são mais que muitos, Começando logo aqui:

Procedure ENQUEUE_CIRCULO(dado:integer);
begin
if qtd = max then
write('Fila cheia!')
else
begin
if ultimo = Max then
ultimo := [COLOR="Red"]1;[/COLOR]
else
ultimo:=ultimo + 1;
fila[ultimo] := dado;
qtd:=qtd+1;
end;

Depois tens aí muitas variáveis do tipo string onde deveriam ser do tipo integer, e vice versa.

Link para o comentário
Compartilhar em outros sites

program listadeemail;
uses wincrt;
const max=10;
var lista:array[1..max]of string;
proximo:array[1..max]of integer;
fila:array[1..max]of integer;
inicio,n,novo,atual,anterior:integer;
primeiro,ultimo,qtd:integer;
email:string;

Function DEQUEUE:integer;
begin
if qtd = 0 then
write('Fila vazia!')
Else
begin
dequeue:= fila[primeiro];
if primeiro = Max then
primeiro := 1
else
primeiro := primeiro;
qtd := qtd - 1;
end;

end;

Procedure ENQUEUE(dado:integer);
begin
if qtd = max then
write('Fila cheia!')
else
begin
if ultimo = Max then
ultimo := 1
else
ultimo := ultimo + 1;
fila[ultimo] := dado;
qtd:= qtd + 1;
end;
end;

procedure InicializarFila ;
var i:integer;
begin
for i:=1 to max do
enqueue(i);

end;

procedure mostra_lista;
begin
atual:=inicio;
while atual <> 0 do
begin
writeln(lista[atual]);
atual:=proximo[atual];
end;
end;

procedure Incluirnomeio(dado:string);
begin
novo:=dequeue;
lista[novo]:=dado;
proximo[anterior]:=novo;
proximo[novo]:=atual;
n:=n+1;
end;

procedure incluirNofim (dado:string);
begin
novo:=dequeue;
lista[novo]:=dado;
proximo[atual]:=novo;
proximo[novo]:=0;
n:=n+1;
end;

procedure incluirNoinicio (dado:string);
begin
novo:=dequeue;
lista[novo]:=dado;
inicio:=novo;
proximo[novo]:=atual;
n:=n+1;
end;

Procedure Localizar(dado:string);
begin
Atual:=Inicio;
while (dado > Lista[Atual]) or ( Proximo[Atual] <> 0 ) do
begin
Anterior:=Atual;
Atual:=Proximo[Atual];
end;
end;

Procedure Incluir(dado:string);
begin
Localizar(dado);
if Atual = 0 then
IncluirNoInicio(dado)
else
if dado = Lista[Atual] then
write('Este nome já consta na Lista')
else
if (Atual = Inicio) or (Dado < Lista[Atual]) then
IncluirNoInicio(dado)
else
if (Proximo[Atual] = 0) or (dado > Lista[Atual]) then
IncluirNoFim(dado)
else
IncluirNoMeio(dado);
end;

begin
n:=0;ultimo:=0;primeiro:=1;inicio:=0;inicializarfila;
repeat
clrscr;
writeln('lista de E-mail');
mostra_lista;
writeln('Entre um E-mail(digite "fim" P/Encerrar)');
readln(Email);
if email <> 'fim' then
incluir (email);
until email = 'fim';
end.

tá dando outro erro agora ele compila normal , pede um email e no proximo ele repete sem parar até em baixa ..

se alguêm puder me ajudar ..

Obrigado !!!

Link para o comentário
Compartilhar em outros sites

O teu problema está aqui neste procedimento:

Procedure Localizar(dado:string);
begin
Atual:= Inicio;
while (dado > Lista[Atual]) or ( Proximo[Atual] <> 0 ) do
begin
Anterior:= Atual;
Atual:= Proximo[Atual];
end;
end;

Se tu inserires um resultado no inicio, por exemplo "jose", como tens uma condição "ou" e como "jose" é sempre maior que "Lista[Atual]", que é uma string vazia, ele vai efectuar o ciclo até "estoirar".

Tens que mudar esta condição de modo a que ele possa sair do ciclo.

Já agora deixava-te aqui dois conselhos:

1 - Começa a correr os programas passo-a-passo. É mais fácil detectar os erros;

2 - Quando postares código, utiliza as tags de codigo. Carregas ali no simbolo #, dentro da janela da mensagem vão aparecer [] introduz aqui o código [].

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!