Hola Visitante

Autor Tema: Copia .com .cat .net .es @ Examen programacion  (Leído 1705 veces)

Lexus123

  • Newbie
  • *
  • Mensajes: 20
    • Ver Perfil
Copia .com .cat .net .es @ Examen programacion
« en: Enero 27, 2010, 07:41:26 pm »
Código: (ada) [Seleccionar]
WITH Ada.Text_IO;
USE Ada.Text_IO;
WITH Ada.Command_Line;
USE Ada.Command_Line;

PROCEDURE Copia_Paraula IS

   TYPE Paraula IS ARRAY (1 .. 50) OF Character;
   Paraula1 : Paraula;
   F,
   G        : File_Type;
   C        : Character;
   FUNCTION Condicionscopia (
         Paraula1 : IN     Paraula)
     RETURN Boolean IS
      I       : Integer;
      Sortida : Boolean;
      --Functions secundaries.
      FUNCTION Mirar_Es RETURN Boolean IS
      BEGIN
         I:=I+1;
         IF Paraula1(I)='e' AND Paraula1(I+1)='s' AND Paraula1(I+2)=' ' THEN
            RETURN True;
         ELSE
            RETURN False;
         END IF;
      END Mirar_Es;

      FUNCTION Mirar_Com RETURN Boolean IS
      BEGIN
         I:=I+1;
         IF Paraula1(I)='c' AND Paraula1(I+1)='o' AND Paraula1(I+2)='m' AND Paraula1(I+3)=' ' THEN
            RETURN True;
         ELSE
            RETURN False;
         END IF;
      END Mirar_Com;

      FUNCTION Mirar_Net RETURN Boolean IS
      BEGIN
         I:=I+1;
         IF Paraula1(I)='n' AND Paraula1(I+1)='e' AND Paraula1(I+2)='t' AND Paraula1(I+3)=' ' THEN
            RETURN True;
         ELSE
            RETURN False;
         END IF;
      END Mirar_Net;

      FUNCTION Mirar_Cat RETURN Boolean IS
      BEGIN
         I:=I+1;
         IF Paraula1(I)='c' AND Paraula1(I+1)='a' AND Paraula1(I+2)='t' AND Paraula1(I+3)=' ' THEN
            RETURN True;
         ELSE
            RETURN False;
         END IF;
      END Mirar_Cat;

   BEGIN
      Sortida:=False;
      I:=I+1;
      While paraula1(i)/=' ' and sortida=false loop
      IF Paraula1(I)='@' THEN
         Sortida:=True;
      ELSIF Paraula1(I)='.' THEN
         IF Mirar_Es then
               Sortida:=True;
         ELSIF Mirar_Com THEN

            Sortida:=True;
         ELSIF Mirar_Cat THEN
            Sortida:=True;
         ELSIF Mirar_Net THEN
            Sortida:=True;
         END IF;
      END IF;
      I:=I+1;
   END LOOP;
   RETURN Sortida;
END Condicionscopia;


--Copia.
PROCEDURE Copia (
      Paraula1 : IN     Paraula;
      G        : in OUT File_Type) IS
   I : Integer;
BEGIN
   I:=1;
   WHILE Paraula1(I)/=' ' LOOP
      Put(G,Paraula1(I));
      I:=I+1;
   END LOOP;
   New_Line(G);
END Copia;
--Emmagatzema.
PROCEDURE Emmagatzemap (
      Paraula1 :    OUT Paraula) IS
   I : Integer;
BEGIN
   I:=1;
   Get(F,C);
   WHILE C/=' ' and i<50 and not end_of_line(f) LOOP
      Paraula1(I):=C;
      Get(F,C);
      I:=I+1;
   END LOOP;
   Paraula1(I):=' ';
