Inscription / Connexion Nouveau Sujet
Niveau autre
Partager :

Algorithme

Posté par
Yassel998
10-10-18 à 23:10

Bonsoir,

J'ai cette exercice qui je n'arrive pas à trouvèe sa solution.

Exercice:

Ecrire un algorithme qui lit n réels et les classifie dans un ordre décroissant en indiquant le nombre total des réels qui se répétent.

Ca ce que j'ai fait,

Variable : i,j,n,pos :entier
                      temp :rèel
Tableaux. : T[ ]

Début
Ecrire ("donner le nombre des rèels qui vous voulez saissie")
Lire(n)
Redim (T[n])
Pour i de 0 à n-1
Ecrire("donner un rèel")
Lire(T[n])
Finpour
Pour i de 0 à n-2
Pos<--i
Pour j de i+1 à n-1
Si T[pos] <T[j]
Pos<--j
Finsi
Finpour
temp<--T[i]
T[i]<--T[pos]
T[pos]<--temp
Finpour

Et merci d'avance

Posté par
verdurin
re : Algorithme 10-10-18 à 23:49

Bonsoir,
une chose me frappe en lisant ton algorithme : il n'y a pas de réponse à la question posée.

Posté par Profil Ramanujanre : Algorithme 11-10-18 à 00:28

Il est incompréhensible votre algorithme.

Posté par
cocolaricotte
re : Algorithme 11-10-18 à 00:38

Avant de juger cet algoritlhme conseillons à Yassel998 de le tester sur 4 valeurs saisies comme : 7 ,  3 , 2 , 8

Après cet algo que contient le tableau censé contenir les valeurs bien ordonnées.

Posté par
cocolaricotte
re : Algorithme 11-10-18 à 00:40

Un algo cela se vérifie avec des valeurs dont on connaît le résultat.

Cela ne veut pas dire qu'il marchera dans tous les cas mais cela permet d'éliminer des algos faux.

Posté par
cocolaricotte
re : Algorithme 11-10-18 à 00:44

Dans le cas présent on pourrait tenter aussi :  6 , 3 , 7 , 3

Posté par
cocolaricotte
re : Algorithme 11-10-18 à 00:56

Ou 1 ;  8 ; 3 ; 8

Posté par
verdurin
re : Algorithme 11-10-18 à 01:23

Salut Ramanujan
Il n'est pas vraiment incompréhensible.
C'est un tri à bulle.

En le présentant un peu mieux ( les commentaires sont introduits par # et sont en bleu)

Variable : i,j,n,pos :entier
                      temp :rèel
Tableaux. : T[ ]

Début
  Ecrire ("donner le nombre des rèels qui vous voulez saissie")
  Lire(n)
     # on initialise le tableau
  Redim (T[n]) 
  Pour i de 0 à n-1
    Ecrire("donner un rèel")
    Lire(T[n]) #faute de frappe,il faut lire T[i]
  Finpour
  # T est lu
  # on commence le traitement du tableau
  Pour i de 0 à n-2
    Pos<--i # pos sera l'indice du plus grand élément du tableau restant
    Pour j de i+1 à n-1
      Si T[pos] <T[j]
        Pos<--j
      Finsi      
    Finpour
    # maintenant pos est l'indice du plus grand élément entre i et n-1
    # on échange les valeurs de T[i] et T[pos]
    temp<--T[i]
    T[i]<--T[pos]
    T[pos]<--temp
    # fin de l'échange
  Finpour
  # le tableau T est trié dans l'ordre décroissant, au sens large
Fin 

Posté par
mathafou Moderateur
re : Algorithme 11-10-18 à 11:26

Bonjour,

il manque dans ces commentaires ce qui fait le principe même de cette méthode de tri

...
Pour i de 0 à n-2
# ici le sous tableau d'indices 0 à i est trié (invariant de boucle)
Pos<--i # pos sera l'indice du plus grand élément du tableau restant
...

Posté par
Yassel998
re : Algorithme 11-10-18 à 13:55

Merci à tous,pour  indiquation des nombre stotal des réels qui se répétent,est ce que on peut considèrer ca comme um solution,
Je déclare une autre variable (Nr),j'affectu au début Nr<-- 0  et dans la boucle intern Pour je mets
Si T[i]=T[j]
Nr<--Nr+1
Merci d'avance

Posté par
mathafou Moderateur
re : Algorithme 11-10-18 à 14:17

ça ne marchera pas.
T[i] est le premier nombre de la partie non triée du tableau
prends un exemple, et tu verras ...

1 ; 1 ; 1 ; 1 i = 0, T[i] = 1, ils sont tous égaux à 1 donc Nr vaudra 3 (j de 1 à 3)
pos = 0 car aucun n'est >, on échange donc l'élément 0 avec lui-même
1; 1; 1 ; 1 en rouge la partie triée i = 1, idem on ajoute 2 à Nr qui vaut donc 5
pos = 1, on échange cet élément avec lui-même
1 ; 1 ; 1 ; 1 i = 2 on ajoute 1 à Nr qui vaut donc 6
pos = 2 on échange donc cet élément avec lui-même
1 ; 1 ; 1 ; 1
c'est fini (pour i de 0 à n-2 = 2)
le dernier élément est trié "par défaut" (puisqu'il est ≤ à tous ceux déja triés)

à la fin on a donc Nr = 6 !!

Posté par
Yassel998
re : Algorithme 11-10-18 à 14:25

Oui t'as raison ,merci beaucoup pour l'explication,je verrai si je peux trouver une autre solution.

Posté par
flight
re : Algorithme 11-10-18 à 19:43

salut , une propositon sous excel

Sub classement()
t = Array(120, 5, 8, 3, 17, 2, 11, 5, 8, 6, 1, 21, 17)
For i = 0 To UBound(t) - 1
  For j = i + 1 To UBound(t)
    If t(i) > t(j) Then
      a = t(i)
      b = t(j)
      t(j) = a
      t(i) = b
    End If
   Next
  Next
For k = UBound(t) To 0 Step -1  'ordre decroissant
z = z & " " & t(k)
Next
MsgBox z 'c'est classé et cela retourne --> 120,21,17,17,11,8,8,6,5,5,3,2,1
'2 ieme partie:
'cration d 'un tableau ne contenant pas de repetitions qui servira à denombrer les termes se repetants:
t = Array(120, 5, 8, 3, 17, 2, 11, 5, 8, 6, 1, 21, 17)
For i = 0 To UBound(t) - 1
  For j = i + 1 To UBound(t)
    If t(i) = t(j) Then
     t(j) = ""
     End If
Next
Next

For k = 0 To UBound(t)
If t(k) <> "" Then
  w = w & " " & t(k)
End If
Next
MsgBox w

s = Split(w, " ")
t = Array(120, 5, 8, 3, 17, 2, 11, 5, 8, 6, 1, 21, 17)
For j = 1 To UBound(s)
n = 0
For h = 0 To UBound(t)
  If Val(s(j)) = Val(t(h)) Then
   n = n + 1
  End If
Next
If n > 1 Then
repet = repet + 1
End If
Next
MsgBox repet '--> donne 3 nombres qui se repetent
End Sub

Posté par
mathafou Moderateur
re : Algorithme 11-10-18 à 19:55

bof ...
pourquoi créer deux tableaux ??
dans l'algo de Yassel998, au moment où on met un élément dans la partie triée du tableau (et à ce moment) on regarde juste s'il y est déja

une petite astuce supplémentaire est encore nécessaire à ça
sinon avec 1;1;1;4;4;5 il va dire 3 (deux répétitions du 1 et une du 4)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1674 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !