martes, 20 de diciembre de 2011

Ejercicio 33 (Estructuras simples de datos)

PROGRAM ejercicio_33 (input,output);
(*Ejercicio 33 del boletín de estructuras de datos*)
TYPE
    TMatricula = integer;
    TNMatricula = ARRAY [1..3] OF char;
    Tnombre = string(40);
VAR
    Matricula:TMatricula;
    LMatricula:TNMatricula;
    Edad:integer;
    Nombre:Tnombre;
    Apellido1:Tnombre;
    Apellido2:Tnombre;
    Acumulador:integer VALUE (0);(*Variable para sumar los números de la matrícula*)
    Resultado:boolean VALUE (FALSE);
PROCEDURE pedir;
          VAR
             i:integer VALUE (1);
          BEGIN
               Write('Escriba su nombre: ');
               Readln(Nombre);
               Write('Escriba su primer apellido: ');
               Readln(Apellido1);
               Write('Escriba su segundo apellido: ');
               Readln(Apellido2);
               Write('Escriba los números de la matricula de su coche: ');
               Read(Matricula);                
               Write('Indique su edad: ');
               Readln(Edad);
               Write('Escribe las letras de su matrícula: ');
               i:=1;
               WHILE i<=3 DO
               BEGIN
                    Read(LMatricula[i]);
                    (*Write(LMatricula[i]);*)
                    i:=i+1;
               END;
               Writeln;
               (*Writeln('Señor ',Nombre,' tiene usted un coche con matricula ',Matricula:0,LMatricula[1],LMatricula[2],LMatricula[3]);*)
        END;
PROCEDURE sumar_numeros;
          VAR
             Matriculas:integer;
          BEGIN
               Matriculas:=Matricula;
               REPEAT
               Acumulador:=Matriculas MOD (10)+ Acumulador;
               Matriculas:=Matriculas DIV (10);
               UNTIL Matriculas=0;
          END;
FUNCTION premio (Matricula,Edad:integer; Nombre:TNombre):boolean;
         VAR
            i:integer;
            Premio1:boolean VALUE (FALSE);
            Premio2:boolean VALUE (FALSE);
         BEGIN
              IF Edad=Acumulador THEN
                 Premio1:=TRUE
                 ELSE Premio1:=FALSE;
              IF (Nombre[1]=LMatricula[1]) AND (Apellido1[1]=LMatricula[2]) AND (Apellido2[1]=LMatricula[3]) THEN
                 Premio2:=TRUE;
              IF (Premio1=TRUE) AND (Premio2=TRUE) THEN
                 premio:=TRUE
              ELSE premio:=FALSE;
         END;
BEGIN
     pedir;
     sumar_numeros;
     (*premio(Matricula,Edad,Nombre);*)
     Resultado:=premio(Matricula,Edad,Nombre);
     IF Resultado=TRUE THEN
        Writeln('PREMIO la suma de los números de su matrícula es igual a su edad y las letras de su matrícula coinciden con sus iniciales.');
     IF Resultado=FALSE THEN
          Writeln('LO SIENTO NO TIENE PREMIO');
     readln(Edad);
END.

Ejemplo de ejecucion

No hay comentarios:

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | GreenGeeks Review