| |
|
|
Stefan Landsberg | ¡Hola,
Yo möchte una Programa escribir, dass el Quadratwurzel un número berechnet. ABER lo se no en 6 Nachkommastellen runden, pero solange weitermachen a uno en Stop klickt.
Cuestión: (como) puede ser el Kürzen en 6 Nachkommastellen en sqrt() y pow() abstellen.
Si el no va, entonces muss Yo irgend una Procedimiento einfallen dejar el dass macht. Aber Por favor, no Fertiglösung puesto. Dann lerne Yo nichts.
Noch una Cuestión: es en XProfan 10 el länge uno floats begrenzt? |
|
|
| |
|
|
|
Sebastian Sprenger | ¡Hola Stefan,
Cuestión 1:
El Características Sqrt() and Pow() runden gar nichts. Los números son simplemente sólo a kurz adecuado. Lo son como una Befehl nombre Decimals . Mit el kannst du bestimmen, wieviele Nachkommastellen adecuado voluntad debería (a dieser Punto verweise Yo dich veces en el XProfan-Ayuda ).
Cuestión 2:
Floats puede en el Principio unendlich lang ser, sólo el sog. "Rechengenauigkeit" es en 15 Stellen begrenzt. Mit otro Worten: Wenn du una Zahl hast, el encima 15 Ziffern lang es (egal si Nachkommastellen oder no), kann lo passieren, dass Rechnungen oder Ergebnisse de el 16. Punto ungenau voluntad.
Yo geb dir veces una kleines Ejemplo: En me kommt 0.33333333333333298 con etlichen Nullen fuera. El ersten 15 Ziffern stimmen also, de el 16. Punto stimmt no viel.
So, genug gelernt? Saludo, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 15.08.2008 ▲ |
|
|
|
|
Jac de Lad |
Floats puede en el Principio unendlich lang ser, Das stimmt no...
sólo el sog. "Rechengenauigkeit" es en 15 Stellen begrenzt. ...y así es una Float NIEMALS unendlich lang. Außerdem es sólo una bestimmter Zona erlaubt (Yo glaube el kleinste es 1*10^-43xx más o menos). Kleiner Pagar voluntad entonces auch no akzeptiert.
Lo son Algorithmen, con denen du el Wurzel siempre más berechnen dejar kannst. Willst du sólo el 2. Wurzel oder se jede beliebige n-te Wurzel berechenbar ser? Yo podría veces schauen, si Yo qué como habe...
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 15.08.2008 ▲ |
|
|
|
|
Stefan Landsberg | Yo tener jetz auch ya una bisschen rumprobiert. irgendwie komm Yo no así correcto voran porque mein programm no macht Yo voluntad.
@sebastian: danke para rápido antwort. pero en me kann I, con decimals aber auch sólo a 35 ir. mehr nachkommastellen voluntad no adecuado.
si float sólo a a 15ten lugar genau es es en diesem fall nutzlos para mich.
@Jac Yo möchte primero sólo el 2. Así que el Quadratwurzel berechnen. (wir haben el thema grad en el Schule, deshlab komme Yo auch en el Concepto para así una Programa). Yo habe auch ya daran pensamiento algo a escribir qué una Punto después de el otro berechnet. Das wäre nämlich genau el Yo haben quería. Yo weiß sólo todavía no wo Yo anfangen se.
Wäre lo a viel verlangt si du (si du así una Algorithmus hast) no el ganzen Code postest pero sólo Tipps gibts con welchen Befehlen el a realisieren es y el groben aufbau beschreibst? Sonst es el Programa sí no de me
@all Yo como ausgabefeld para el ergebnis una multiedit genommen. es el para el ausgabe de zahlen geeignet oder hay qué besseres?
ach sí. así sieht el de Yo a zeit habe. lo se aber gar nichts gerechnet. pero sólo el zahl de el eingabefeld übernommen: [...] |
|
|
| |
|
|
|
Jac de Lad | Nein, nein, nein! Typischer Anfängerfehler. Um con el Eingaben a rechnen musst du lo sólo de String en una Float umwandeln (siehe "Val()") y a Edición en el MultiEdit otra vez en una String (siehe "Str$()").
Declarar
declarar in&,out&,btn&,ergebnis$,ende%,eingabe$
Ventana redactar
windowstyle 575
windowtitle "Quadratwurzel"
window 20,20 - 600,400
usefont "MS Sans Serif",20,0,0,0,0
Ventana gestalten
in&=create("edit",%hWnd,"25",5,5,580,20)
btn&=create("button",%hWnd,"Berechnen",250,30,100,30)
out&=create("multiedit",%hWnd,"",5,65,580,-270)
whilenot ende%
WaitInput
caso %key=2 : romper
if clicked(btn&)
eingabe$=gettext$(in&)
ergebnis$=Str$(sqrt(Val(eingabe$)))
settext out&,""
settext out&,ergebnis$
endif
endwhile
Kürzer wäre dein Prog así:
Declarar
declarar in&,out&,btn&,ende%
Ventana redactar
windowstyle 575
windowtitle "Quadratwurzel"
window 20,20 - 600,400
usefont "MS Sans Serif",20,0,0,0,0
Ventana gestalten
in&=create("edit",%hWnd,"25",5,5,580,20)
btn&=create("button",%hWnd,"Berechnen",250,30,100,30)
out&=create("multiedit",%hWnd,"",5,65,580,-270)
whilenot ende%
WaitInput
if %key=2
romper
elseif clicked(btn&)
settext out&,Str$(sqrt(Val(gettext$(in&))))
endif
endwhile
Zum Thema Berechnung:
Usted puede entweder jede Punto einzeln berechnen dejar oder una Zahl quadrieren y je después de si ellos a groß oder a klein es siempre una wenig erhöhen oder abziehen. Dazu musst du los números en Cuerdas speichern y jede Punto einzeln multiplizieren.
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 15.08.2008 ▲ |
|
|
|
|
Stefan Landsberg | ¡Hola,
Yo nehme para el ausgabe des ergebnisses una einfaches editfeld, aber como Yo en mi Programa sí a el vorhandene zahl siempre el neu berechnete lugar dranhängen voluntad, es meiner meinung después de unpraktisch y wahrscheinlich auch a langsam siempre sólo el aktuellen texto con gettext de el editfeld auszulesen, una neu ziffer dranzuhängen, y luego otra vez el zahl con settext en el editfeld a escribir. gibts como una bessere methode oder irgendeine mensaje (gibts una seite/datei en el el messages en Alemán erklärt son) ? |
|
|
| |
|
|
|
| wm_copyData podría Usted hier helfen. |
|
|
| |
|
|
|
Stefan Landsberg | hallo, danke primero aber hay irgendwo ne dokumentation en el el messages verständlich (al besten Alemán) erklärt son? Yo blick en msdn no así correcto por! |
|
|
| |
|
|
|
| Klar, XProfan.com búsqueda y google son el Helfer en solcher Not! |
|
|
| |
|
|
|
Stefan Landsberg | después de que jetz endlich otra vez una wenig zeit para XProfan gefunden tener (schule beansprucht ne todo menge zeit. antes allem latein ) lugar Yo veces otra vez una frage:
por qué wir en el if abfrage no wert a el variable firstpart$ transferencia? Yo tener auch ya intenta ellos como integer a declarieren. va auch no:
Declarar
declarar in&,out&,calcbtn&,stopbtn&,ergebnis$,ende%,eingabe$
PROC-Teil
Proc sqrtlong
Algorithmus para ziehen uno Quadratwurzel
Parámetros zahl$, output&, stopbtn&
declarar vorkomma$, div2%, firstsqrt%, firstpart$
zahl$=translate$(zahl$, "," , ".") Dezimalkomma por Dezimalpunkt sustituir
vorkomma$=substr$(zahl$,1,".") Ziffern antes el Komma en vorkomma$ speichern
div2%=Instr(".",str$(substr$(len(vorkomma$ / 2),1,"."))) Prüfen si el Anzahl el Ziffern antes el Komma gerade oder ungerade es.
if div2% = 0
firstpart$=mid$(vorkomma$,0,2) erste 2 Ziffern de vorkomma$ voluntad en firstpart$ gespeichert
firstsqrt%=substr$(str$(sqrt(val(firstpart$))), 1 , ".") lo se el sqrt de firstpart$ gebildet (rest se weggelassen)
más
firstpart$=mid$(vorkomma$,0,1) erste Ziffer de vorkomma$ se en firstpart$ gespeichert
firstsqrt%=substr$(str$(sqrt(val(firstpart$))), 1 , ".") lo se el sqrt de firstpart$ gebildet (rest se weggelassen)
endif
locate 4,1 sólo para testen qué firstpart$ enhält
imprimir "firstpart:",firstpart$ sólo para test qué firstpart$ enhält
sendmessage(output&,$004A,%hWnd,Addr(firstsqrt%))
ENDPROC
Ventana redactar
windowstyle 575
windowtitle "Quadratwurzel"
window 20,20 - 600,125
usefont "MS Sans Serif",20,0,0,0,0
Ventana gestalten
in&=create("edit",%hWnd,"25,5",5,5,580,20)
calcbtn&=create("button",%hWnd,"Berechnen",170,30,100,30)
stopbtn&=create("button",%hWnd,"Stop",310,30,100,30)
out&=create("edit",%hWnd,"",5,65,580,20)
whilenot ende%
WaitInput
caso %key=2 : romper
if clicked(calcbtn&)
sqrtlong gettext$(in&), out&, stopbtn&
endif
endwhile
|
|
|
| |
|
|
|
| Der Zweite Parámetro de Mid$ muss mindestens 1 ser si uno tatsächlich de erster Position ermitteln möchte. |
|
|
| |
|
|
|
Stefan Landsberg | ahhh, danke (por qué bin Yo como no incluso en él gekommen ) |
|
|
| |
|
|