IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Codage binaire en Pascal


Sujet :

Turbo Pascal

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Codage binaire en Pascal
    Bonjour,

    J'ai besoin de votre aide pour corriger ce programme.
    Le problème est :
    Écrire un programme pascal qui consiste à compter les uns ou les zéros qui se suivent dans un octet.
    Exemples :
    Si O= 10011100 , il sera stocké 1203120

    Si O=01000011, il sera stocké 014021
    J'ai essayé cette solution mais toujours j'ai un problème pour le passage entre les 0 et 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    program binaire;
     
    uses  WinCrt;
     
      type
     tab= array[1..8] of string;
    var
    i,n,j,nbre,l: integer;
    T1,T2:tab;
    bb:boolean;
    res,chnbre:string;
    element:char;
     
    begin
     
    repeat
    writeln ('n=');
    readln (n);
    until n in [2..8];
    for i:=1 to n do
    repeat
     
    writeln('donner l"element',i);
    readln (T1[i]);
    j:=0; bb:=true;
    repeat
    j:=j+1;
    if not( T1[i][j] in ['0'..'1']) then
      bb:=false;
    until (length (T1[i])=8) or (bb=false);
    until (length (T1[i])=8) and (bb);
    for i:=1 to n do
     
    begin
     
     
    nbre:=1;l:=1;
    repeat
    element:=T1[i][j]; nbre:=1;
     while (T1[i][j+1]=element) do
      begin
       j:=j+1;
      nbre:=nbre+1
    end;
     
    if (nbre>1) then
     begin
    str(nbre,chnbre);
    T2[i]:=T2[i]+chnbre+T1[i][j-1]; 
    end 
    else
    begin T2[i]:=T2[i]+T1[i][j]; j:j+1; end; l:=j+1;
    until (l>8);
     
    end;
    for i:=1 to n do
    writeln (T2[i]);
    end.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 461
    Points : 5 918
    Points
    5 918
    Par défaut
    salut

    tu t'est un peu compliqué la vie
    avec 2 boucle tu doit pouvoir t'en sortir
    la première pour parcourir le tableau de n éléments
    et la seconde pour convertir ton string

    le plus simple étant de créer une fonction pour la transformation de l'element

    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
      ///////////////////////////////////////////////////
      ////////                                             ////////
      ///////////////////////////////////////////////////
      Function ProcessStr(strVal : String) : String;
        ...
      begin
         // Initialisation 
        ...
         //Fin Initialisation 
         // on parcour toutes les valeur 
         while  IPosInStr  <  8   do // dans la saisi tu oblige à la définition de 8 caractère donc 7+1
         begin
           if  OldChar=strVal[IPosInStr+1] Then // Cas ou le future caractère correspond à celui en cours
           begin
               ...
           end
           else // Cas ou le future caractère ne correspond pas à celui en cours
           begin
             if  cpt <> 0 then  // Cas 1 : si le compteur a été incrémenté
             begin
                .... 
             end
             else   // Cas 2 : si le compteur n'a pas été incrémenté
                .... 
             cpt := 0; // on remet le compteur a zero
           end
           Inc(IPosInStr); // on incremente la position dans le string
           OldChar :=strVal[IPosInStr];  // On remplace le vieux caractère par celui en cours ;
        end;
         ProcessStr := Res ;
      end;
    //// Prog principale de ton tableau
      For Itab1 := 1 to n do 
      begin
         T2[Itab1] := ProCessStr(T1[iTab1]);
      end;
    je te laisse remplir les blanc ... avec un peu de logique tu trouveras

Discussions similaires

  1. [Free Pascal] Comment déclarer un fichier binaire en Pascal
    Par antezi dans le forum Free Pascal
    Réponses: 2
    Dernier message: 10/05/2013, 15h15
  2. Réponses: 2
    Dernier message: 17/02/2010, 18h27
  3. Codage binaire de la population
    Par debalgo dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/05/2008, 15h34
  4. convertir un reel en une chaine binaire(codage)
    Par jiji83 dans le forum Langage
    Réponses: 3
    Dernier message: 21/02/2007, 19h19
  5. [LG]convertion réel en binaire en pascal.
    Par gabyboul dans le forum Langage
    Réponses: 12
    Dernier message: 07/12/2003, 07h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo