الإجابة على كل تساؤلاكم في الإعلامية(algorithmique)

chadchoud

عضو مميز
إنضم
25 مارس 2011
المشاركات
622
مستوى التفاعل
244
  • السلام عليكم و رحمة الله و بركاته
  • لكل تلاميذ البكالوريا ، إن شاء الله في هذا الموضوع سأجيب على كل تساؤلاتكم في مادة الخورزميات.
  • ملاحظة هامة:
  • لا أجوبة لمن لا يقوم بأي محاولة .
  • فقط عند محاولتك في حل التمرين سنساعدك في هذا الموضوع إن شاء الله
  • في إنتضار تساؤلاتكم على بركة الله
 

princed

عضو جديد
إنضم
10 أفريل 2015
المشاركات
6
مستوى التفاعل
2

!!!! Problem dans le trie rapid :/ non executable

procedure tri (t:tab; ;var d,g:integer );
var aux,m,l:integer ;

begin

if d-g>0 then
begin

l:=g+1 ; m:=d ;
repeat
while (l<m) and (t[g]>t[l]) do

begin
l:=l+1 ;
end;
while (l<=m) and (t[g]<=t[m]) do
begin
m:=m-1 ;
end;
if (l<m) then
begin
aux:=t[l] ;
t[l]:=t[m] ;
t[m]:=aux ;

end;

until (m<l) ;
aux:=t[g] ;
t[g]:=t[m] ;
t[m]:=aux ;

tri (g,m-1) ;
tri (m+1,d) ;

end;

end;​
 

marwein

كبار الشخصيات
إنضم
19 جانفي 2012
المشاركات
2.797
مستوى التفاعل
2.448
Reposte ton code en utilisant la balise
Code stp Le detail de son utilisation est ici

En plus evite d'utiliser des variables n m k l g f t , va comprendre ce que tu veux dire, comprendre ton programme deviens plus compliqué que de comprendre le problème

Utilise des vrai variable genre bornesup borneinf compteur (pour les compteurs par convention c i, j ,k mais ne vas pas plus loin car au dela de 3 boucles imbriquées ca devient n'importe quoi) resultat, etc ... Avec desvariables comme tel on dirais que tu nous parle avec ton programme et forcement on verra plus facilement ce que tu veux faire

En plus dans le cas de probleme d'execution c plus facile de demander de l'aide a des personnes qui ne svent pas du tt le probleme et a la lecture ils pourront te dire ca bloque a tel ou tel point, mais si ´ecrit en chinois alors la c compliqué
 
التعديل الأخير:

marwein

كبار الشخصيات
إنضم
19 جانفي 2012
المشاركات
2.797
مستوى التفاعل
2.448
كود:
program        trirapide;
uses        crt;

type
    tab = array [1..100] of integer;

var
    t : tab;
    n : integer;

procedure remplissage (var t : tab ; n : integer );
var
    i:integer ;
begin
    repeat
        writeln ('donner le taille de tableau ');
        readln(n);
    until (n > 0); {t'aura une erreur si n depasse 100, il y aura un depassement}
    for i := 1 to n do
    begin
        writeln ('t[',i,']');
        readln(t);{readln (t[i]) il faut remplire la case numero i sinon tu n'enregistre rien}
    end;
end ;

procedure tri_rapid (var t : tab ; pivot : integer ; n : integer);
var
    aux, sup, inf : integer;
begin
    if n - pivot > 0 then
    begin
        inf := pivot + 1;
        sup := n;
        repeat
            while (inf < sup) and (t[pivot] > t[inf]) do
                inf := inf + 1;
            while (inf <= sup) and (t[pivot] <= t[sup]) do
                sup := sup - 1;
            if (inf < sup) then
            begin
                aux := t[inf];
                t[inf] := t[sup];
                t[sup] := aux;
            end;
        until (sup<inf);
    aux := t[pivot];
    t[pivot] := t[sup];
    t[sup] := aux;
    tri_rapid (t, pivot, sup-1);
    tri_rapid (t, sup+1, n);
    end;
end;

procedure affichage (t : tab ; n : integer);
var
    i : integer;
begin
    for i := 1 to n do
        writeln(t); {c'est quoi ca ?? c'est où ton indice d'affichage}
                    {writeln(t[i]); pour afficher les valeurs de chaque case}
end;

begin
    remplissage (t, n);
    tri_rapid (t, 1, n);
    affichage (t, n);
end {il te manque le point de la fin pour dire que ton programme est fini}
corrige un peu ces erreurs un peu basique avant tout, et c'est normale que ca ne fonctionne pas car tu passe ton en passage par valeur dans ta procedure remplissage, ce qui fait que apres ta sortie de cette procedure n s'efface et donc tu n'as plus la taille du tableau

il faudra la passer par adresse et donc ajouter var juste devant ton n dans les param de remplissage

https://ideone.com/Uu7ZTz
t'as les entree clavier et le resultat d'affichage en bas de la page
 

dalittos

عضو جديد
إنضم
27 أكتوبر 2013
المشاركات
6
مستوى التفاعل
3
bonjour
svp comment afficher les elements d'un tableau en pascal sur la meme ligne
 

dalittos

عضو جديد
إنضم
27 أكتوبر 2013
المشاركات
6
مستوى التفاعل
3
merci pour la reponse marwein mai est ce que vous pouvez m'aider a resoudre le probleme d'affichage sur la meme ligne avec ce code :

program tableau;
uses wincrt;

var i,n : integer ;
tab : array[1..50]of integer;

begin
write ( ' donner un entier n : ' );
read (n);
for i:=1 to n do
begin
write('donner lelement n° ',i,' : ');

read(tab) ;
end;

end.
 

marwein

كبار الشخصيات
إنضم
19 جانفي 2012
المشاركات
2.797
مستوى التفاعل
2.448
merci pour la reponse marwein mai est ce que vous pouvez m'aider a resoudre le probleme d'affichage sur la meme ligne avec ce code :

program tableau;
uses wincrt;

var i,n : integer ;
tab : array[1..50]of integer;

begin
write ( ' donner un entier n : ' );
read (n);
for i:=1 to n do
begin
write('donner lelement n° ',i,' : ');

read(tab) ;
end;

end.
1- oui on est la pour aider
2- stp utilise la balise code pour mettre ton travaille
كود:
program tableau;
uses wincrt;

var i,n : integer ;
    tab : array[1..50]of integer;

begin
   write ( ' donner un entier n : ' );
   read (n);
      for i:=1 to n do
        begin
        write('donner lelement n° ',i,' : ');

        read(tab[I]) ;
        end;
     
end.
3- explique un peu ce que tu veux precisement , si g bien compris tu veux que tes Read se font et s'affichent sur la meme ligne, c bien ca ? Ou tu veux ajouter l'affichage apres qui sera sur une seule ligne ?
 

marwein

كبار الشخصيات
إنضم
19 جانفي 2012
المشاركات
2.797
مستوى التفاعل
2.448
Et a propos de ton tableau t'as definit un tableau de taille 50 max or que quand tu demande n tu ne fait aucun controle ladessus, ce qui fait que je pourrai te donner n 200 ou -30 et la tu l'accepte mais ca posera probleme car tu n'as pas reservé assez d'espace memoire

Et donc tab[200] n'existe pas et tab[-30] encore moins

Tu dois donc commencer par recrifier ca avant tout
 
أعلى