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

Pascal Discussion :

Utiliser une matrice ou un tableau ?


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Utiliser une matrice ou un tableau ?
    salut a tout monde
    pardon je ne pas parle pas bien français
    je cherche une procédure qui découpe la matrice en deux parties
    les zeros en une partie et le les autres nombres dans la deuxième partie .
    merci!

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    A dire vrai, je n' arrive pas du tout à comprendre ton probleme. Si quelqu' un pouvait nous le traduire.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    A dire vrai, je n' arrive pas du tout à comprendre ton probleme. Si quelqu' un pouvait nous le traduire.
    Voici mon programe
    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
     
    program tab;
    uses wincrt;
     
                   var  note:array[1..2,1..2] of real;
                   j,i,r,h:integer;
                   a:real;
                   b:boolean;
     
                   begin
                   {saisie du tableau}
                   for i:=1 to 2 do
                   for j :=1 to 2 do
                   begin
                   writeln ('entrez une note');
                   readln (note[i,j]);
                   end;
     
     
     
     b:=false;
                    while (i < 2) and (j<2) and b=false  do
                    begin
                    r:=i+1;
                    h:=j+1;
     
                   if note[i,j]<>0 then
                   begin
                   a:= note[i,j];
                   note[i,j]:=note[r,h];
                   note[r,h]:=a;
                   i:=i+1;
                   j:=j+1;
                   end
                   else b:=true;
                   end;
     
     
       for  i:=1 to 2 do
       for  j:=1 to 2 do
       writeln (note[i,j]);
    ou le probleme

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    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
     
    program tab;
     
    uses wincrt;
     
    var note:array[1..2,1..2] of real;
     
        j,i,r,h:integer;
        a:real;
        b:boolean;
     
    begin
    clrscr;
     
    {saisie du tableau}
    for i:=1 to 2 do
     for j :=1 to 2 do
      begin
       write ('entrez la note[',i,',',j,'] : ');
       readln (note[i,j]);
      end;
     
    b:=false;
    while (i < 2) and (j<2) and (not b) do
    begin
     r:=i+1;
     h:=j+1;
     
     if note[i,j]<>0 then
      begin
      a:= note[i,j];
      note[i,j]:=note[r,h];
      note[r,h]:=a;
      i:=i+1;
      j:=j+1;
      end
     else
      b:=true;
    end;
     
    writeln;
     
     for i:=1 to 2 do
      begin
       for j:=1 to 2 do
       write (note[i,j]:5:2,'  ');
      writeln;
      end;
    readln
    end.
    bien que je ne comprend pas encore le probleme, je vois qu' il y a un os dans le code:
    b:=false;
    while (i < 2) and (j<2) and (not b) do
    A la sortie de la boucle for, i et j sont superieures à 2. Ce qui fait que la condition sera toujours false.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Qoe,
    Citation Envoyé par darrylsite Voir le message
    bien que je ne comprend pas encore le probleme, je vois qu' il y a un os dans le code:

    A la sortie de la boucle for, i et j sont superieures à 2. Ce qui fait que la condition sera toujours false.
    C'est un fait, mais dans la définition du Pascal, la valeur de la variable contrôlant une boucle n'est pas garantie à la sortie de cette boucle.

    C'est un fait également que je ne connais pas de compilateur Pascal conduisant à une valeur imprévisible d'une telle variable à la sortie de la boucle, donc ...
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re
    bonjour,
    C'est un fait, mais dans la définition du Pascal, la valeur de la variable contrôlant une boucle n'est pas garantie à la sortie de cette boucle.
    ben oui elle est connu, puisque l'instruction for je rappel à pour but d'incrémenter/décrémenter une variable à partir d'une borne inférieur/supérieur tout en exécutant à chaque foi les instructions qui se trouve dans la boucle.
    C'est un fait également que je ne connais pas de compilateur Pascal conduisant à une valeur imprévisible d'une telle variable à la sortie de la boucle, donc ...
    c'est sur ...
    donc avant le while faut réinitialiser tes variables, ensuite pour ton problème si j'ai bien compris tu veux ranger ta matrice de sorte que par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Si ta M=0 2  la matrice deviendra  M=0 2
            1 0                               0 1
    Si c'est ça je n'ai pas bien regarder ton code (illisible, pas de commentaire,pas d'indentation,pas d'espaces...etc) ça ira mais y a plus simple.
    Cordialement,
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Xoe,
    Citation Envoyé par diden138 Voir le message
    ben oui elle est connu, puisque l'instruction for je rappel à pour but d'incrémenter/décrémenter une variable à partir d'une borne inférieur/supérieur tout en exécutant à chaque foi les instructions qui se trouve dans la boucle.
    Elle est connue parce que tous les compilateurs le font, mais la norme Pascal ne garantit pas sa valeur à la sortie de la boucle.

    On s'en fout carrément, puisque on peux toujours compter sur sa valeur, mais attention quand même au piège du break (ou du goto, beuark) pour sortir de la boucle.
    Si les cons volaient, il ferait nuit à midi.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Mais je tiens à l'ordre la matrice
    Un numéro zero (0) ci-dessous (a fin matrice);

  9. #9
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Tout ça n'est pas très claire tu peux présenter l'affichage d'un résultat possible pour qu'on sache exactement ce que tu veux obtenir en sortie?
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

Discussions similaires

  1. [Oracle] Faire une matrice avec mon TABLEAU
    Par MRchips dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/01/2011, 14h58
  2. utiliser une liste dans un tableau croisé.
    Par zaatour dans le forum Cognos
    Réponses: 1
    Dernier message: 05/12/2007, 20h44
  3. Changer une fonction qui utilise une liste par un tableau!
    Par sara21 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 13h18
  4. Réponses: 8
    Dernier message: 16/04/2007, 16h10
  5. Réponses: 1
    Dernier message: 13/04/2007, 14h33

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