[PASCAL] Recherche d'élément dans un tableau

Bonjour,
Voilà j'avais un devoir à rendre pour demain. La prof a demandé de rechercher un élément sur une ligne : linéaire :

program recherchex;
const n=3;
var v: array[1..n] of integer;
x,i:integer;
trouve:boolean;
begin
for i:=1 to n do
begin
v[i]:=i;
end;
writeln('Introduire x');
readln(x);
trouve:=false;
i:=1;
begin;
while (i<=n) AND (trouve=false) do
if v[i]=x then trouve:=true;
i:=i+1;
end;
if trouve=true then writeln('x appartient au tableau')
else writeln('x nappartient pas au tableau');
readln;
end.

La prof me demande ensuite de retrouver : Rechercher un élément y dans un tableau de n x m éléments entiers.
Là dessus je suis coincé, donc je viens vous voir pour m'aider, car je n'y arrive pas de ce fait j'ai contacté un ami, il n'y arrive pas non plus. Je sais qu'il faut utiliser deux boucles imbriquées. Pouvez vous m'aidé svp
Merci de votre aide
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Contributeur
    En fait c'est simple.
    Tu fais une première boucle qui te fais parcourir une a une les "colonnes" de ta matrice.
    Dans chacune des itérations de cette première boucle, une seconde boucle parcourt chaque élement de cette colonne.

    Exemple :

    Tableau n*p (n lignes p colones)

    Pour i de 1 à p :
    -Pour j de 1 à n :
    -si Tableau [i,j] vaut x
    --Alors trouvé vaut True
    -fin boucle 2
    fin boucle 1

    Si trouvé = true, afficher "x appartient à cette matrice"
    1
    1. program recherchex;
      const n=1; p=3;
      var v: array[n..p] of integer;
      x,i,j:integer;
      trouve:boolean;
      begin
      for i:=1 to p do
      for j :=1 to n do
      begin
      v[i]:=i;
      end;
      writeln('Introduire x');
      readln(x);
      trouve:=false;
      i:=1;
      begin;
      while (i<=n) AND (trouve=false) do
      if v[i]=x then trouve:=true;
      i:=i+1;
      end;
      if trouve=true then writeln('x appartient au tableau')
      else writeln('x nappartient pas au tableau');
      readln;
      end.

      sa m"le compile mais je pense avoir faux, je suis nulle en pascal :(, xD..Si je trouve pas tempi j'aurai une preveu que j'aurais cherché et ptet quel me mettra la moyenne :p qui c'est ! :p
      -1
    2. @cartmanproKwaio, je n'arrive toujours pas à dormir sa m'embête énormément ! Veux tu bien m'aidé d'avantage ? stp ?

      program recherchex;

      var v: array[1..10] of integer;
      x,i:integer;
      trouve:boolean;

      begin
      for i:=1 to 10 do
      begin
      v[i]:=i;
      end;
      writeln('Introduire x');
      readln(x);
      trouve:=false;
      i:=1;
      begin;
      while (i<=10) AND (trouve=false) do
      if v[i]=x then trouve:=true;
      i:=i+1;
      end;
      if trouve=true then writeln('x appartient au tableau')
      else writeln('x nappartient pas au tableau');
      readln;
      end.

      j'vois pas s'que je dois ajouté :s HELP ME plz
      0
    3. @cartmanpro[code]program recherchex;
      const n:=3;
      p:=4;
      var mat: array[1..n,1..p] of integer;
      v: matrice;
      x,i,n,p:integer;
      trouve:boolean;

      begin
      write ('introduire x')
      lire (x);
      trouve := false
      i:=1;
      while (a<=n)and (trouve = false)do
      b<=1;
      while (b<=m) and (trouve = false) do
      if v [x,i] = x then trouve = true;
      b<= b+1
      a:=a+1
      if trouve = true then writeln (x,' appartient au tableau');
      else writeln (x,' n'appartient pas au tableau');

      end.
      [/code]

      savez-vous me donné la solution svp..
      0
  2. Contributeur
    Pour i de 1 à p :
    -Pour j de 1 à n :
    -si Tableau [i,j] vaut x
    --Alors trouvé vaut True
    -fin boucle 2
    fin boucle 1


    Ca donne

    Program ----;
    uses wincrt;
    Const n:=3; p:=4;

    Var Tab:array[1..n,1..p]of integer;
    i,j:integer;
    trouve:boolean;

    BEGIN
    [Tab doit etre rempli avant]
    x:=1; # exemple
    trouve:=false

    For i:=1 to n do
    begin
    For j:=1 to p do
    begin
    if Tab[i,j]=x
    then trouve:=true;
    end;
    end;

    If trouve=true
    then writeln('x appartiens a la matrice');

    END.

    (Avec un doute sur les ' => " ? )

    Attention, le tableau (la matrice) DOIT ETRE initialisé (rempli d'entiers dans le programme)
    0