En gros, avec ce prgm, si je vous donne une liste de nombres aussi longue soit elle, du genre :
[89 56 84 743 645 46 74 85 4 56 71 509 58 674 45 12 94 98 46 3 234]
ou encore :
[01010101100011000110010101010110101010101010]
Avec la clef de vérification que je vous donne, le prgm pourra corriger pour vous une erreur de recopiage.
On peut aussi adapter le prgm pour qu'il fonctionne avec des chaînes...
Entrez dans L1 la liste que vous voulez vérifier ou don vous voulez avoir la clef (composée de deux nombres).
Si il y a une erreur elle sera corrigée toute seule et la nouvelle valeur affichée.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 16 Déc 2014, 22:58
Intéressant.
(Comment gérer une erreur dans le code de correction ? Le code lui même est transmis avec le message dans les applications de communication.)
Suggestions d'optimisation et autre.
Je veux calculer la somme pondérée sans boucle.
Je préfère les menus aux invités bien que toi tu en mettes partout depuis toujours.
Je préfère quelques alternatives plutôt que des Stop. Return plutôt que Stop permet de revenir à un programme parent s'il y en a un.
tu utilises ces stop mais cela ne te permet pas spécialement de placer quelque chose stratégiquement sur la dernière ligne pour affichage, or je ne vois pas d'autre intérêt.
Je pense utile d'afficher la position de l'erreur. Afficher la liste est faisable aussi.
Code
somme(L1suite(N,N,1,dim(L1->R // simple suggestion facultative
// ou pour Mathprint : Sigma(NL1(N),N,1,dim(L1->R
:somme(L1->S
:Menu("","CLE",1,"VERIF",2 // simplement ma préférence
:Lbl 1
:Disp S,R
:Return
:Lbl 2
:Prompt A,B
:If S-A ou B-R
:Then
:Disp "ERREUR"
:S-A->S
:R-B->R
:L1(R/S)-S->L1(R/S)
:Disp R/S
:L1(R/S // j'omets le End pour profiter de la dernière ligne
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Mar 16 Déc 2014, 23:05
"une erreur dans le code de correction"
C'était la question existentielle de trop. Le temps va s'arrêter et l'univers va s’effondrer sur lui même. C'EST LA FIN LES MECS ! ONT VA TOUS MOURIR !!
Oui bah là il faut demander aux mathématiciens qui ont inventer çà !
Mais apparemment ont s'en sert pour pas mal de choses: téléphonie, Adsl, fichier image, QR code, CD, DVD (même codé 2 fois d'affilé paraît'il !)
La réponse est sur Wiki: "Si plus de 8 octets sont détectés comme erronés, le bloc de données utiles est marqué comme défectueux. Aucune erreur n'est alors corrigée"
Et c'est forcément se qui se produit si la clef est fausse.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 17 Déc 2014, 0:25
Oui les codes de checksum et correcteurs sont beaucoup utilisés.
Hélas je n'entend parler que du CRC à cause d'ethernet, bien que ce ne soit pas le seul protocole. (remarques: crc ne permet pas de corriger, mais il est extrêmement performant pour détecter des erreurs. Ce n'est pas le même objectif.)
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)