Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

exercice d'algorithme

Posté par
chocoxbons
16-08-10 à 20:11

Bonjour, je ne suis pas très douée en algorithmique notamment pour l'écriture, voici un exercice, j'ai écris l'algorithme mais je nesais pas si ça est correcte.
ENONCE/
Écrire l'algorithme permettant d'additionner deux entiers à deux chiffres :
- dans le cas d'une addition sans retenue ;
- dans le cas de deux entiers quelconques.

Données: x:=20 ; y:=2
traitement: Faire n1:=x+y;
                  n2:=x+y;
                  k:=n1+n2;
                  f pour
je ne sais pas si mon écriture est correcte et je ne sais pas si il faut que je mette l'instruction
   " pour k de ....." si c'est le cas je ne sais pas comment le rédiger et avec quelle données.

Merci de votre aide

Posté par
chocoxbons
re : exercice d'algorithme 16-08-10 à 20:14

j'ai oublié de le préciser mais je n'ai pu faire que le 1er algorithme

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 20:27

Bonsoir,

Je vais me lancer. Tu fais tes algo avec quoi (histoire de voir quelle commande tu peux utiliser (partie entière, modulo...).
Sinon, ton algo est faux.

Posté par
chocoxbons
re : exercice d'algorithme 16-08-10 à 20:29

s'il vous plaît aider à mieux rédiger un algorithme, surtout au niveau de la traduction des données.

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 20:34

Te faire un algo n'est pas difficile. Il faut juste que je m'assure que les commandes que j'utilise existe pour toi.

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 20:45

Donc, il faut que je sache quel logiciel tu utilises et si c'est sur papier, quelle commande es tu en droit d'utiliser

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 20:45

quelles commandes...

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 22:23

J'ai vu sur l'autre post que tu bossais sur giac.
Voila un code naïf pour ton problème.

func_Add2(a,b):={
  if ((a<0 or a>=100) or (b<0 or b>=100)) {return("Erreur d'entrée");}
  u_A := irem(a,10);
  u_B := irem(b,10);
  d_A := (a-u_A)/10;
  d_B := (b-u_B)/10;
    c := u_A+u_B;
    if (c > 9) {rep := c-10;
    rtn:=1;}
    else {rep := c;
    rtn:=0;}
    c := d_A + d_B + rtn;
    rep := expr(cat(cat(c),cat(rep)));
    return rep;
};

C'est du brut de pomme et on peut faire beaucoup mieux. J'attends de toi que tu m'expliques les calculs que je fais avec ce programme.

Posté par
Daniel62
re : exercice d'algorithme 16-08-10 à 22:31

Bonsoir,

je ne connais pas giac

mais à première vue:

   u_A := irem(a,10);

u_A = a mod 10

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 22:34

mod donne le couple (reste,modulo) dans giac. Ce qui n'est pas pratique à manipuler dans un code.

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 22:35

Giac : 12 mod 10
------------------ 2 % 10

Posté par
Daniel62
re : exercice d'algorithme 16-08-10 à 22:45

pas facile en effet

u_A := irem(a,10);


d_A := a\10;   (division entière)

ou d_A := int(a/10);

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 22:49

J'ai l'habitude de passer par modulo car la procédure est moins gourmande en ressource, au contraire de la division. Bon, c'est des économies de bout de ficelle mais à l'époque de mon 486 SX, ça comptait parfois.

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 22:50

J'aurais pu extraire les caractères directement de chiffre aussi .

Posté par
Daniel62
re : exercice d'algorithme 16-08-10 à 22:54

bien sûr c'est possible

avec Left et Right ... (ou autre chose ?)

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 23:07

Left et Right ??

Posté par
Daniel62
re : exercice d'algorithme 16-08-10 à 23:10

c'est du VB

si a est une chaîne:

d_A = Left(a,1)

u_A = Right(a,1)

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 23:14

La dernière fois que j'ai fait du VB, c'était du VB 6 avec mon PC sous windows 95...Trop loin. Sinon, l'idée est là, oui.

Posté par
Daniel62
re : exercice d'algorithme 16-08-10 à 23:24

ça marche aussi avec QBasic  et TurboBasic

Posté par
Boltzmann_Solver
re : exercice d'algorithme 16-08-10 à 23:45

Non, j'ai commencé avec ces deux langages (le TB, je l'ai récupéré chez un copain et le QB était fourni).

Posté par
Daniel62
re : exercice d'algorithme 17-08-10 à 00:21

