FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Des factorielles et encore des factorielles ! Emptypar Pedro Hier à 10:37

» Un autre pense-bête...
Des factorielles et encore des factorielles ! Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Des factorielles et encore des factorielles ! Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Des factorielles et encore des factorielles ! Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Des factorielles et encore des factorielles ! Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Des factorielles et encore des factorielles ! Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Des factorielles et encore des factorielles ! Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Des factorielles et encore des factorielles ! Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Des factorielles et encore des factorielles ! Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Des factorielles et encore des factorielles ! Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Des factorielles et encore des factorielles ! Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Des factorielles et encore des factorielles ! Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Des factorielles et encore des factorielles ! Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Des factorielles et encore des factorielles ! Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Des factorielles et encore des factorielles ! Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Des factorielles et encore des factorielles !

Aller en bas 
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Des factorielles et encore des factorielles ! Empty
MessageSujet: Des factorielles et encore des factorielles !   Des factorielles et encore des factorielles ! EmptyVen 21 Déc 2012 - 19:53

Salut tout le monde.
Hé oui, des factorielles à n’en plus finir !
Tout est expliqué dans le code. Régalez-vous !
Code:
' ******************************************************************************
'
'                            N!
'          FACTORIELLE N AVEC TOUS SES CHIFFRES
'
'                      PAR PAPYDALL
'
' ******************************************************************************
' Ce programme calcule les factorielles(avec tous ses chiffres)de 1 à une limite
' supérieure dependant de la valeur de la variable NMAX.
' Pour des faibles valeurs de NMAX (inférieurs à 100), les calcules sont rapides
' Pour des grandes valeurs de NMAX (supérieurs à 1000), il vaut mieux laisser
' l'ordinateur tourner et allez tondre votre pelouse ou allez au super-marché.
' Et espérez qu'à votre retour, le programme ait bien terminé son job!
' ******************************************************************************
Init() : Demarrer()
end
' ******************************************************************************
SUB Init()
  LABEL erreur
  dim nmax
  nmax = 200 : ' Cette variable doit être supérieure à 1 ( minimum = 2)
                ' Modifier cette valeur : une valeur plus petite accélère les
                ' calculs mais diminue le nombre de FACTORIELLE . Par exp:
                ' Pour NMAX = 10,  le programme calcule jusqu'à :
                ' FACTORIELLE 12 qui contient 9 chiffres
                ' Pour NMAX = 100, le programme calcule jusqu'à :
                ' FACTORIELLE 69 qui contient 99 chiffres
                ' Pour NMAX = 200, le programme calcule jusqu'à :
                ' FACTORIELLE 120 qui contient 199 chiffres
                ' Pour NMAX = 500, le programme calcule jusqu'à :
                ' FACTORIELLE 252 qui contient 498 chiffres
                ' Pour NMAX = 1000, le programme calcule jusqu'à :
                ' FACTORIELLE 449 qui contient 998 chiffres.
                ' Pour NMAX = 2000, le programme calcule jusqu'à :
                ' FACTORIELLE 807 qui comporte 1998 chiffres.

  dim a%(nmax),b%(nmax),c%(nmax),c1%(nmax),a$,k,fac$,msg$
  full_space 0 : memo 1 : width 1,2000 : height 1,3500 : print_target_is 1
  Application_title "FACTORIELLE N AVEC TOUS SES CHIFFRES PAR PAPYDALL"
  on_error_goto erreur
END_SUB
' ******************************************************************************
SUB demarrer()
  DIM_LOCAL i
  for i = 2 to nmax : c%(i) = 0 : next i : c%(1) = 1
    k = 1
    repeat
      caption 0, "factorielle " + str$(k-1) + "  avec tous ses chiffres ! Par PAPYDALL <ESC> pour arrêter"
      a$ = str$(k) : transforme()
      for i = 1 to nmax : b%(i) = a%(i) : a%(i) = c%(i) : next i : multiplication()
      for i = 1 to nmax : a%(i) = c%(i) : next i : affichage()
      k = k + 1
    until scancode = 27
  print : print "FACTORIELLE "; k-1 ; " contient " ;len(fac$) ; "  Chiffres"
END_SUB
' ******************************************************************************
' Ajoute à C%() le contenu de C1%()
SUB addition()
    DIM_LOCAL r,i,m
    r = 0  : ' Retenue
    for i = 1 to  nmax
        m = c1%(i) + c%(i) + r : r = int(m / 10) : c%(i) = m - 10 * r
    next i
END_SUB
' ******************************************************************************
' Multiplie A%() par B%(), résultat dans C%()
SUB multiplication()
    DIM_LOCAL i,im,i1,j1,r,m
for i = 1 to nmax : c%(i) = 0 : next i
  i = nmax
  while a%(i) = 0 : if i > 1 then i = i - 1 : end_while
  im = i
  for i1 = 1 to nmax
    if b%(i1) <> 0
        for i = 1 to nmax : c1%(i) = 0 : next i
            r = 0
            for j1 = 1 to im + 1
                m = a%(j1) * b%(i1) + r : r = int(m / 10)
                c1%(j1 + i1 - 1) = m - r * 10
          next j1
          addition()
      end_if
  next i1
END_SUB
' ******************************************************************************
' Transformation de la chaîne de caractères A$ --> Tableau d'entiers A%()
SUB transforme()
    DIM_LOCAL i
    for i = 1 to nmax : a%(i) = 0 : next i
    for i = 1 to len(a$) : a%(i) = val(mid$(a$,len(a$) + 1 - i, 1)) : next i
END_SUB
' ******************************************************************************
' Affichage de l'entier long contenu dans A%()
SUB affichage()
    DIM_LOCAL i
    i = nmax : fac$ = ""
    while a%(i) = 0 : i = i - 1 : end_while
    while i <> 0 : fac$ = fac$ + str$(a%(i)) : i = i - 1 : end_while
    print "FACTORIELLE " + str$(k) + " = " + fac$
END_SUB

' ******************************************************************************
erreur:
  print : print "FACTORIELLE "; k-1 ; " contient " ;len(fac$) ; "  Chiffres"
  msg$ = " ******** !!! Limite atteinte : FACTORIELLE "+ str$(k-1)+ " avec "+ str$(len(fac$))+" chiffres !!! *******" +chr$(13)
  msg$ = msg$ + "Pour pousser plus loin cette limite, modifier la valeur de la variable NMAX en ligne 22"
message msg$
end
' ******************************************************************************
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
 
Des factorielles et encore des factorielles !
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: