Pascal/Turbo Pascal - VALIDACION EN PASCAL

 
Vista:

VALIDACION EN PASCAL

Publicado por Maria Eugenia (3 intervenciones) el 10/07/2009 17:35:52
EN MI PROGRAMA, AL INICIARLO, GUARDO EN UN REGISTRO CON ARREGLOS NOMBRES DE PERSONAS. LUEGO, EN EL MISMO REGISTRO, VOY INGRESENDO OTROS DATOS, PONIENDO PRIMERO NUEVAMENTE EL NOMBRE DE LA PERSONA PARA QUE LOS BUSQUE EN EL REGISTRO Y LOS DATOS CORESPONDAN CON EL NOMBRE, YA QUE NO SE INGRESAN EN EL MISMO ORDEN.
LO QUE QUISIERA SABER ES COMO VALIDAR EL INGRESO DE NOMBRES, ES DECIR, QUE AL PONER NUEVAMENTE LOS NOMBRES (ANTES DE CARGAR LOS DEMAS DATOS), ESTOS SI O SI DEBAN CORRESPONDER CON LOS NOMBRES QUE GUARDE INICIALMENTE EN EL REGISTRO.
INTENTE CON U N FOR Y UN REPEAT PERO NO ME FUNCIONO, YA QUE SOLO LLEGA A COMPARAR EL NOMBRE INGRESADO CON EL QUE ESTA GUARDADO EN LA PRIMERA POSICION DENTRO DEL REGISTRO Y NO SIGUE COMPARANDO CON LAS DEMAS.
ESPERO QUE SE ENTIENDA.
MUCHAS GRACIAS.
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:VALIDACION EN PASCAL

Publicado por Miguel (159 intervenciones) el 10/07/2009 22:14:51
Maria Eugenia podrías ejemplificar mas tu ejercicio, por que me cuesta entenderlo.
Espero ayudarte.
Saludos.
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

RE:VALIDACION EN PASCAL

Publicado por M. Eugenia (3 intervenciones) el 11/07/2009 02:37:09
TE EXPLICO.
TRABAJO CON UN REGISTRO DE MATRICES UNIDIMENSIONALES O VECTORES, TODAS DEL MISMO TAMAÑP.
EN EL REGISTRO HAY UNA MATRIZ QUE SE LLAMA "NOMBRES" Y QUE CORRESPONDEN A DISTINTAS PERNONAS. LO PRIMERO QUE HAGO CUANDO EMPIEZA EL PROGRAMA ES CARGAR TODOS LOS NOMBRES EN ESTE MATRIZ.
LUEGO TENGO QUE CARGAR OTROS DATOS, COMO EDAD, DIRECCION ETC. OBVIO QUE ANTES DE INGRESAR LOS DATOS CORRESPONDIENTES DE CADA PERSONA VUELVO A INGRESAR EL NOMBRE, PARA QUE LO BUSQUE EN LA MATRIZ "NOMBRES" Y ASI LOS DATOS CORRESPONDAN BIEN CON LOS NOMBRES DE CADA PERSONA.
MI DUDA ES LA SIGUIENTE: LO QUE YO BUSCO ES QUE AL INGRESAR NUEVAMENTE LOS NOMBRES PARA CARGAR DEMAS DATOS ESTOS CORRESPONDAN SI O SI CON LOS NOMBRES YA GUARDADOS EN LA MATRIZ NOMBRES, Y DE NO SER ASI, QUE VUELVA A PEDIR QUE INGRESE EL NOMBRE, HASTA QUE CORRESPONDA CON LOS YA CARGADOS.

