Español
Fuente/ Codesnippets

Russische Bauernmultiplikation para largo positive Zahlenstrings

 

p.specht

Hinweise: Für Profano-Versionen > 11.2 Por favor, el Teile con el Variable ´Probe!´ herausnehmen!
Título de la ventana "Russische Bauernmultiplikation"
' (CL) Copyleft 2012-08 by P<punkt>Specht<at>gmx.at
' Keine sin embargo geartete Gewähr!
Ventana de Estilo 1048:Font 2:Selección aleatoria
Cls 15790320+rgb(rnd(15),rnd(15),rnd(15))
Declarar R#:Struct R=Left&,Top&,Right&,Bottom&:Dim R#,R
Externo("user32.dll","SystemParametersInfoA",48,0,R#,0)

With R#:Ventana .Left&,.Top&- .Right&,.Bottom&:EndWith

    Disponer R#
    Declarar md$,mr$,sum$,probe!
    Conjunto("decimals",18)
    Nochmal:
    imprimir "\n Multiplikand  =",:input md$
    imprimir "\n Multiplikator =",:input mr$
    imprimir "\n Produkt       =",
    probe!=val(md$)*val(mr$)

    if md$>mr$:sum$=md$:md$=mr$:mr$=sum$:sum$="":endif

        sum$=""
        caso val(right$(md$,1)) mod 2:sum$=mr$

        Repeat

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

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

        imprimir sum$;" "

        if probe!<10^15

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

        más

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

        endif

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

        proc Verdopple

            parámetros m$
            declarar c$,c%,a%,r%,a$,tm&,vz%,anz%,manuell%
            manuell%=1
            anz%=len(m$)
            tm&=&gettickcount
            m$=trim$(m$)

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

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

            endif

            a$=""
            r%=0

            whileloop len(m$),1,-1

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

                if a%>9

                    a%=a%-10
                    r%=1

                endif

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

            endwhile

            caso r%=1:a$="1"+a$
            a$=a$+":"
            a$=translate$(a$,"0"," ")
            a$=trim$(a$)
            a$=translate$(a$," ","0")
            a$=left$(a$,len(a$)-1)
            caso vz%= -1:a$="-"+a$
            volver a$

        ENDPROC

        proc Halbiere : parámetros m$

            declarar c$,c%,a%,r%,a$,tm&,vz%,anz%,manuell%
            anz%=len(m$)
            tm&=&gettickcount
            m$=trim$(m$)

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

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

            endif

            r%=0
            a$=""

            whileloop len(m$)

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

            endwhile

            a$=a$+":"
            a$=translate$(a$,"0"," ")
            a$=trim$(a$)
            a$=translate$(a$," ","0")
            a$=left$(a$,len(a$)-1)
            caso vz%= -1:a$="-"+a$
            volver a$

        ENDPROC

        proc Addiere : parámetros a$,b$

            declarar 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'last carry
            la&=len(A$):lb&=len(B$):l&=la&

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

                Más :B$=Mkstr$(" ",la&-lb&)+B$:Endif

                Whileloop 0,l&-1

                    i&=l&-&Loop
                    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$=if(lc&,str$(lc&)," ")+s$
                s$=s$+":"
                s$=translate$(s$,"0"," ")
                s$=trim$(s$)
                s$=translate$(s$," ","0")
                s$=left$(s$,len(s$)-1)
                volver 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


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

607 Views

Untitledvor 0 min.
N.Art21.07.2022
Ernst21.07.2021
Georg Teles07.07.2021
Stephan Sonneborn05.07.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie