Utilizamos Cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información X
PortadaForo AyudaTutoriales
InicioForosForo Programación

Problema con programa en pascal

vangal
2009-01-12 17:24 - Respuestas: 1 - Tema nº: 2566809


Características: Windows XP Profesional pentium IV 200GB.

Hola quiero hacer un programa que lea palabras de un fichero de texto, el fichero de texto "datosp2a", esta integramente en caracteres minusculas, y tambien puede contener coma y punto, las palabras estan separadas por un espacio en blanco o por salto de linea. Las palabras que se lean tendras como máximo 20 caracteres. No consigo que me funcione, a ver si alguien me puede hechar una mano, me corre mucha prisa, os mando lo que he hecho y el fichero de texto "datosp2a". Muchas gracias!!!!

program leerpal (datosp2a,otuput);
type
Tminusculas = "a".."z";
Tpalabra = packed array [1..20] of Tminusculas;
var
c:char;
i:1..20;
datosp2a:text;
palabra:Tpalabra;
begin
assign (datosp2a,"C:datosp2a.txt");
reset(datosp2a);
read(datosp2a,c);
if not eof (datosp2a) then
begin

if not eoln (datosp2a) then
begin
i:=1;
if (c" ") and (i
Posibles soluciones:
Problema con programa en pascalProblema con programa en pascal
Problema con un programa de turbo pascalProblema con un programa de turbo pascal
Programa pascalPrograma pascal
Programa en pascalPrograma en pascal
Realizar programa en pascalRealizar programa en pascal
yu-gi-oh

Re: Problema con programa en pascal - 2009-01-14 13:06 - Respuesta 2

bueno chavall pa esto lo que hay que usar es un packedarray contenido en array bidimensional (también llamado tabla o matriz) es un array con dos índices. Al igual que los vectores deben ser ordinales. Se declaran de igual manera que los arrays de una dimensión.asique ahi va eso:
(* TAD LISTA SIMPLEMENTE ENLAZADA IMPLEMENTADA MEDIANTE ARRAYS*)
unit listaarr;
interface
const max=100;
type telemento=RECORD
clave:integer;
campo:string;
end;
tnodo=RECORD
info:telemento;
sig:integer;
end;

tlista=RECORD
l:array[1..max] of tnodo;
cab:integer;
disp:integer;
end;

procedure ListaVacia(var lista:tlista);
function esVacia(lista:tlista):boolean;
function esLlena(lista:tlista):boolean;
procedure insertaPrim(var lista:tlista;x:telemento);
procedure borrar(var lista:tlista;x:telemento);
procedure buscar(lista:tlista;var x:telemento; var encontrado:boolean);
procedure visualiza(lista:tlista);
implementation
procedure ListaVacia(var lista:tlista);
var i:integer;
begin
for i:=1 to max-1 do lista.l.sig:=i+1;
lista.l[max].sig:=0;
lista.cab:=0;
lista.disp:=1;
end;

function esVacia(lista:tlista):boolean;
begin
esVacia:=lista.cab=0;
end;


function esLlena(lista:tlista):boolean;
begin
esLlena:=lista.disp=0;
end;

procedure insertaPrim(var lista:tlista;x:telemento);
var p:integer;
begin
if esLlena(lista)
then writeln('Error: Lista llena')
else
begin
p:=lista.disp;
lista.disp:=lista.l[lista.disp].sig;
lista.l[p].info:=x;
lista.l[p].sig:=lista.cab;
lista.cab:=p
end;
end;

procedure borrar(var lista:tlista;x:telemento);
var p,q:integer;
begin
p:=lista.cab;
while (p0) and (lista.l[p].info.clavex.clave) do
begin
q:=p;
p:=lista.l[p].sig;
end;
if p0
then begin
if p=lista.cab
then lista.cab:=lista.l[lista.cab].sig
else lista.l[q].sig:=lista.l[p].sig;
lista.l[p].sig:=lista.disp;
lista.disp:=p;
end;
end;


procedure buscar(lista:tlista;var x:telemento; var encontrado:boolean);
var p:integer;
begin
p:=lista.cab;
while (p0) and (lista.l[p].info.clavex.clave) do
p:=lista.l[p].sig;
if p=0
then encontrado:=false
else
begin
encontrado:=true;
x:=lista.l[p].info;
end;

end;

procedure visualiza(lista:tlista);
var p:integer;
begin
p:=lista.cab;
while p0 do
begin
writeln(lista.l[p].info.clave:3,' : ',lista.l[p].info.campo);
p:=lista.l[p].sig;
end;

end;
Function EsVacia(P:TPila):boolean;
begin
EsVacia:= P.cima=0;
end;

Function Cima(P:TPila):TElemento;
{ Devuelve el elemento cabeza de la pila sin modificar la pila }
begin
if Not EsVacia(P) then
Cima:=P.Elementos[P.Cima];
end;

function PilaLlena(P:TPila): boolean;
begin
PilaLlena:= P.Cima=MaxElemens;
end;

Procedure Apilar(var P:tPila;X:Telemento; var realizado:boolean);
begin
if not PilaLlena(P) then
begin
P.Cima:=P.Cima+1;
P.Elementos[P.Cima]:=X;
realizado:=true;
end
else realizado:=false;

end;

Procedure Suprime( var P:TPila; var realizado:boolean);
{ Elimina el elemento cabeza de la pila modificando la pila }
begin
if not EsVacia(P) then
begin
P.Cima:=P.Cima-1;
realizado:=true;
end
else realizado:=false;
end;

Procedure Desapilar(var P:TPila;var X:TElemento; var realizado:boolean);
{ Devuelve el elemento cabeza de la pila y lo suprime }
begin
if not EsVacia(P) then
begin
X:=P.Elementos[P.Cima];
P.Cima:=P.Cima-1;
realizado:=true;
end
else realizado:=false;
end;
end.

NOTA:donde pongo pila tu tienes que poner mayuscula y X se refiere a minuscula....espero que te sea util..

Página:1

Respuestas relacionadas:

Necesito programa en pascalNecesito programa en pascalForo
Bajar programa de pascalBajar programa de pascalForo
Realice un programa en pascalRealice un programa en pascalForo
Como hacer programa en pascalComo hacer programa en pascalForo
Resolver un programa en turbo pascalResolver un programa en turbo pascalForo
Problema con pascalProblema con pascalForo
Problema de pascalProblema de pascalForo
Problema con pascal Problema con pascal Foro
Problema turbo pascalProblema turbo pascalForo
Problema en turbo pascalProblema en turbo pascalForo
InicioSecciones
^ SubirAviso legal
Política Privacidad
Configurarequipos26 Abril 2024