END Emmagatzemap;
--Programa principal.
BEGIN
   IF Argument_Count/=1 THEN
      Put(\"El programa necesita un nom d'un arxiu de textper fer la copia\");
   ELSE
      Open (F, In_File, Argument(1));
      Create (G, Out_File, \"Paraules_De_\"&Argument(1));
      WHILE NOT End_Of_File(F) LOOP
         Emmagatzemap(Paraula1);
         IF Condicionscopia(paraula1) THEN
            Copia(Paraula1,g);
         END IF;

      END LOOP;
   END IF;
   Close(F);
   Close(G);
END Copia_Paraula;

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Copia .com .cat .net .es @ Examen programacion
« Respuesta #1 en: Enero 27, 2010, 10:35:33 pm »
lo he estado mirando y el problema que tenia es en los finales de linea =S nio lo se solventar aqui dejo un codigo que no tiene ese fallo pero deja que desear


Código: (ada) [Seleccionar]
WITH Ada.Text_IO;
USE Ada.Text_IO;
WITH Ada.Command_Line;
USE Ada.Command_Line;

PROCEDURE Copia_Paraula IS

   TYPE Paraula IS ARRAY (1 .. 50) OF Character;
   Paraula1 : Paraula;
   F,
   G        : File_Type;
   C        : Character;
   FUNCTION Condicionscopia (
         Paraula1 : IN     Paraula)
     RETURN Boolean IS
      I       : Integer;
      Sortida : Boolean;
   BEGIN
      Sortida:=False;
      I:=1;
      While paraula1(i)/=' ' and sortida=false loop
      IF Paraula1(I)='@' THEN
         Sortida:=True;
      ELSIF Paraula1(I)='.' THEN
            IF Paraula1(I+1)='e' AND then Paraula1(I+2)='s' AND then Paraula1(I+3)=' ' THEN Sortida:=True;
            elsif Paraula1(I+1)='c' AND then Paraula1(I+2)='o' AND then Paraula1(I+3)='m' and then Paraula1(I+4)=' ' THEN Sortida:=True;
            ELSIF Paraula1(I+1)='n' AND THEN Paraula1(I+2)='e' AND THEN Paraula1(I+3)='t' AND THEN Paraula1(I+4)=' ' THEN Sortida:=True;
            ELSIF Paraula1(I+1)='c' AND THEN Paraula1(I+2)='a' AND THEN Paraula1(I+3)='t' AND THEN Paraula1(I+4)=' ' THEN Sortida:=True;
            ELSE Sortida:=False;
            END IF;
      END IF;
      I:=I+1;
   END LOOP;
   RETURN Sortida;
END Condicionscopia;


--Copia.
PROCEDURE Copia (
      Paraula1 : IN     Paraula;
      G        : in OUT File_Type) IS
   I : Integer;
BEGIN
   I:=1;
   WHILE Paraula1(I)/=' ' LOOP
      Put(G,Paraula1(I));
      I:=I+1;
   END LOOP;
   New_Line(G);
END Copia;
--Emmagatzema.
PROCEDURE Emmagatzemap (
      Paraula1 :    OUT Paraula) IS
   I : Integer;
BEGIN
   I:=1;
   Get(F,C);
   WHILE C/=' ' and i<50 and not end_of_file(f) LOOP
      Paraula1(I):=C;
      Get(F,C);
      I:=I+1;
   END LOOP;
         Paraula1(I):=' ';
   FOR J IN 1..I LOOP
      Put(Paraula1(J));
     end loop;
END Emmagatzemap;
--Programa principal.
BEGIN
   IF Argument_Count/=1 THEN
      Put(\"El programa necesita un nom d'un arxiu de textper fer la copia\");
   ELSE
      Open (F, In_File, Argument(1));
      Create (G, Out_File, \"Paraules_De_\"&Argument(1));
      WHILE NOT End_Of_File(F) LOOP
         Emmagatzemap(Paraula1);
         IF Condicionscopia(paraula1) THEN
            Copia(Paraula1,g);
         END IF;

      END LOOP;
         Close(F);
   Close(G);
   END IF;

END Copia_Paraula;