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