Exercice d 'algorithme

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Exercice d 'algorithme

Message par tima.ait le Mer Oct 02, 2013 4:32 pm

Ecrire un algorithme qui après la saisie d'un nombre entier positif :

Détermine le chiffre le plus grand
Détermine le chiffre le plus petit
calcul le nombre de chiffres de ce nombre 
calcule la moyenne des chiffres pairs
calcule la moyenne des chiffres impairs
Affiche si c'est un palindrome ou non 


Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy pliz



tima.ait
 
 

Nombre de messages : 13
Date d'inscription : 29/04/2013
Féminin

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Exercice d 'algorithme

Message par Dragnucs le Mer Oct 02, 2013 7:42 pm

Je peut très bien te donner la solution, ici maintenant, mais je veux que tu essaye d'abord de résoudre le problème par toi même.

Si tu poste une correction que tu a fait toi même, je te donnerais la correction, promis.

PS: Tu sais utilise au le type tableau ? Car sa facilite grandement le problème. En tous cas en C, une chaine de caractère est un tableau, donc on a pas trop de problème.

Astuce: Même si c'est un nombre, considère que c'est une chaine ou un tableau de nombre.



Dragnucs
 
 

Nombre de messages : 6
Date d'inscription : 14/09/2013
Féminin

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Exercice d 'algorithme

Message par tima.ait le Mer Oct 02, 2013 9:39 pm

variable t[i] : chaine
variable n,moy, : entier
debut 
ecrire("entrer le nombre ");
lire (n);
n=t[i];
pour (t[i]=0 a t[i]=n)
si ( (t[0]<t[1])&&(t[1]<t[2])&&(t[2]<t[3])&&(t[3]<t[4]))alors 
ecrire("le nombre le plus grand est : ",t[4]);
sinon
ecrire ("le nombre le plus petit est :",t[0]);
finsi
pour(t[i]=0 a t[i]=n)faire pas 1
moy=t[0]+t[1]+t[2]+t[3]+t[4]/4;
si(moy\2 = = 0) alors
ecrire("le moyennede nombre pair est ",moy);
sinon
ecrire("le moyennede nombre impair est ",moy);
finsi
finpour
finpour 
fin

Rolling Eyes Rolling Eyes Rolling Eyes Rolling Eyes Rolling Eyes



tima.ait
 
 

Nombre de messages : 13
Date d'inscription : 29/04/2013
Féminin

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Exercice d 'algorithme

Message par tima.ait le Jeu Oct 03, 2013 4:09 pm

vaiable n , x ,max, min,R, cpt , s : entier
debut
ecrire("entrer un nombre entier :");
lire(n);
cpt=0;
max=-1;
min=10;
tntque(n<>0)faire pas 1
R=n\x;
n=n/10;
si(R>max)alore max=R;
fintantque
ecrire("le max des valeur est :",max);
tantque(n<>0)faire pas 1
r=n\x;
n=n/10;
si(R<min)alors min=R;
fintantque
ecrire("le min est ",min);
tantque(n<>0)faire pas 1
s=s+x;
ecrire("le nombre des chifre est :",s); 
fintantque
tantque(n<>0)faire pas 1
r=n\x;
n=n/10;
si(R\2==0)alore 
cpt=cpt+1;
ecrire ("le nombre des valeurs qui pairs est");
finsi 
fintantque
cpt=0;
tantque(n<>0)faire pas 1
r=n\x;
n=n/10;
si(R\2<>0)alore 
cpt=cpt+1;
ecrire ("le nombre des valeurs qui impairs est");
finsi 
fintantque



tima.ait
 
 

Nombre de messages : 13
Date d'inscription : 29/04/2013
Féminin

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Exercice d 'algorithme

Message par Dragnucs le Jeu Oct 03, 2013 11:18 pm

السلام عليكم

راك قربتي نالجواب فالمحاولة التانية والاكن راه خاصك ترد البال معى طان كو حيت بالخدمة الي داير نتا را معمر البرنامج مايخرج من لا بوكل. علاش ؟ حيت نتا كاتقولو دير هده الشي ماحد العدد مبدل على صفر ولكن هداك العدد مكي تبدلشي. إداََ تما حصلتي.

وريني كفاش الأستاد عطاكم لا سانطاكس ديال طان كو حيت جاني دكشي فشكال عندك.

المهم. هنا لقيتلك واحد الطريقة مافيها لاطاباو لا شين لا والو غير عدد عادي وصافي.

