Pascal/Turbo Pascal - 2 dudas

   
Vista:

2 dudas

Publicado por Pablo (3 intervenciones) el 05/06/2008 17:02:05
Hola, tengo 2 dudas a ver si m la saben responder.Gracias de antemano.
Tengo que crear altas de receptores y extender un archivo con receptores existentes
1) Me dan un registro sin orden con nombreypellido, mail y pais. Me especifican que en el campo pais solo puede ir Argentina, Chile, Paraguay o Uruguay. Cuando quiero crear un alta cuando digo Ingrese Pais, como hago para que si me ponen Japon diga Pais no encontrado?
2) Cuando cree el alta al momento de pasarlo al archivo de personas como hago para que si ya exista el nombre y apellido me ponga 'Alta duplicada'?

Este es el programa que hice de crear altas y extenderlas a un archivo existente pero me falta agregarle estas 2 restricciones para que quede bien.

program Untitled;

type
Ts30 = string[30];
Ts9 = string[9];
Tvector = Array [1..3] of char;

TregReceptor = Record
ApellidoNombre: Ts30;
Mail: Ts30;
Pais: Ts9;
Acontecimiento: Tvector;
End;

TarchReceptores = file of TregReceptor;

Procedure ASIGNARABRIR (Var archout, archrec: TarchReceptores);
Begin
Assign (archout,'c: uevorec.dat');
Assign (archrec, 'c: eceptores.dat');
Rewrite (archout);
Reset (archrec);
End;

Procedure ALTAS (Var archout: TarchReceptores; Var rec: TregReceptor);
Begin
Writeln ('Ingrese Nombre y Apellido');
Readln (rec.apellidonombre);
while rec.apellidonombre<>'' do
begin
Writeln ('Mail');
Readln (rec.mail);
Writeln ('Pais de Residencia');
Readln (rec.pais);
Writeln ('Si desea tarjeta de Navidad sin animacion presione A, si desea con animacion presione D');
Readln (rec.acontecimiento[1]);
Writeln ('Si desea tarjeta de San Valentin sin animacion presione A, si desea con animacion D');
Readln (rec.acontecimiento[2]);
Writeln ('Si desea tarjeta de Año Nuevo sin animacion presione A, si desea con animacion D');
Readln (rec.acontecimiento[3]);
Write (archout, rec);
Writeln ('Ingrese Nombre y Apellido');
Readln (rec.apellidonombre);
end
end;

Procedure EXTENDERRECEPTORES (Var archout,archrec: TarchReceptores; Var rec: TregReceptor; Var n:longint);
Begin
seek (archout, 0);
while not eof (archout) do
begin
n:= filesize (archrec);
seek (archrec,n);
read (archout, rec);
write (archrec, rec);
end;
end;

Procedure CERRAR (Var archrec, archout: TarchReceptores);
Begin
Close (archrec);
Close (archout);
end;

Var
archout: Tarchreceptores;
archrec: TarchReceptores;
rec: TregReceptor;
n:longint;

Begin
ASIGNARABRIR (archout, archrec);
ALTAS (archout, rec);
EXTENDERRECEPTORES (archout, archrec, rec, n);
CERRAR (archrec, archout);
End.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:2 dudas

Publicado por Diego Romero (997 intervenciones) el 06/06/2008 18:59:46
1) No le pidas al usuario que escriba una palabra, no te conviene porque es más difícil de validar y es más complicado para el usuario. En vez de eso preséntale las 4 opciones y haz que teclee un número del 1 al 4. Así te ahorrarás mucho código.

2) Lo haces haciendo una búsqueda en el archivo. Pero para que esto sea efectivo debes cuidar el formato en que almacenas las cadenas en el archivo. Recuerda que "Diego" no es lo mismo que "DIEGO" que no es lo mismo que "DiEgO", para la computadora no es lo mismo así que debes almacenar los datos con formato uniforme, por ejemplo almacenando todas las cadenas en mayúsculas independientemente de cómo las ha ingresado el usuario, así cuando tengas que validar que no exista un nombre en el archivo siempre puedes comparar dos cadenas en mayúsculas. ¿Se comprende hasta acá?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar