Forum ada95000 Dernière connexion : 01/07/2025 à 13:13
Fin de session : 01/07/2025 à 13:23

Vous n'êtes pas connecté [Connexion - Inscription]
Go Bottom
Version imprimable | Envoyer à un ami | S'abonner | Ajouter aux Favoris Nouveau SujetNouveau sondageRépondre
Auteur: Sujet: Déterminer les dimensions d'une image .pgm   ( Réponses: 0 | Vues: 576 )
ftbass
Administrator
StaffStaffStaffStaffStaffStaffStaffStaffStaff
 
images/avatars/WC3HumanOp1.gif
 
Messages: 72
Inscrit(e) le: 27/02/2004
Déconnecté(e)
Publié le 09/07/2004 à 16:00 Reply With Quote
Déterminer les dimensions d'une image .pgm

Y'a moyen de faire mieux, mais ca marche, donc voilà mon code :

code:

with text_io; use text_io;
with ada.integer_Text_Io; use ada.integer_Text_Io;
with ada.Float_Text_Io; use ada.Float_Text_Io;
with sequential_io;

procedure DimImage is

--////////////////////////////////////////////////////////////////////////--
-- Paquetages --
--////////////////////////////////////////////////////////////////////////--

package fichier_car is new sequential_IO(character); use fichier_car;

--////////////////////////////////////////////////////////////////////////--
-- Types   --
--////////////////////////////////////////////////////////////////////////--

-- Type qui contient la chaine décrivant les dimensions de l'image
type TabDim is array(1..10) of character;

--////////////////////////////////////////////////////////////////////////--
-- Fonctions   --
--////////////////////////////////////////////////////////////////////////--

function CarVersNombre(Car : in character; Rang : integer) return integer is

Resultat : integer;
Coeff : integer:= 1;

begin

  case Car is
     when '0' =>
        Resultat := 0;
     when '1' =>
        Resultat := 1;
     when '2' =>
        Resultat := 2;
     when '3' =>
        Resultat := 3;
     when '4' =>
        Resultat := 4;
     when '5' =>
        Resultat := 5;
     when '6' =>
        Resultat := 6;
     when '7' =>
        Resultat := 7;
     when '8' =>
        Resultat := 8;
     when '9' =>
        Resultat := 9;
     when others =>
        Resultat := 0;
  end case;
  if Rang = 0 then
     Coeff := 1;
  else
     for i in 0..(Rang - 1) loop
        Coeff := (Coeff * 10);
     end loop;
  end if;
  Resultat := Resultat * Coeff;

  return Resultat;
 
end CarVersNombre;

--////////////////////////////////////////////////////////////////////////--
-- Procédures   --
--////////////////////////////////////////////////////////////////////////--

-- Procédure qui va lire les dimensions d'une imageet les mettre dans DimL, et DimH
procedure LireDimImage(Fichier : in fichier_car.file_type; DimL, DimH : in out integer) is

ComptChar10 : integer := 0;
CarLu : character;
i : integer := 1;
Tab : TabDim := ('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');
rang : integer := 0;
EspaceTrouve : boolean := false;

begin
  DimL := 0;
  DimH := 0;
 
  while ComptChar10 < 3 loop
     read(Fichier, Carlu);
     if ComptChar10 = 2 then
        Tab(i) := CarLu;
        i := i + 1;
     end if;
     if Carlu = character'val(10) then
        ComptChar10 := ComptChar10 + 1;  
     end if;
  end loop;
  for i in reverse 1..10 loop
     if Tab(i) /= 'a' then
        if Tab(i) = ' ' then
           EspaceTrouve := true;
           Rang := 0;
        end if;
        if Tab(i) /= 'a' then
           Rang := Rang + 1;
           if EspaceTrouve = true then
              DimH := DimH + CarVersNombre(Tab(i), rang - 2);
           else
              DimL := DimL + CarVersNombre(Tab(i), rang - 2);
           end if;
        end if;
     end if;
  end loop;
 
end LireDimImage;

--////////////////////////////////////////////////////////////////////////--
-- Prog Principal   --
--////////////////////////////////////////////////////////////////////////--

NomFichierInitial : string(1..30);
comptChaine : integer;
fichierInitial : fichier_car.file_type;  
DimL, DimH : integer;

begin
  put("Donnez le nom du fichier a etudier : ");
  get_line(item => nomFichierInitial, last => comptChaine);
  open(fichierInitial, in_file, nomFichierInitial(1..comptChaine));
  LireDimImage(FichierInitial, DimL, DimH);
  put("Largeur : ");
  put(DimL);
  new_Line;
  put("Hauteur : ");
  put(DimH);
end DimImage;
http://ftprods.free.fr
Go Top #71 Go Bottom
View ftbass's ProfileE-Mail ftbassVisit ftbass's HomepageView All Posts by ftbassU2U Member
Nouveau SujetNouveau sondageRépondre

Go Top
10.2.59.74 13:13 - 1 Juillet 2025 10.2.59.74
[ 0.3282290 secondes | Effacer le cookie | 19 requêtes ]
Oxygen v1.0.11 © 2002  |  Oxygen WebSite © 2002