[pascal] découper un string en caractere

troy06 Messages postés 57 Date d'inscription   Statut Membre -  
ZOUARI Messages postés 62 Statut Contributeur -
Je suis en premiere candi et je dois fair eun touché-coulé. J'ai des coordonées dans uun strinf (ex : B4) et je dois mettre la lettre (de a à j) dans une variable de type char et le chiffre dans une variable de type integer (de 1 à 10) pour pouvoir ensuite les utiliser comme coordonée dans un tablau. je me charge de transformer la lettre en chiffre

D'avance merci

*Ca sent mauvais dit le chat en parlant de la viande qu'il 
ne peut atteindre (proverbe persan)*

5 réponses

  1. zagor
     
    salut!
    tu crées un tableau de type string de longueur 3, la première postion est la lettre et les suivantes les chiffres, ce qui donnerai à peu près :

    program convertion();
    type alpha = string[3];

    var coordonnee : alpha;
    lettre : char;
    chiffre : int;

    begin write('coordonnées ');
    read(coordonnee);
    lettre := coordonnee[1];
    chiffre := coordonnee[2] + coordonnee [3];
    end.

    c'est pas sur qu'il n'y ait pas d'erreur, mais l'idée est de se dire que la chaine de caractère est en fait un tableau de string.
    1
  2. ZOUARI Messages postés 62 Statut Contributeur 29
     
    Bonjour,
    la solution est
    program Zouari;
    uses wincrt;
    var
    l:char;
    x:integer;
    ch:string[3];
    Procedure convertir (ch:string;var lettre :char;var x :integer);
    var d,e,u:integer;
    Begin
    lettre := ch[1];
    val(ch[2],d,e);
    val (ch[3],u,e);
    if length (ch) = 3 then
    x := (d * 10)+ u
    else x := d;
    end;
    Begin
    Write ('Donnez votre chaîne : '); Readln (ch);
    convertir (ch,l,x);
    Writeln (l);
    Writeln (x);
    End.
    1
  3. troy06 Messages postés 57 Date d'inscription   Statut Membre
     
    merci pour ton idée.
    Ca fontcionne en gros mais t'avai juste oublié d'utiliser la fonction ord car dans le strring il prend le chiffre comme un caractere et non un 'integer'. Il me reste juste un prob pour le 10 parce que c'est a deux chiffres.

    *Ca sent mauvais dit le chat en parlant de la viande qu'il 
    ne peut atteindre (proverbe persan)*
    0
  4. zagor
     
    si je trouve une solution pour le dix je te dis, mais pour l'insant j'ai un peu abondonné pascal.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Taboujr Messages postés 507 Statut Membre 117
     
    Le plus simple, c'est peut-être d'utiliser le premier et le dernier caractère du string qui contient le code de la case. Comme ça, pour 10 tu as 0 (inutilisé par ailleurs). Voilà, c'est juste une petite idée...

    TaBou JuNioR
    0