1
« en: Viernes 6 de Junio de 2008, 03:54 »
Tengo un programa que consiste en crear altas de receptores y extender el archivo de receptores ya existentes con las altas nuevas.
El problema que tengo es que me especifican que en el campo pais tienen que ir Argentina, Chile, Uruguay y Paraguay. Esta armado un case of pero creo que esta mal (x eso esta con // al comienzo). Esta hecho con if pero tambien creo q esta mal porque el programa anda pero si pongo p.ej. Japon, el programa sigue sin realizar la restriccion. Les paso el codigo a ver donde esta la falla.
Gracias de antemano!!
ACA ESTA EL CODIGO:
program Untitled;
uses crt;
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:\nuevorec.dat');
Assign (archrec, 'c:\receptores.dat');
Rewrite (archout);
Reset (archrec);
End;
Function PAISCORRECTO (pais: string[9]): boolean;
begin
//case pais of
// 'argentina','ARGENTINA': PAISCORRECTO:= true;
// 'chile', 'CHILE': PAISCORRECTO:= true;
// 'paraguay', 'PARAGUAY': PAISCORRECTO:= true;
// 'uruguay', 'URUGUAY': PAISCORRECTO:= true;
// end;
if(pais = 'argentina') or (pais='ARGENTINA') THEN PAISCORRECTO:=false;
if (pais = 'chile') or (pais='CHILE') THEN PAISCORRECTO:=false;
if (pais= 'chile') or (pais= 'CHILE') THEN PAISCORRECTO:=false;
if (pais= 'paraguay') or (pais= 'PARAGUAY') THEN PAISCORRECTO:=false;
if (pais= 'uruguay')or (pais= 'URUGUAY') THEN PAISCORRECTO:=false;
end;
Procedure ALTAS (Var archout: TarchReceptores; Var rec: TregReceptor);
var
respuesta:boolean;
letra: char;
Begin
respuesta:=true;
Writeln ('Ingrese su Nombre y Apellido');
Readln (rec.apellidonombre);
while rec.apellidonombre<>'' do
begin
Writeln ('Ingrese el Mail');
Readln (rec.mail);
while (respuesta) do
begin
Writeln ('Ingrese el Pais de Residencia');
readln(rec.pais);
respuesta:= PAISCORRECTO(rec.pais);
if (respuesta= true) then writeln ('Pais inexistente.');
end ;
respuesta:= true;
writeln;
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 su 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
clrscr;
ASIGNARABRIR (archout, archrec);
ALTAS (archout, rec);
EXTENDERRECEPTORES (archout, archrec, rec, n);
CERRAR (archrec, archout);
End.