Ej:
INGRESO 4 NOMNBRES: JUAN, ANA, PEDRO, MARIA.
LUEGO EMPIEZO A CARGAR LOS DATOS DE CADA PERSONA:
NOMNRE: MARIA
EDAD:20
DIRECCION
ETC
NOMBRE: ANA
EDAD:25
ETC...
Y ASI CON LAS CUATRO PERSONAS.
LA IDEA ES QUE SI EN VEZ DE INGRESAR, EN EL MOMENTO DE CARGAR LOS DATOS, OTRO NOMBRE QUE NO SEA JUAN, ANA, PEDRO O MARIA, SEGUN EL EJEMPLO, ME VUELVA A PEDIR QUE INGRESE NONBRE HASTA QUE SEA CORRECTO.

ESPERO QUE ESTE MAS CLARO
GRACIAS...
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

RE:VALIDACION EN PASCAL

Publicado por Miguel (159 intervenciones) el 11/07/2009 06:30:05
Mmmm a ver si entendi bien. Algo asi?...

PROGRAM ejemplo;
USES CRT;
CONST
Max = 4;
TYPE
TPersona = RECORD
nom : STRING[20];
dni : STRING[8];
END;
TArr = ARRAY[1..Max] OF TPersona;
VAR
arreglo : TArr;
PROCEDURE Cargar_Nombres (VAR a : TArr);
VAR
i : INTEGER;
nombre : STRING[20];
BEGIN
CLRSCR;
i:=1;
WHILE i<=Max DO
BEGIN
WRITE('Ingrese el nombre: ');
READLN(nombre);
a[i].nom:=nombre;
i:=i+1;
END;
END;

PROCEDURE Cargar_Datos (VAR a : TArr);
VAR
i : INTEGER;
nombre : STRING[20];
doc : STRING[8];
BEGIN
REPEAT
CLRSCR;
WRITE('Ingrese el nombre de la persona a registrar: ');
READLN(nombre);
i:=1;
WHILE (i<=Max)AND(Not(nombre=a[i].nom)) DO
BEGIN
i:=i+1;
END;
IF (nombre)=a[i].nom
THEN BEGIN
WRITE('Ingrese el documento de ',nombre,' : ');
READLN(doc);
a[i].dni:=doc;
END
ELSE BEGIN
WRITE('Error, Reintentelo. ');
READKEY;
END;
UNTIL (nombre=a[i].nom);
END;

BEGIN
Cargar_Nombres(arreglo);
Cargar_Datos(arreglo);
READKEY;
END.

Ojo, es una forma de solucionar lo que dice no es un programa bien hecho...
Cargar_Nombres primero carga solo los nombres.
Cargar_Datos solicita un nombre, si se encuentra en el arreglo pide los otros datos (en este caso puse dni como ejemplo), si no se encuentra se vuelve a solicitar el nombre.

Espero que te sirva.
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

RE:VALIDACION EN PASCAL

Publicado por M. Eugenia (3 intervenciones) el 11/07/2009 22:26:25
La verdad que no entendi mucho, es que yo no lo tengo divido por partes al programa , además tengo otras variables y declare el registro directamente en el bloque de variables. Te paso una parte del mio para ver si me lo podes explicar desde el mio.

PROGRAM TP (INPUT,OUTPUT);
USES CRT;
VAR
E,I:INTEGER;
NOM:STRING[25];
A: RECORD
NOMBRE,DIRECCION: ARRAY [1..4] OF STRING [25];
EDAD,DNI: ARRAY [1..4] OF INTEGER;
END;

BEGIN
CLRSCR;
WRITELN('INGRESE LOS NOMBRES');
FOR I:= 1 TO 4 DO
READLN(A.NOMBRE[I]);
FOR E:= 1 TO 4 DO
BEGIN
WRITELN('INGRESE NOMBRE'');
READLN(NOM);
WRITELN('INGRESE EDAD');
READLN(EDAD);

EMPIEZA MAS O MENOS ASI, LO UNICO QUE CAMBIE ALGUNAS PARTES PARA QUE NO SE TE HAGA LIO.
EL PROGRAMA ESTA BIEN, LO UNICO QUE NECESITO SABER ES COMO VALIDAR LOS NOMBRES.
GRACIAS.
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