J'ai trouver une méthode simple est efficace sans utiliser de tableau, ni même transformer le nombre en chaine. Je pensais dans cette direction pour essayer de déterminer si c'est un palindrome, mais appris, j'ai trouver une meilleurs solution.

Une explication des opération pour déterminer chaque chiffre :

Code:
2142423 / 10^1 =  214242 + 3  |       3 / 10^0 = 3 +      0
2142423 / 10^2 =  21424 + 23  |      23 / 10^1 = 2 +      3
2142423 / 10^3 =  2142 + 423  |     423 / 10^2 = 4 +     23
2142423 / 10^4 =  214 + 2423  |    2423 / 10^3 = 2 +    432
2142423 / 10^5 =  21 + 42423  |   42423 / 10^4 = 4 +   2423
2142423 / 10^6 =  2 + 142423  |  142423 / 10^5 = 1 +  42423
2142423 / 10^7 =     2142423  | 2142423 / 10^6 = 2 + 142423
La puissance de 10 nous sert également pour calculer le nombre de chiffre du nombre. On arrête la boucle quand le quotion de la division du nombre sur 10^i est égale à 0.

Pour le chiffre le plus grand et le plus petit, la technique que tu as utiliser dans ta deuxième proposition peut être juste, mais il aurais fallu réajuster les variable min et max parceque dans tous les cas, les chiffres de 0 à 9 seront inférieur à 10 et suppérieur à -1 et sa ne t'avancera pas. Ma proposition te permet de résoudre le problème de détection des valeurs min et max non seulement dans cette exercice, mais partout ailleurs.

La question de la parité est assez simple. Cependant il ne fallait pas calculer le nombre des chiffre pair ou impaire, mais leurs moyenne. Leurs moyenne est égale à leurs somme divisé par le nombre. Leur nombre est leur somme sont calculé à l'intérieur de la boucle. La division est faite seulement après la fin de la boucle.

Pour le palindrome, il suffit de comparais le chiffre i avec le chiffre longeur-i qui lui correspondant.
Exemple:
Code:
Longeur = l = 8
      i = L'indice du chiffre à comapré. La technique reprend le concept
   du tableau, mais sans utilisé de tableau

[ x | i | x | x | x | x | x |l-i| x ]
  0   1   2   3   4   5   6   7   8
Code:
Variable nbr, nbr_act, max, min, longeur, moy_pair, moy_impair, nbr_moy_pair, nbr_moy_impair, i : Entier
Variable est_palindrome : Chaine

Début
    Ecrire ("Entrez un nombre entier positif: ");
    Lire (nbr);

    i = 0
    TantQue (nbr / (10^i)) > 0
        nbr_act = ( nbr % (10^i) ) / ( 10^(i-1) );
        max = nbr_act;
        min = nbr_act;

        Si nbr_act > max Alors
            max = nbr_act;
        FinSi
        Si nbr_act < min Alors
            min = nbr_act;
        FinSi

        Si nbr_act % 2 == 0 alors
            moy_paire    = moy_pair + nbr_act;
            nbr_moy_pair = nbr_moy_pair + 1;
        Sinon
            moy_impair     = moy_impair + nbr_act;
            nbr_moy_impair = nbr_moy_impair + 1;
        FinSi
        i = i + 1;
    FinTantQue

    longeur = i;
    moy_paire   = moy_pair   / nbr_moy_pair;
    moy_impaire = moy_impair / nbr_moy_impair;

    est_palindrome = "oui";
    Pour i de 1 à longeur
        Si ( nbr % (10^i) ) / ( 10^(i-1) ) <> ( nbr % (10^(longeur-i)) ) / ( 10^(longeur-i-1) ) Alors
            est_palindrome = "non";
        FinSi
    FinPour

    Ecrire ("Le chiffre le plus grand est : ", max)
    Ecrire ("Le chiffre le plus petit est : ", min)
    Ecrire ("Le nombre de chiffres est : ", longeur)
    Ecrire ("La moyenne des chiffres pairs est : ", moy_pair)
    Ecrire ("La moyenne des chiffres impairs est : ", moy_impair)
    Ecrire ("Es-ce un palindrome ? ", est_palindrome)
Fin
Si tu as des questions ou tu n'as pas compris quelque chose, n'hésite pas.



Dragnucs
 
 

Nombre de messages : 6
Date d'inscription : 14/09/2013
Féminin

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum