[pascal] découper un string en caractere

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. 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. 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)*
      1. si je trouve une solution pour le dix je te dis, mais pour l'insant j'ai un peu abondonné pascal.
        1. 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
          1. Contributeur
            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.