Inscription / Connexion Nouveau Sujet
Niveau Science du Numérique
Partager :

Algorithme

Posté par
Nallitsac
13-11-20 à 14:40

Bonjour,

J'éprouve de nombreux problèmes sur un ensemble d'exercices traitant d'algorithmes (je suis très mauvais comprendre la logique du langage). Si vous accepté de m'aider, je vous les présenterai un par un. Voici le premier sur lequel j'éprouve des difficultés (et oui ce n'est que le deuxième).

Je vous remercie par avance de votre aide.

Question2. Avant de multiplier, additionnons ! Quel est le résultat de l'addition 001011012 + 001100112 ? écrivez l'algorithme d'addition de 2 entiers représentés sur un octet :

Algorithme :addition

Données :ta: Tableau de Nombre, tb: Tableau de Nombre, 2 tableaux de taille 8 ; ces tableaux sont les représentations binaires de deux entiers a et b.

Résultat :Tableau de Nombre, tableau de taille 8 qui est la représentation binaire de l'entier a+b.

Et voici mes avancées en la matière :

001011012 + 001100112 = 011000002

Algorithme :addition

Données : n : tableau 1 ; c : tableau 2

Résultat : tab : tableau de nombres de taille 8

Pour i allant de taille(tab)-1 à 0 faire

        tab[i]:= n mod c;

        n:= n quo c;

  fin pour

Le résultat est : tab

fin algorithme


Est-ce correct ?

Posté par
phyelec78
re : Algorithme 13-11-20 à 21:54

Bonjour,

J'ai compris que tu voulais faire une addition de 2 nombres représentés en base 2.

Je ne sais pas si ton algo est bon car : Que veut dire mod ? et quo ?

en base 2 , les nombres sont représentés que par des 0 et des 1. Les règles d'additions sont les suivantes :

0+0=0
1+0=1
0+1=0
1+1=10  
donc quand tu additionnes 10 2et 10 2
tu as d'abord :la somme des 2 derniers chiffres 02+02=02
puis les 2 premiers chiffres 12+12=102
donc 102+102=1002

le résultats est sur 3 chiffres, quand on fait 1+1 il y une retenue que est le "1" de 102

dans ton algorithmique tu dois faire apparaitre la retenue et la garder en mémoire pour l'ajouter après.
c'est comme si on avait additionné :

     10102
        0102
---------------------
=     1 00

Dans ton algo je ne vois pas la propagation de la retenue.

Posté par
flight
re : Algorithme 13-11-20 à 22:00

salut

une astuce consisterai à convertir les nombres donnés en base 10  puis une fois la somme
obtenue , revenir en base 2

Posté par
Nallitsac
re : Algorithme 13-11-20 à 23:19

Et concernant l'algorithme, est-il bon ?

Posté par
flight
re : Algorithme 14-11-20 à 16:00

salut

j'ai realisé ceci sur vba excel pour t'inspirer , ..à voir avec le langage que tu pratique

Citation :
Sub addition_binaire()
x = Array(0, 1, 0, 1, 0)
y = Array(0, 1, 1, 0, 1)
n = 0
For i = UBound(x) To 0 Step -1

If n = 0 Then

Select Case x(i) & y(i)

Case "11"
w = w & "0" 'et retenue
n = n + 1
Case "10"
w = w & "1"
Case "01"
w = w & "1"
Case "00"
  w = w & "0"
End Select

Else
n = 0
Select Case "1" & x(i) & y(i)

  
  Case "111"
  w = w & "1" 'et retenue
  n = n + 1
  Case "100"
  w = w & "1"
  Case "110"
  w = w & "0"
  n = n + 1
  Case 101
  w = w & "0"
  n = n + 1
  
End Select

End If

Next
If n = 1 Then
MsgBox "1" & StrReverse(w)
Else
MsgBox StrReverse(w)
End If
End Sub

(il semblerait qu'il tourne bien apres quelques test  )



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

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 !