j'ai commencé avec le Z80

langage assembleur

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 00:28

Bonsoir,
Je n'utilisa pas Giac, j'utilise Xcas.

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 00:32

@choco : C'est la même chose. XCAS est une interface graphique à GIAC.
@daniel : ah ! J'aurai aimé savoir faire correctement de l'assembleur. Mais là, c'était hors de ma portée. (LE Z80 et le M68k, les processeurs des TI)

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 13:59

En fait je voudrais bien savoir quoi écrire sur le papier. Car les profs nous demandent de l'écrire sur du papier et ensuite avec le logiciel.
Pour l'écrire sur du papier il faut que je connaisse la grammaire du logiciel... mais moi c'est plutôt la méthode qui m'intéresse ( les principes de bases qui permettent l'écriture d'un algorithme)

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 14:09

Avant de te répondre. J'aimerais vérifier un truc.

Fais moi à la main (la méthode de primaire).

23
+25
---

45
+27
---

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 14:14

Vous voulez dire que je prenne les nombres et que je les ajoute ?
Parce que j'ai pas trop compris l'algorithme que vous avez écris (trop compliqué )

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 14:21

les entiers sont n1 et n2
n1=n2=x+y
avec x:=20 et y:=2
n1:=20 et n2:=20
faire k:=n1+n2
      k:=20+20
      k:=40

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 14:27

Je te demande de faire l'addition comme en primaire (avec les retenues...)

Ton algo ne veut rien dire à partir de la deuxième ligne. S'il te plait fais ce que je t'ai demandé. Si tu ne sais pas faire ça, tu n'as aucune chance de faire l'exo.

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 14:34

23
+25
----
48


45
+27  
----
72

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 14:36

Comment t'as fait ça (je me doute que tu sais faire une addition). Détaille moi tes calculs comme en primaire. Soit en scannat ta feuille soit en me racontant avec du texte.

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 14:44

23+25=48
je commence le calcul par les unités,ici,3 et 5, j'additionne 3 et 5 (3+5) et cela fait 8
ensuite j'additionne les dizaines soit 2+2 et cela me fait 4. Le résultat de l'addition est de 48

45+27=72
je commence le calcul par les unités,ici,5 et 7, j'additionne 5 et 7 (5+7) et cela fait 12.alors j'écris 2 dérrière le égal et je retiens 1
ensuite j'additionne les dizaines soit 4+2 et cela me fait 6, mais j'ai la retenue donc je fais 6+1, cela me fait 7. Le résultat de l'addition est de 72.

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 14:46

Peux tu me traduire 23+25=48 en pseudo-langage ?

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 14:46

Quel malpoli. Très bien

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 17:18

qu'est-ce que le pseudo-langage? et pourquoi vous dites que je suis malpoli ?

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 17:21

C'était moi le malpoli pour ne pas avoir dit que tu avais juste (mais j'ai oublié le "je fais" dans Quel malpoli). Tu n'as rien à te reprocher !

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 17:22

Essaye de me traduire ton calcul à la manière d'une machine.

Posté par
chocoxbons
re : exercice d'algorithme 17-08-10 à 17:43

Alors à la manière d'une machine je sais pas mais bon j'essaye parce que j'ai une petite idée
23+25=48

23+25=
20+2040
03+058
23+2548


45+27=72
45+27=
40+2060
05+0712
45+2772

Posté par
Boltzmann_Solver
re : exercice d'algorithme 17-08-10 à 18:12

Malheureusement, non. Ca n'est pas ça. Je te propose cette traduction quand il n'y a pas de retenue.

Citation :
%Déclaration des variables
(n,m,u,r) sont des nombres entiers
(un,um,dn,dm) sont des nombres entiers
res est une chaine

%Programme
%Extraction des chiffres composant les nombres
%On peut le faire avec les modulos, les partie entières, etc... ca dépend des commandes que l'on t'a enseigné.
un = n mod 10
um = m mod 10
dn = (n-un)/10
dn = (m-um)/10
r = 0
%On somme les unités
u = un+um
Si u > 9
alors
r = 1
res = chaine(u-10)
sinon
res = chaine(u)
Fin Si
% On somme les dizaines et l'éventuel reste
c = dn+dm+r
% On rajoute les dizaines et possibles centaines
Si c > 0
Alors
res = concatène(c,res)
Fin Si
afficher res


Ceci est la traduction de l'algorithme de calcul enseigné en primaire pour les additions.



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 !