Español
Fuente/ Codesnippets

Komplexe Zahlenarithmetik como CLASS

 

p.specht

Hier una Intento uno objektorientierten Versión para Rechnen con Komplexen Pagar como Class CPLX. Lo fehlen todavía Wurzelfunktion y algunos Hilfsfunktionen, z.B. Koordinatensystem-Transformationen.
Título de la ventana "Eine Class para Komplexe Zahlenarithmetik"
' (CL) CopyLeft 2013-04 ff by P.Pájaro carpintero(at)GMX.at
' Jegliche Haftung es ausdrücklich ausgeschlossen! Betaversion después de Kurztest.
' El Verwendung es en propio Gefahr des Anwenders/el Anwenderin!
Cls : Font 2
'{ Class cplx, Beta-Versión 14.04.2013-06:00
Class cplx=re!,en el!,inp@,prt@,prtln@, add@,sub@,mul@,konj@,div@, polar@,vect@,pprt@,pprtln@
' .re!: Realteil, .en el!: Imaginärteil el jeweilgen Komplexen_Zahl#
' .inp(): Manuelle Einzelwerteingabe con Entrada
' <var#>.prt(PromptText$): Edición de var#, .prtln("Test:"): Edición + newline
' <var#>.add(a#,b#), .sub(a#,b#), .mul(a#,b#), .konj(a#), .div(a#,b#): Zeigerarithmetik
'
' p#.polar(a#): Wandelt Komplexe Koordinaten en Versor(=Polar-)darstellung [Longitud+Winkelgrade],
' a#.vect(p#):  Wandelt Polardarstellung [Longitud+Winkelgrade] a Komplexen Koordinaten .re+j*.en el
' p#.pprt(texto$): polarprint, p#.pprtln(texto$): polarprint + newline
'

proc cplx.inp

    declarar re!,en el!
    imprimir "Re=";:input re!
    locate %csrlin-1,%pos+20
    imprimir "Im=";:input en el!
    .re!=re! : .en el!=en el!

ENDPROC

proc cplx.cplx' para declarar x#:x#=new(cplx)

    declarar re!,en el!
    imprimir "re=";:input re!
    locate %csrlin-1,%pos+20
    imprimir "im=";:input en el!
    .re!=re! : .en el!=en el!

ENDPROC

proc cplx.prt

    if %pcount=1:parámetros t$:imprimir t$,:endif

        imprimir format$("%g",.re!);@IF(.en el!<0,"-j*"+\
        format$("%g",-1*.en el!),"+j*"+format$("%g",.en el!)),

    ENDPROC

    proc cplx.prtln

        if %pcount=1:parámetros t$:imprimir t$,:endif

            imprimir format$("%g",.re!);@If(.en el!<0,"-j*"+\
            format$("%g",-1*.en el!),"+j*"+format$("%g",.en el!))

        ENDPROC

        proc cplx.add :parámetros a#,b#

            .re! = a#.re! + b#.re!
            .en el! = a#.en el! + b#.en el!

        ENDPROC

        proc cplx.sub :parámetros a#,b#

            .re! = a#.re! - b#.re!
            .en el! = a#.en el! - b#.en el!

        ENDPROC

        proc cplx.mul :parámetros a#,b#

            .re! = a#.re! * b#.re! - a#.en el! * b#.en el!
            .en el! = a#.re! * b#.en el! + a#.en el! * b#.re!

        ENDPROC

        proc cplx.konj :parámetros a#

            .re! = a#.re!
            .en el! = -1*a#.en el!

        ENDPROC

        proc cplx.div :parámetros a#,b#

            var nenn!=sqr(b#.re!)+sqr(b#.en el!)
            .re! = a#.re!*b#.re! + a#.en el!*b#.en el!
            .en el! = a#.en el!*b#.re! - a#.re!*b#.en el!

            if nenn!<>0

                .re! = .re!/nenn!
                .en el! = .en el!/nenn!

            más

                if .re!<>0

                    .re! = 10^200
                    .en el! = 180/pi()*arctan(.en el!/.re!)

                más

                    .re!=10^200
                    .en el!=90

                endif

            endif

        ENDPROC

        proc cplx.pprt

            if %pcount=1:parámetros t$:imprimir t$,:endif

                imprimir format$("%g",.re!);"_in_";format$("%g",.en el!);"_rad",

            ENDPROC

            proc cplx.pprtln

                if %pcount=1:parámetros t$:imprimir t$,:endif

                    imprimir format$("%g",.re!);"_in_";format$("%g",.en el!);"_rad"

                ENDPROC

                proc cplx.polar:parámetros a#

                    set("decimals",12)
                    .re!=sqrt(sqr(a#.re!)+sqr(a#.en el!))
                    var pi!=3.1415926535897932384626433832795028842
                    var prec&=lg(.re!)
                    var Winkel!=0

                    if Nearly(a#.re!,0,15-prec&) and Nearly(0,a#.en el!,15-prec&):winkel!=0

                    elseif (a#.re!>0) and Nearly(0,a#.en el!,15-prec&):winkel!=0' 10^-38

                    elseif (a#.re!>0) and (a#.en el!>0) and Nearly(a#.re!,a#.en el!,14-prec&):winkel!=pi!*0.25

                    elseif Nearly(a#.re!,0,15-prec&) and (a#.en el!>0):winkel!=pi!*0.5

                    elseif (a#.re!<0) and (a#.en el!>0) and Nearly(-a#.re!,a#.en el!,14-prec&):winkel!=pi!*0.75

                    elseif (a#.re!<0) and Nearly(0,a#.en el!,15-prec&):winkel!=pi!

                    elseif (a#.re!<0) and (a#.en el!<0) and Nearly(-a#.re!,-a#.en el!,14-prec&):winkel!=pi!*1.25

                    elseif Nearly(a#.re!,0,15-prec&) and (a#.en el!<0):winkel!=pi!*1.5

                    elseif (a#.re!>0) and (a#.en el!<0) and Nearly(a#.re!,-a#.en el!,14-prec&):winkel!=pi!*1.75

                    elseif (a#.re!>0) and (a#.en el!>0) and (a#.re!>a#.en el!):winkel!=arctan(a#.en el!/a#.re!)

                    elseif (a#.re!>0) and (a#.en el!>0) and (a#.re!<a#.en el!):winkel!=pi!/2-arctan(a#.re!/a#.en el!)

                    elseif (a#.re!<0) and (a#.en el!>0) and (-a#.re!<a#.en el!):winkel!=pi!/2+arctan(-a#.re!/a#.en el!)

                    elseif (a#.re!<0) and (a#.en el!>0) and (-a#.re!>a#.en el!):winkel!=pi!-arctan(a#.en el!/-a#.re!)

                    elseif (a#.re!<0) and (a#.en el!<0) and (a#.re!<a#.en el!):winkel!=pi!+arctan(-a#.en el!/-a#.re!)

                    elseif (a#.re!<0) and (a#.en el!<0) and (a#.re!>a#.en el!):winkel!=pi!*1.5-arctan(-a#.re!/-a#.en el!)

                    elseif (a#.re!>0) and (a#.en el!<0) and (a#.re!< -a#.en el!):winkel!=pi!*1.5+arctan(a#.re!/-a#.en el!)

                    elseif (a#.re!>0) and (a#.en el!<0) and (a#.re!> -a#.en el!):winkel!=2*pi!-arctan(-a#.en el!/a#.re!)

                    endif

                    .en el!=Winkel!

                ENDPROC

                proc cplx.vect :parámetros c#

                    .re!=c#.re!*cos(c#.en el!)
                    .en el!=c#.re!*sin(c#.en el!)

                ENDPROC

                ' }
                ' HAUPTTEIL:
                declarar u#:dim u#,cplx
                declarar v#:dim v#,cplx
                declarar w#:dim w#,cplx
                u#.inp()     :u#.prtln("u:")
                v#.inp()     :v#.prtln("v:")
                w#.add(u#,v#):w#.prt("add:")
                w#.sub(u#,v#):w#.prtln("sub:")
                w#.mul(u#,v#):w#.prt("mul:")
                w#.konj(u#)  :w#.prtln("konj:")
                w#.div(u#,v#)
                imprimir w#.re!
                imprimir w#.en el!
                w#.prtln("div:")
                w#.polar(u#) :w#.pprtln("polar:")
                u#.vect(w#)  :u#.prtln("vect:")
                waitinput
                disponer u#,v#,w#
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
09.05.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

502 Views

Untitledvor 0 min.
RudiB.17.04.2022
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider28.05.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