Français
Source/ Codesnippets

Russische Bauernmultiplikation pour longtemps positive Zahlenstrings

 

p.specht

Hinweise: Pour Profan-Versionen > 11.2 s'il te plaît qui Teile avec qui Variable ´Probe!´ herausnehmen!
Titre de la fenêtre "Russische Bauernmultiplikation"
' (CL) Copyleft 2012-08 by P<punkt>Specht<at>gmx.at
' aucun cependant geartete Gewähr!
Fenêtre Style 1048:Font 2:Randomiser
Cls 15790320+rgb(rnd(15),rnd(15),rnd(15))
Déclarer R#:Struct R=Left&,Top&,Right&,Bottom&:Faible R#,R
Externe("user32.dll","SystemParametersInfoA",48,0,R#,0)

With R#:Fenêtre .Left&,.Top&- .Right&,.Bottom&:EndWith

    Dispose R#
    Déclarer md$,mr$,sum$,probe!
    Set("decimals",18)
    Nochmal:
    imprimer "\n Multiplikand  =",:input md$
    imprimer "\n Multiplikator =",:input mr$
    imprimer "\n Produkt       =",
    probe!=val(md$)*val(mr$)

    si md$>mr$:sum$=md$:md$=mr$:mr$=sum$:sum$=»:endif

        sum$=»
        cas val(right$(md$,1)) mod 2:sum$=mr$

        Repeat

            md$ = Halbiere(md$)
            mr$ = Verdopple(mr$)
            cas val(right$(md$,1)) mod 2 : sum$ = Addiere(sum$,mr$)

        Until val(left$(md$,2))=0

        imprimer sum$;" "

        si probe!<10^15

            imprimer "\n Probe (Float) = ";probe!

        d'autre

            imprimer "\n Probe (Float)= ";format$("%e",probe!)

        endif

        WaitInput
        cas %csrlin>35:Cls 15790320+rgb(rnd(15),rnd(15),rnd(15))
        goto "Nochmal"

        proc Verdopple

            parameters m$
            declare c$,c%,a%,r%,a$,tm&,vz%,anz%,manuel%
            manuel%=1
            anz%=len(m$)
            tm&=&gettickcount
            m$=$ Trim(m$)

            si left$(m$,1)="-"

                vz%=-1
                m$=mid$(m$,2,len(m$)-1)

            endif

            a$=»
            r%=0

            whileloop len(m$),1,-1

                c$ = mid$(m$,&loop,1)
                c%=val(c$)
                a%=2*c%+r%
                r%=0

                si a%>9

                    a%=en%-10
                    r%=1

                endif

                a$=str$(en%)+a$

            endwhile

            cas r%=1:a$="1"+a$
            a$=a$+»
            a$=translate$(a$,"0"," ")
            a$=$ Trim(a$)
            a$=translate$(a$," ","0")
            a$=left$(a$,len(a$)-1)
            cas vz%= -1:a$="-"+a$
            return a$

        endproc

        proc Halbiere : parameters m$

            declare c$,c%,a%,r%,a$,tm&,vz%,anz%,manuel%
            anz%=len(m$)
            tm&=&gettickcount
            m$=$ Trim(m$)

            si left$(m$,1)="-"

                vz%= -1
                m$=mid$(m$,2,len(m$)-1)

            endif

            r%=0
            a$=»

            whileloop len(m$)

                c$ = mid$(m$,&loop,1)
                c%=10*r%+val(c$)
                a%=c%\2
                a$=a$+str$(en%)
                r%=c%-2*a%

            endwhile

            a$=a$+»
            a$=translate$(a$,"0"," ")
            a$=$ Trim(a$)
            a$=translate$(a$," ","0")
            a$=left$(a$,len(a$)-1)
            cas vz%= -1:a$="-"+a$
            return a$

        endproc

        proc Addiere : parameters a$,b$

            declare S$,la&,lb&,l&,a&,b&,c&,s&,i&,si$,carry&,lc&
            a&=0:b&=0:S$=»:S&=0:c&=0:carry&=0:lc&=0'charge carry
            la&=len(A$):lb&=len(B$):l&=la&

            Si lb&>la&:l&=lb&:A$=Mkstr$(" ",lb&-la&)+A$

                D'autre :B$=Mkstr$(" ",la&-lb&)+B$:Endif

                Whileloop 0,l&-1

                    i&=l&-&Boucle
                    a&=val(Mid $(A$,i&,1))
                    b&=val(Mid $(B$,i&,1))
                    c&=carry&+a&+b&
                    s&=c& mod 10
                    carry&= c& \ 10
                    lc&=carry&
                    si$=str$(s&):s$=si$+s$

                Endwhile

                s$=si(lc&,str$(lc&)," ")+s$
                s$=$ S+»
                s$=translate$(s$,"0"," ")
                s$=$ Trim($ S)
                s$=translate$(s$," ","0")
                s$=left$(s$,len($ S)-1)
                return s$

            ENDPROC

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
25.04.2021  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

613 Views

Untitledvor 0 min.
N.Art21.07.2022
Ernst21.07.2021
Georg Teles07.07.2021
Stephan Sonneborn05.07.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie