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

Fermé
cartmanpro Messages postés 38 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 29 juillet 2011 - 28 avril 2008 à 23:36
kwaio Messages postés 3416 Date d'inscription mercredi 21 mars 2007 Statut Contributeur Dernière intervention 28 mars 2011 - 29 avril 2008 à 20:36
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
A voir également:

2 réponses

kwaio Messages postés 3416 Date d'inscription mercredi 21 mars 2007 Statut Contributeur Dernière intervention 28 mars 2011 681
28 avril 2008 à 23:42
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
cartmanpro Messages postés 38 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 29 juillet 2011
28 avril 2008 à 23:56
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
0
cartmanpro Messages postés 38 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 29 juillet 2011 > cartmanpro Messages postés 38 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 29 juillet 2011
29 avril 2008 à 00:29
Kwaio, 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
cartmanpro Messages postés 38 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 29 juillet 2011 > cartmanpro Messages postés 38 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 29 juillet 2011
29 avril 2008 à 08:48
[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
kwaio Messages postés 3416 Date d'inscription mercredi 21 mars 2007 Statut Contributeur Dernière intervention 28 mars 2011 681
29 avril 2008 à 20:36
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