| |
|
|
Stefan Landsberg | Salut,
je voudrais un Programme écrivons, dass qui Quadratwurzel einer numéro berechnet. ABER es soll pas sur 6 Nachkommastellen runden, mais solange weitermachen jusqu'à on sur Stop klickt.
Frage: (comment) peux on cela Kürzen sur 6 Nachkommastellen chez sqrt() et pow() abstellen.
si cela pas allez, ensuite muss je mir irgend une Procédure envahir laisser qui dass pouvoir. mais s'il te plaît aucun Fertiglösung posten. ensuite lerne je rien.
encore une Frage: ist dans XProfan 10 qui länge eines floats begrenzt? |
|
|
| |
|
|
|
Sebastian Sprenger | allô Stefan,
Frage 1:
qui Funktionen Sqrt() and Pow() runden gar rien. Les chiffres sont simple seulement trop kurz angezeigt. il y a là une Befehl nommé Decimals . avec dem peux du bestimmen, wieviele Nachkommastellen angezeigt volonté devoir (à cette Stelle verweise je toi la fois sur qui XProfan-Aider ).
Frage 2:
Floats peut im Prinzip unendlich long son, seulement qui sog. "Rechengenauigkeit" ist sur 15 se mettre begrenzt. avec anderen Worten: si du une numéro la hâte, qui sur 15 Les chiffres long ist (égal si Nachkommastellen ou bien aucun), peux es passer, dass Rechnungen ou bien Ergebnisse ab qui 16. Stelle ungenau volonté.
je geb dir la fois un kleines Beispiel: chez mir venez 0.33333333333333298 avec etlichen Nullen raus. qui ersten 15 Les chiffres stimmen alors, ab qui 16. Stelle stimmt pas viel.
So, genug gelernt? Salut, 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 peut im Prinzip unendlich long son, c'est ça pas...
seulement qui sog. "Rechengenauigkeit" ist sur 15 se mettre begrenzt. ...et avec cela est un Float NIEMALS unendlich long. Aussi ist seulement un bestimmter Bereich erlaubt (je crois cela kleinste ist 1*10^-43xx ou bien so). Kleiner payons volonté ensuite aussi pas akzeptiert.
il y a Algorithmen, avec denen du qui Wurzel toujours plus berechnen laisser peux. veux du seulement qui 2. Wurzel ou bien soll chacun beliebige n-te Wurzel berechenbar son? je pourrait la fois regarder, si je quoi là 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 | je hab jetz aussi déjà un bisschen rumprobiert. irgendwie komm je pas so richtig voran weil mon programm pas pouvoir quoi je veux.
@sebastian: merci pour qui schnelle antwort. mais chez mir peux je avec decimals mais aussi seulement jusqu'à 35 aller. plus nachkommastellen volonté pas angezeigt.
si float seulement jusqu'à zur 15ten lieu oui c'est ca ist ist es dans diesem le cas nutzlos pour mich.
@Jac je voudrais erstmal seulement qui 2. alors qui Quadratwurzel berechnen. (on a cela thema grad dans qui une école, deshlab viens je aussi sur qui concept pour so un Programme). j'ai aussi déjà daran gedacht quelque chose trop écrivons quoi une Stelle pour qui anderen berechnet. cela wäre nämlich oui c'est ca cela quoi je avons voulais. je sais seulement encore pas wohin je anfangen soll.
Wäre es trop viel verlangt si du (si du so une Algorithmus la hâte) pas den ganzen Code postest mais seulement Tipps gibts avec welchen Befehlen cela trop realisieren ist et den groben aufbau beschreibst? Sonst ist cela Programme oui pas de mir
@espace j'ai comme ausgabefeld pour cela ergebnis un multiedit pris. ist cela pour qui ausgabe de payons approprié ou bien gibt es quoi besseres?
ah oui. so sieht cela aus quoi je en ce moment habe. es wird mais gar rien gerechnet. mais seulement qui numéro aus dem eingabefeld übernommen: [...] |
|
|
| |
|
|
|
Jac de Lad | non, non, non! Typischer Anfängerfehler. Um avec den Eingaben trop le calcul musst du es seulement de String dans un Float transformer (siehe "Val()") et zur Ausgabe im MultiEdit wieder dans une String (siehe "Str$()").
Déclarer
declare in&,out&,btn&,ergebnis$,ende%,eingabe$
la fenêtre erstellen
style de fenêtre 575
windowtitle "Quadratwurzel"
window 20,20 - 600,400
usefont "MS Sans Serif",20,0,0,0,0
la fenêtre 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
cas %clé=2 : pause
si clicked(btn&)
eingabe$=gettext$(in&)
ergebnis$=Str$(sqrt(Val(eingabe$)))
settext out&,»
settext out&,ergebnis$
endif
endwhile
Kürzer wäre dein Prog so:
Déclarer
declare in&,out&,btn&,ende%
la fenêtre erstellen
style de fenêtre 575
windowtitle "Quadratwurzel"
window 20,20 - 600,400
usefont "MS Sans Serif",20,0,0,0,0
la fenêtre 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
si %clé=2
pause
elseif clicked(btn&)
settext out&,Str$(sqrt(Val(gettext$(in&))))
endif
endwhile
Zum Thema Berechnung:
tu peux entweder chacun Stelle einzeln berechnen laisser ou bien une numéro quadrieren et je après que si vous trop grand ou bien trop petite ist toujours un peu erhöhen ou bien abziehen. en supplément musst du les numéros dans Cordes Sauver et chacun Stelle 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 | Salut,
je prends pour qui ausgabe des ergebnisses un simple editfeld, mais là je dans mon Programme oui à qui vorhandene numéro toujours qui récente berechnete lieu dranhängen veux, ist es meiner attitude pour unpraktisch et wahrscheinlich aussi trop lente toujours seulement den aktuellen text avec gettext aus dem editfeld auszulesen, une récente ziffer dranzuhängen, et ensuite wieder qui numéro avec settext ins editfeld trop écrivons. gibts là une bessere methode ou bien irgendeine message (gibts une page/fichier dans qui qui messages sur allemande erklärt sommes) ? |
|
|
| |
|
|
|
| wm_copyData pourrait Dir ici aider. |
|
|
| |
|
|
|
Stefan Landsberg | allô, merci erstmal mais gibt es irgendwo ne dokumentation dans qui qui messages verständlich (am besten allemande) erklärt sommes? je perspective chez msdn pas so richtig par! |
|
|
| |
|
|
|
| bien sûr, XProfan.com cherche et google sommes qui Helfer dans solcher Not! |
|
|
| |
|
|
|
Stefan Landsberg | après que je jetz enfin wieder un peu zeit pour XProfan trouvé hab (une école beansprucht ne ganze la quantité zeit. avant allem latin ) lieu je la fois wieder une frage:
pourquoi wir dans qui si abfrage aucun wert à qui variable firstpart$ transfert? je hab aussi déjà versucht vous comme integer trop declarieren. allez aussi pas:
Déclarer
declare in&,out&,calcbtn&,stopbtn&,ergebnis$,ende%,eingabe$
PROC-partie
Proc sqrtlong
Algorithmus zum tirer einer Quadratwurzel
Paramètres numéro$, output&, stopbtn&
declare vorkomma$, div2%, firstsqrt%, firstpart$
numéro$=translate$(numéro$, » , ".") Dezimalkomma par Dezimalpunkt ersetzen
vorkomma$=substr$(numéro$,1,".") Les chiffres avant dem Komma dans vorkomma$ Sauver
div2%=Instr(".",str$(substr$(len(vorkomma$ / 2),1,"."))) vérifier si qui Anzahl qui Les chiffres avant dem Komma justement ou bien ungerade est.
si div2% = 0
firstpart$=mid$(vorkomma$,0,2) erste 2 Les chiffres aus vorkomma$ volonté dans firstpart$ gespeichert
firstsqrt%=substr$(str$(sqrt(val(firstpart$))), 1 , ".") es wird qui sqrt aus firstpart$ gebildet (reste wird weggelassen)
d'autre
firstpart$=mid$(vorkomma$,0,1) erste Ziffer aus vorkomma$ wird dans firstpart$ gespeichert
firstsqrt%=substr$(str$(sqrt(val(firstpart$))), 1 , ".") es wird qui sqrt aus firstpart$ gebildet (reste wird weggelassen)
endif
locate 4,1 seulement zum testen quoi firstpart$ enhält
imprimer "firstpart:",firstpart$ seulement zum test quoi firstpart$ enhält
sendmessage(output&,$004A,%hWnd,Addr(firstsqrt%))
endproc
la fenêtre erstellen
style de fenêtre 575
windowtitle "Quadratwurzel"
window 20,20 - 600,125
usefont "MS Sans Serif",20,0,0,0,0
la fenêtre 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
cas %clé=2 : pause
si clicked(calcbtn&)
sqrtlong gettext$(in&), out&, stopbtn&
endif
endwhile
|
|
|
| |
|
|
|
| qui Zweite paramètre de Milieu$ muss mindestens 1 son si on réellement ab erster Position ermitteln voudrais. |
|
|
| |
|
|
|
Stefan Landsberg | ahhh, merci (pourquoi suis je là pas selbst sur elle gekommen ) |
|
|
| |
|
|