Algorithme_pascal
Fermé
mimi.2008
Messages postés
40
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
27 août 2010
-
9 févr. 2008 à 15:02
ballackacem Messages postés 58 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 23 juin 2009 - 18 févr. 2008 à 11:41
ballackacem Messages postés 58 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 23 juin 2009 - 18 févr. 2008 à 11:41
14 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
9 févr. 2008 à 15:06
9 févr. 2008 à 15:06
Pas bien de faire des double posts ^^.
Déjà, arrives-tu à faire l'exercice pour k=1, c'est-à-dire de récupérer l'élément minimal et sa position ?
Déjà, arrives-tu à faire l'exercice pour k=1, c'est-à-dire de récupérer l'élément minimal et sa position ?
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
9 févr. 2008 à 17:39
9 févr. 2008 à 17:39
bon je ne souvien pas bien de programmation pascal mais je peux te donner l'idée .
ce programme n'est pas surement juste mais son idée est juste je croix.
peut etre il y a des erreurs mais a cause de mannque de temps je ne l'ai pas rivisé donc il faut bien le derouler .
mon idée est de trouver combien on a desc entiers differentes dans le tableau : par exemple dans ton exemple on a 6 sont 1 ,2,4,5,7,9.
donc on a besoin d'une fonction qui retire se nombre .
j'utilise un fonction de type boléenne qui retire si l'entier d'une colonne i existe deja entre T(1)EtT(i-1) ou non telque T est un tableau d'entiers.
fonction existe(l: integer,T:tab):boléen ;
debut
i:=1;existe:=vrai;
tantque(i<l) et faire
debut tantque
if T(i)=T(l) then existe:=faux ;
i:=i+1;
fintantque;
utilisant cette fonction on peut ecrire une autre fonction qui calcule enfin le nombre des entiers differentes.
fonction nombres (T:tab):entier;
debut
i:=0; nombres=1;
tantque(i<=N) faire
debuttantque
if existe (i,T)=faux nombres =nombres+1;
i=i+1;
fintantque
fin.
maintenat l'algorithme final
algo exos ;
debut
lire N ;
lire les elements de T;
k:=0;min:=T(1);
h:=nombres(T)
tantque(k<h-3) et (i<N)faire
debuttanque
si T(i)<min alors
debut si
k:=k+1;
j:=i;
finsi
i:=i+1;
fintantque
afficher ("le troisiéme petit element est "+T(i)),
afficher ("son position est "+j);
attention : peut etre il y a des erreurs en deroulement car je l'ai fait rapidement donc il gaut le corriger.
je vais le riviser prochainement !
cordialement
ce programme n'est pas surement juste mais son idée est juste je croix.
peut etre il y a des erreurs mais a cause de mannque de temps je ne l'ai pas rivisé donc il faut bien le derouler .
mon idée est de trouver combien on a desc entiers differentes dans le tableau : par exemple dans ton exemple on a 6 sont 1 ,2,4,5,7,9.
donc on a besoin d'une fonction qui retire se nombre .
j'utilise un fonction de type boléenne qui retire si l'entier d'une colonne i existe deja entre T(1)EtT(i-1) ou non telque T est un tableau d'entiers.
fonction existe(l: integer,T:tab):boléen ;
debut
i:=1;existe:=vrai;
tantque(i<l) et faire
debut tantque
if T(i)=T(l) then existe:=faux ;
i:=i+1;
fintantque;
utilisant cette fonction on peut ecrire une autre fonction qui calcule enfin le nombre des entiers differentes.
fonction nombres (T:tab):entier;
debut
i:=0; nombres=1;
tantque(i<=N) faire
debuttantque
if existe (i,T)=faux nombres =nombres+1;
i=i+1;
fintantque
fin.
maintenat l'algorithme final
algo exos ;
debut
lire N ;
lire les elements de T;
k:=0;min:=T(1);
h:=nombres(T)
tantque(k<h-3) et (i<N)faire
debuttanque
si T(i)<min alors
debut si
k:=k+1;
j:=i;
finsi
i:=i+1;
fintantque
afficher ("le troisiéme petit element est "+T(i)),
afficher ("son position est "+j);
attention : peut etre il y a des erreurs en deroulement car je l'ai fait rapidement donc il gaut le corriger.
je vais le riviser prochainement !
cordialement
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
9 févr. 2008 à 17:39
9 févr. 2008 à 17:39
bon je ne souvien pas bien de programmation pascal mais je peux te donner l'idée .
ce programme n'est pas surement juste mais son idée est juste je croix.
peut etre il y a des erreurs mais a cause de mannque de temps je ne l'ai pas rivisé donc il faut bien le derouler .
mon idée est de trouver combien on a desc entiers differentes dans le tableau : par exemple dans ton exemple on a 6 sont 1 ,2,4,5,7,9.
donc on a besoin d'une fonction qui retire se nombre .
j'utilise un fonction de type boléenne qui retire si l'entier d'une colonne i existe deja entre T(1)EtT(i-1) ou non telque T est un tableau d'entiers.
fonction existe(l: integer,T:tab):boléen ;
debut
i:=1;existe:=vrai;
tantque(i<l) et faire
debut tantque
if T(i)=T(l) then existe:=faux ;
i:=i+1;
fintantque;
utilisant cette fonction on peut ecrire une autre fonction qui calcule enfin le nombre des entiers differentes.
fonction nombres (T:tab):entier;
debut
i:=0; nombres=1;
tantque(i<=N) faire
debuttantque
if existe (i,T)=faux nombres =nombres+1;
i=i+1;
fintantque
fin.
maintenat l'algorithme final
algo exos ;
debut
lire N ;
lire les elements de T;
k:=0;min:=T(1);
h:=nombres(T)
tantque(k<h-3) et (i<N)faire
debuttanque
si T(i)<min alors
debut si
k:=k+1;
j:=i;
finsi
i:=i+1;
fintantque
afficher ("le troisiéme petit element est "+T(i)),
afficher ("son position est "+j);
attention : peut etre il y a des erreurs en deroulement car je l'ai fait rapidement donc il gaut le corriger.
je vais le riviser prochainement !
cordialement
ce programme n'est pas surement juste mais son idée est juste je croix.
peut etre il y a des erreurs mais a cause de mannque de temps je ne l'ai pas rivisé donc il faut bien le derouler .
mon idée est de trouver combien on a desc entiers differentes dans le tableau : par exemple dans ton exemple on a 6 sont 1 ,2,4,5,7,9.
donc on a besoin d'une fonction qui retire se nombre .
j'utilise un fonction de type boléenne qui retire si l'entier d'une colonne i existe deja entre T(1)EtT(i-1) ou non telque T est un tableau d'entiers.
fonction existe(l: integer,T:tab):boléen ;
debut
i:=1;existe:=vrai;
tantque(i<l) et faire
debut tantque
if T(i)=T(l) then existe:=faux ;
i:=i+1;
fintantque;
utilisant cette fonction on peut ecrire une autre fonction qui calcule enfin le nombre des entiers differentes.
fonction nombres (T:tab):entier;
debut
i:=0; nombres=1;
tantque(i<=N) faire
debuttantque
if existe (i,T)=faux nombres =nombres+1;
i=i+1;
fintantque
fin.
maintenat l'algorithme final
algo exos ;
debut
lire N ;
lire les elements de T;
k:=0;min:=T(1);
h:=nombres(T)
tantque(k<h-3) et (i<N)faire
debuttanque
si T(i)<min alors
debut si
k:=k+1;
j:=i;
finsi
i:=i+1;
fintantque
afficher ("le troisiéme petit element est "+T(i)),
afficher ("son position est "+j);
attention : peut etre il y a des erreurs en deroulement car je l'ai fait rapidement donc il gaut le corriger.
je vais le riviser prochainement !
cordialement
mimi.2008
Messages postés
40
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
27 août 2010
1
9 févr. 2008 à 22:14
9 févr. 2008 à 22:14
oui j'ai compris ton idéé mais désolé c'est pas la bonne reponse en tout cas MERCI;
j'ai une autre idée :
-on va trier le tableau
au cas de notre example cet tableau devient:
1 1 1 2 2 4 4 5 7 9
puis on va eleminer les elements qui se repetent donc le tableau devient:
1 2 4 5 7 9
ensuite , d'apres l'exemple on va chercher la 3iéme element or k=3
donc on va ecrire (t[k])
mais j'ai trouvé du probleme dans l'elemenation.
S.V.P aidez moi !
j'ai une autre idée :
-on va trier le tableau
au cas de notre example cet tableau devient:
1 1 1 2 2 4 4 5 7 9
puis on va eleminer les elements qui se repetent donc le tableau devient:
1 2 4 5 7 9
ensuite , d'apres l'exemple on va chercher la 3iéme element or k=3
donc on va ecrire (t[k])
mais j'ai trouvé du probleme dans l'elemenation.
S.V.P aidez moi !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
9 févr. 2008 à 23:34
9 févr. 2008 à 23:34
Trier un tableau pour récupérer le kième élément plus petit ? Quelle perte de temps algorithmique.
Pourquoi ne pas créér un tableau buffer de taille k.
Ensuite tu parcours une seule fois le tableau (celui contenant par exemple 1 7 2 3 5 58 ). L'élément le plus petit, tu le stockes dans buffer[0], si tu trouves un autre élément petit mais plus grand que buffer[0], alors tu le mets dans buffer[1]. Etc,
En buffer[k], t'auras le kièeme élément petit.
Si tu veux récupérer en plus l'indice, à la place de stocker le nombre tu stockes l'indice dans le tableau.
Cordialement
Pourquoi ne pas créér un tableau buffer de taille k.
Ensuite tu parcours une seule fois le tableau (celui contenant par exemple 1 7 2 3 5 58 ). L'élément le plus petit, tu le stockes dans buffer[0], si tu trouves un autre élément petit mais plus grand que buffer[0], alors tu le mets dans buffer[1]. Etc,
En buffer[k], t'auras le kièeme élément petit.
Si tu veux récupérer en plus l'indice, à la place de stocker le nombre tu stockes l'indice dans le tableau.
Cordialement
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
10 févr. 2008 à 15:08
10 févr. 2008 à 15:08
okey !
regarde bien !
Initialtableau est ton tableau initial.
Test ton tableau apres le tri d'ordre croissant comme tu a fait
on vas créer tableau R qui retient les entiers sans repetition
R(1):=T(1);
i:=2;j:=2;
while (i<=N)
begin
if T(i)<>T(i-1) then
begin if
R(j):=T(i);
j:=j+1;
endif;
i:=i+1;
end;
for i:=1 to j do
begin
writeln(R(i));
end ;
writeln('le k-iéme plus petit entier est'+ R(k)); .......affichage de resultat du k iéme petit élément
pour calculer dans quel colonne existe revenir au premier tableau initial et faire:
i=1;
while(Initialtableau(i)<>R(k))
begin
i:=i+1; .............. affichage de quel colonne apparaitre la premiére occurence de R(k)
end;
writeln('la premiere occurence de R(k)est dans la colonne'+i);
j'espere que j'ai eliminé ton probléme d'elimination
Amicalement et cordialement
regarde bien !
Initialtableau est ton tableau initial.
Test ton tableau apres le tri d'ordre croissant comme tu a fait
on vas créer tableau R qui retient les entiers sans repetition
R(1):=T(1);
i:=2;j:=2;
while (i<=N)
begin
if T(i)<>T(i-1) then
begin if
R(j):=T(i);
j:=j+1;
endif;
i:=i+1;
end;
for i:=1 to j do
begin
writeln(R(i));
end ;
writeln('le k-iéme plus petit entier est'+ R(k)); .......affichage de resultat du k iéme petit élément
pour calculer dans quel colonne existe revenir au premier tableau initial et faire:
i=1;
while(Initialtableau(i)<>R(k))
begin
i:=i+1; .............. affichage de quel colonne apparaitre la premiére occurence de R(k)
end;
writeln('la premiere occurence de R(k)est dans la colonne'+i);
j'espere que j'ai eliminé ton probléme d'elimination
Amicalement et cordialement
mimi.2008
Messages postés
40
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
27 août 2010
1
10 févr. 2008 à 19:25
10 févr. 2008 à 19:25
merci pour ton aide.
j'ai applique ton idée mais ca ne marche pas.
SVP traduise ton aidee en pascal de maniere claire et nette .
j'ai applique ton idée mais ca ne marche pas.
SVP traduise ton aidee en pascal de maniere claire et nette .
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
11 févr. 2008 à 14:48
11 févr. 2008 à 14:48
ou est le probléme ? pourquoi il ne fonctionne pas !
est ce qu'il y a des erreurs dans l'affichage de resultats ?
je pense que l'algorithme deroule de façon qu'il donnes les resultats souhaités .peut etre tu a oublié des petites detailles dans la programmation !ou tu a aml placé le compteur ou une erreur de frappe !
Prend ton premier tableau Initialtableau de taille donnée N par exemple Initialtableau = 5 2 7 2 1 4 9 4 1 1 avec N =10;
créer un nouveau tableau T de méme taille N pour trier Initialtableau on trouve T =1 1 1 2 2 4 4 5 7 9 .
Créer un nouveau tableau R pour mettre les entiers sans répitions :
R[1]=T[1]=1;
donc R = 1;
i:=2;j:=2;
i=2<=10;
T[2]=1=T[1]=1 donc la condition if ici ne fonctionne pas donc i:=i+1 =3;
T[3]=1=T[2]=1 donc la condition if ici ne fonctionne pas donc i:=i+1 =4;
(T[4]=2)<>(T[3]=1) donc il entre dans les instructions de if , il donne R[j]=R[2]:=T[4]=2 donc R[2]:=2 et j:=j+1 donc j:=3 ;i:=i+1 i:=5; R=1 2
T[5]=2=T[4]=2 donc la condition if ici ne fonctionne pas donc i:=i+1 =6;
(T[6]=4)<>(T[5]=2) donc il entre dans les instructions de if , il donne R[j]=R[3]:=T[6]=4 donc R[3]:=4 et j:=j+1 donc j:=4 ;i:=i+1 i:=7; R=1 2 4
T[7]=4=T[6]=4 donc la condition if ici ne fonctionne pas donc i:=i+1 =8;
(T[8]=5)<>(T[7]=4) donc il entre dans les instructions de if , il donne R[j]=R[4]:=T[8]=5 donc R[4]:=5 et j:=j+1 donc j:=5 ;i:=i+1 i:=9; R=1 2 4 5
(T[9]=7)<>(T[8]=5) donc il entre dans les instructions de if , il donne R[j]=R[5]:=T[9]=7 donc R[5]:=7 et j:=j+1 donc j:=6 ;i:=i+1 i:=10; R=1 2 4 5 7
(T[10]=9)<>(T[9]=7) donc il entre dans les instructions de if , il donne R[j]=R[6]:=T[10]=9 donc R[6]:=7 et j:=j+1 donc j:=7 ;i:=i+1 i:=10; R=1 2 4 5 7 9 .
i=11 et 11>10 donc il arréte ici avec j=7 et R=1 2 4 5 7 9 .
la taille de tableau R est j-1 est non j ....hmmmm donc change la dans l'algorithme c'est a dire :
for i:=1 to (j-1) do ............j-1 est non j
begin
writeln(R[i]);
end ;
il affiche R =1 2 4 5 7 9
et quand il affiche le k-iéme plus petit element avec k=3 ;il va acceder a la cellule R[3];ici R[3]=4 ;
writeln('le k-iéme plus petit entier est'+ R(k)); il affiche 4 .
pour son position de premiere apparition il va au premier tableau Initialtableau = 5 2 7 2 1 4 9 4 1 1
il commence i:=1 ;
(Initialtableau[i]=Initialtableau[1]=5)<>4 donc i:=i+1 i:=1+1=2 ;i:=2;
(Initialtableau[i]=Initialtableau[2]=2)<>4 donc i:=i+1 i:=2+1=3 ;i:=3;
(Initialtableau[i]=Initialtableau[3]=7)<>4 donc i:=i+1 i:=3+1=4 ;i:=4;
(Initialtableau[i]=Initialtableau[4]=2)<>4 donc i:=i+1 i:=4+1=5 ;i:=5;
(Initialtableau[i]=Initialtableau[5]=1)<>4 donc i:=i+1 i:=5+1=6;i:=6;
(Initialtableau[i]=Initialtableau[6]=4)=4 donc il arréte ici avec i=6 dans la position est la sixiéme (i-éme);
il affiche aprés : la premiere occurence de R(k)est dans la colonne 6
c'est ça le deroulement de l'algorithme qui verifie qu'il est belle et bien juste ....donc a toi de l'implementer c'est tout .
Attention : dans la programmation il y ades conditions et des testes a faire par exemple dans ton exemple il faut signaler que k doit existe par exemple pour ton exemple pour k>6 il n'existe pas un resultat cad si tu dire le huitiéme petit element et on a sauf six entiers dans Initialtableau qu'elles se repétent ou par exemple si tu demande un k plus grand que la taille de tableau ; donc il faut bien connaitre le nombre de repitions d'abord et apres faire des conditions selon k ... ou bien ..... ou bien ....
Amicalement et cordialement .
est ce qu'il y a des erreurs dans l'affichage de resultats ?
je pense que l'algorithme deroule de façon qu'il donnes les resultats souhaités .peut etre tu a oublié des petites detailles dans la programmation !ou tu a aml placé le compteur ou une erreur de frappe !
Prend ton premier tableau Initialtableau de taille donnée N par exemple Initialtableau = 5 2 7 2 1 4 9 4 1 1 avec N =10;
créer un nouveau tableau T de méme taille N pour trier Initialtableau on trouve T =1 1 1 2 2 4 4 5 7 9 .
Créer un nouveau tableau R pour mettre les entiers sans répitions :
R[1]=T[1]=1;
donc R = 1;
i:=2;j:=2;
i=2<=10;
T[2]=1=T[1]=1 donc la condition if ici ne fonctionne pas donc i:=i+1 =3;
T[3]=1=T[2]=1 donc la condition if ici ne fonctionne pas donc i:=i+1 =4;
(T[4]=2)<>(T[3]=1) donc il entre dans les instructions de if , il donne R[j]=R[2]:=T[4]=2 donc R[2]:=2 et j:=j+1 donc j:=3 ;i:=i+1 i:=5; R=1 2
T[5]=2=T[4]=2 donc la condition if ici ne fonctionne pas donc i:=i+1 =6;
(T[6]=4)<>(T[5]=2) donc il entre dans les instructions de if , il donne R[j]=R[3]:=T[6]=4 donc R[3]:=4 et j:=j+1 donc j:=4 ;i:=i+1 i:=7; R=1 2 4
T[7]=4=T[6]=4 donc la condition if ici ne fonctionne pas donc i:=i+1 =8;
(T[8]=5)<>(T[7]=4) donc il entre dans les instructions de if , il donne R[j]=R[4]:=T[8]=5 donc R[4]:=5 et j:=j+1 donc j:=5 ;i:=i+1 i:=9; R=1 2 4 5
(T[9]=7)<>(T[8]=5) donc il entre dans les instructions de if , il donne R[j]=R[5]:=T[9]=7 donc R[5]:=7 et j:=j+1 donc j:=6 ;i:=i+1 i:=10; R=1 2 4 5 7
(T[10]=9)<>(T[9]=7) donc il entre dans les instructions de if , il donne R[j]=R[6]:=T[10]=9 donc R[6]:=7 et j:=j+1 donc j:=7 ;i:=i+1 i:=10; R=1 2 4 5 7 9 .
i=11 et 11>10 donc il arréte ici avec j=7 et R=1 2 4 5 7 9 .
la taille de tableau R est j-1 est non j ....hmmmm donc change la dans l'algorithme c'est a dire :
for i:=1 to (j-1) do ............j-1 est non j
begin
writeln(R[i]);
end ;
il affiche R =1 2 4 5 7 9
et quand il affiche le k-iéme plus petit element avec k=3 ;il va acceder a la cellule R[3];ici R[3]=4 ;
writeln('le k-iéme plus petit entier est'+ R(k)); il affiche 4 .
pour son position de premiere apparition il va au premier tableau Initialtableau = 5 2 7 2 1 4 9 4 1 1
il commence i:=1 ;
(Initialtableau[i]=Initialtableau[1]=5)<>4 donc i:=i+1 i:=1+1=2 ;i:=2;
(Initialtableau[i]=Initialtableau[2]=2)<>4 donc i:=i+1 i:=2+1=3 ;i:=3;
(Initialtableau[i]=Initialtableau[3]=7)<>4 donc i:=i+1 i:=3+1=4 ;i:=4;
(Initialtableau[i]=Initialtableau[4]=2)<>4 donc i:=i+1 i:=4+1=5 ;i:=5;
(Initialtableau[i]=Initialtableau[5]=1)<>4 donc i:=i+1 i:=5+1=6;i:=6;
(Initialtableau[i]=Initialtableau[6]=4)=4 donc il arréte ici avec i=6 dans la position est la sixiéme (i-éme);
il affiche aprés : la premiere occurence de R(k)est dans la colonne 6
c'est ça le deroulement de l'algorithme qui verifie qu'il est belle et bien juste ....donc a toi de l'implementer c'est tout .
Attention : dans la programmation il y ades conditions et des testes a faire par exemple dans ton exemple il faut signaler que k doit existe par exemple pour ton exemple pour k>6 il n'existe pas un resultat cad si tu dire le huitiéme petit element et on a sauf six entiers dans Initialtableau qu'elles se repétent ou par exemple si tu demande un k plus grand que la taille de tableau ; donc il faut bien connaitre le nombre de repitions d'abord et apres faire des conditions selon k ... ou bien ..... ou bien ....
Amicalement et cordialement .
mimi.2008
Messages postés
40
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
27 août 2010
1
11 févr. 2008 à 20:36
11 févr. 2008 à 20:36
SVP j'ai besoin une resolution en pascal parce que je rien compris
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
12 févr. 2008 à 16:09
12 févr. 2008 à 16:09
Okey !
program kiemin;
uses crt;
var tab: array [1..100] of integer; ...of ou OF ou Of je ne me rappéle pas bien
tab1 : array [1..100] of integer;
tab2 : array [1..100] of integer;
N, k,i,j,c:integer ;
BEGIN
readln (N); ...........la taille du tableau ;
lire (tab);..........procedure qui lit les element des tab ;
afficher (tab)........procedure qui affiche les element des tab ;
readln (k);
for i:=1 to N do
begin
tab1[i]:=tab[i]; ..........copier les elements de tab dans le tableau tab1
end ;
trier (tab1)..........................procedure de tri de tab1 par ordre croissant
afficher (tab1)
tab2[1]:=tab1[1];
i:=2;j:=2;
while (i<=N)
begin
if tab1[i]<>tab1[i-1] then
begin
tab2[j]:=tab1[i]; .........ici nous remplissons le tableau tab2 par les entiers de tab1 sans repition
j:=j+1;
endif;
i:=i+1;
end;
afficher (tab2); ................procedure qui affiche les element des tab 2
writeln('le k-iéme plus petit entier est'+ tab2[k]);
c:=1;
while(tab1[i]<>tab2[k]))
begin
c:=c+1; .............. affichage de quel colonne apparaitre la premiére occurence de tab2[k];
end;
writeln('la premiére apparition de'+k+'iéme entier minimal est dans la colonne'+c);
END;
est ce que c'est claire comme ça ? cas de problémes dis moi !
cordialement et amicalement .
program kiemin;
uses crt;
var tab: array [1..100] of integer; ...of ou OF ou Of je ne me rappéle pas bien
tab1 : array [1..100] of integer;
tab2 : array [1..100] of integer;
N, k,i,j,c:integer ;
BEGIN
readln (N); ...........la taille du tableau ;
lire (tab);..........procedure qui lit les element des tab ;
afficher (tab)........procedure qui affiche les element des tab ;
readln (k);
for i:=1 to N do
begin
tab1[i]:=tab[i]; ..........copier les elements de tab dans le tableau tab1
end ;
trier (tab1)..........................procedure de tri de tab1 par ordre croissant
afficher (tab1)
tab2[1]:=tab1[1];
i:=2;j:=2;
while (i<=N)
begin
if tab1[i]<>tab1[i-1] then
begin
tab2[j]:=tab1[i]; .........ici nous remplissons le tableau tab2 par les entiers de tab1 sans repition
j:=j+1;
endif;
i:=i+1;
end;
afficher (tab2); ................procedure qui affiche les element des tab 2
writeln('le k-iéme plus petit entier est'+ tab2[k]);
c:=1;
while(tab1[i]<>tab2[k]))
begin
c:=c+1; .............. affichage de quel colonne apparaitre la premiére occurence de tab2[k];
end;
writeln('la premiére apparition de'+k+'iéme entier minimal est dans la colonne'+c);
END;
est ce que c'est claire comme ça ? cas de problémes dis moi !
cordialement et amicalement .
Comme tu es une débutante du pascal qui ets quand même un langage très simple, je te conseille d'essayer de ton côté et de ne pas employer le copier coller.
En effet, il te suffit de faire une variable qui va se déplacer dans ton tableau, de lire la valeur qu'elle contient. Si elle est plus petite que celle que tu as en mémoire tu remplace celle que tu as par celle ci sinon tu regardes dans la cellule d'apres ^^ jusqu'au Nième nombre de ton tableau.
En effet, il te suffit de faire une variable qui va se déplacer dans ton tableau, de lire la valeur qu'elle contient. Si elle est plus petite que celle que tu as en mémoire tu remplace celle que tu as par celle ci sinon tu regardes dans la cellule d'apres ^^ jusqu'au Nième nombre de ton tableau.
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
13 févr. 2008 à 11:45
13 févr. 2008 à 11:45
c:=1;
while(tab1[i]<>tab2[k])).....................................erreur.
begin
c:=c+1; .............. affichage de quel colonne apparaitre la premiére occurence de tab2[k];
end;
writeln('la premiére apparition de'+k+'iéme entier minimal est dans la colonne'+c);
désolé ici j'aifait un erruer
remplacer par while(tab[c]<>tab2[k]))......c-a-d tab a la place de tab1 et c a ala place de i
cordialement et amicalement.
while(tab1[i]<>tab2[k])).....................................erreur.
begin
c:=c+1; .............. affichage de quel colonne apparaitre la premiére occurence de tab2[k];
end;
writeln('la premiére apparition de'+k+'iéme entier minimal est dans la colonne'+c);
désolé ici j'aifait un erruer
remplacer par while(tab[c]<>tab2[k]))......c-a-d tab a la place de tab1 et c a ala place de i
cordialement et amicalement.
mimi.2008
Messages postés
40
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
27 août 2010
1
17 févr. 2008 à 16:17
17 févr. 2008 à 16:17
MERCI ballackacem pour votre aide;
ET pour pepe prend votre reponse et mouiller bien apres le boir:parce que je n'utilise pas le copie coller.
ET pour pepe prend votre reponse et mouiller bien apres le boir:parce que je n'utilise pas le copie coller.
ballackacem
Messages postés
58
Date d'inscription
mardi 26 juin 2007
Statut
Membre
Dernière intervention
23 juin 2009
2
18 févr. 2008 à 11:41
18 févr. 2008 à 11:41
de rien mimi.2008 .pas de souci ! et envoyez a chaque fois ou tu es besoin d'aide !
Cordialement et amicalement !
Cordialement et amicalement !