voici un petit programme de calcul de PGCD (a l'aide de l'algorithme des soustractions successives) que j'ai fait pour m'entraîner à utiliser certaines fonctions que je n'avais jamais utilisées auparavant.
dites moi ce que vous en pensez!!

Code : Tout sélectionner
;============================= programme de calcul de PGCD =================================
;================================ par florent ECOCHARD =====================================
;====================================== version 1.0 ========================================
Repeat
OpenConsole()
If io = 0
;=========================================+entrée+============================================================
ConsoleColor(6, 0)
PrintN("Entrez nombre 1")
ConsoleColor(7, 0)
nbr1$ = Input() ;---->recuperation du premier membre dans une chaine de caractere
ConsoleColor(6, 0)
PrintN ("")
PrintN("Entrez nombre 2")
ConsoleColor(7, 0)
nbr2$ = Input() ;----> recuperation du deuxieme membre dans une chaine de caractere
nbr1 = Val(nbr1$) ;----> transformation de ces chaines de caractere en variables
nbr2 = Val(nbr2$)
ConsoleColor(6, 0)
PrintN ("")
PrintN ("Voulez-vous afficher les etapes de calcul?")
PrintN ("")
ConsoleColor(0, 14)
Print("1-")
ConsoleColor(7, 0)
PrintN (" Oui")
ConsoleColor(0, 14)
Print("2-")
ConsoleColor(7, 0)
PrintN (" Non")
ConsoleColor(7, 0)
etapes$ = Input()
If nbr1>nbr2 ;----> condition1: si le 1eme membre est strictement superieur au 2eme
nbr3 = nbr1 - nbr2 ;----> soustraire le 2eme membre au 1er et stocker le nombre obtenu dans un 3eme variable nbr3
Else ;----> sinon
nbr1=Val(nbr2$);on remplace le 1er membre par 2eme
nbr2=Val(nbr1$);et inversement
EndIf
If etapes$ = "1"
PrintN("")
PrintN("")
ConsoleColor(3,0)
PrintN(" Etapes:")
ConsoleColor(7,0)
PrintN("")
EndIf
;=======================================+traitement+========================================================
While nbr1 ! nbr2 ;----> boucle: tant que le 1er membre est different du 2eme membre
nbr3 = nbr1 - nbr2 ;----> soustraire le 2eme membre au 1er et stocker le nombre obtenu dans un 3eme variable nbr3
If etapes$ = "1"
ConsoleColor(14,0)
Print("* ")
ConsoleColor(7,0)
steps$=Str(nbr1)+ "-" +Str(nbr2)+"="+Str(nbr3)
Longueur = Len(Chaine$)
dc$ = dc$ + " ; "+ steps$
PrintN(Str(nbr1)+ "-" +Str(nbr2)+"="+Str(nbr3) );----> afficher le calcul a chaque iteration
EndIf
If nbr2>nbr3 ;----> condition1: si le 2eme membre est strictement superieur a nbr3
nbr1 = nbr2 ;----> remplacer le 1er membre par le deuxieme
nbr2 = nbr3 ;----> et le deuxieme par nbr3
Else ;----> si le nombre 2 est inferieur a nbr3 (si il est egal a nbr3 on sort de la boucle)
nbr1 = nbr3
nbr2 = nbr2
EndIf ;----> fin de la condition1
Wend ;----> fin de condition
;============================================+sortie+===========================================================
ConsoleColor(12, 0)
If nbr3 = 1 ;----> condition2: si nbr3 (qui devient ici le PGCD) est egal a 1,
PrintN("")
PrintN("---> CES NOMBRES SONT PREMIERS ENTRE EUX") ;----> afficher "ces nombres sont premiers entre eux
PrintN("")
Else ;----> sinon,
PrintN("")
PrintN("---> PGCD("+nbr1$+" ;"+nbr2$+") = "+Str(nbr3)) ;----> afficher "PGCD(membre1; membre2) = nbr3
PrintN("")
EndIf ;----> fin de condition2
If etapes$ = "1"
ConsoleColor(8, 0)
PrintN("voulez-vous copier ces etapes dans le presse-papier?")
PrintN("1- Oui")
PrintN("2- Non")
copy$ = Input()
If copy$ = "1"
SetClipboardText(dc$)
MessageRequester ("confirmation", "copié!!")
EndIf
EndIf
ConsoleColor(3,0)
PrintN(" Voulez vous:")
PrintN("")
ConsoleColor(0, 14)
Print("1-")
ConsoleColor(7, 0)
PrintN(" Recommencer? ")
ConsoleColor(0, 14)
Print("2-")
ConsoleColor(7, 0)
PrintN(" Quitter?")
cond$=Input()
If cond$ = "1"
; ...
ElseIf cond$ = "2"
io = 1
EndIf
Else
Break
End
EndIf
ForEver