Forum | | | | - page 1 - |
|  Julian Schmidt | Salut, je versuche justement payons dans un Buchstabenreihe trop konvertieren. cet devoir un ähnliches Format avons comment dans Excel.
A,B,C,D,E... AA,AB,AC,AD,AE... BA,BB,BC,BE... ZA,ZB,ZC... AAA,AAB... ABA,ABB... ZZY, ZZZ... AAAA, AAAB... cela es jusqu'à sur deux Buchstabenreihen funktioniert habe je bereits hingekommen. Mir fehlt mais irgendwie un Ansatz comment on cela plus hoch le calcul peux. je bräuchte aussi une vers-Funktion.
cls
var lbox&=Créer(ListBox, %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd))
whileloop 26*30
AddStrings(lbox&,LetterOfNumber(&loop,1))
Endwhile
tandis que 1
waitinput
cas iskey(27) : end
Settext %hwnd,Str$(GetCurSel(lbox&))+" - "+GetString$(lbox&,GetCurSel(lbox&))
Endwhile
Proc LetterOfNumber
Paramètres number%,grossschreibung%
cas grossschreibung%=1 : var alphabet$="A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
cas grossschreibung%<>1 : var alphabet$="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
declare text$,ausnahme%
tandis que number%<>0
si number%<27
text$=text$+$ Substr(alphabet$,number%,»)
number%=0
d'autre
whileloop Round(number%/26,0)
si number%=(26*&loop)
text$=$ Substr(alphabet$,IF(Val($ Substr(Str$(number%/26),1,"."))-1>0,Val($ Substr(Str$(number%/26),1,"."))-1,1),»)+$ Substr(alphabet$,26,»)
ausnahme%=1
Endif
Endwhile
cas ausnahme%<>1 : text$=$ Substr(alphabet$,Val($ Substr(Str$(number%/26),1,".")),»)+text$
number%=number%-(26*Val($ Substr(Str$(number%/26),1,".")))
Endif
Endwhile
Retour text$
ENDPROC
LG
Julian57 |
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...]  | 08.10.2011 ▲ |
| |
|  | « cette Beitrag wurde comme Solution gekennzeichnet. » | |  Jörg Sellmeyer | Es hat mir aucun Ruhe gelassen et je hab encore weitergetüftelt. maintenant hab ich's raus et c'est letztlich unkomplizierter comme anfangs erwartet.
'et renversé
'Jörg Selllmeyer 2011
'zur freien Verwendung
'ici bekommt on très bien erklärt, comment cela Umrechnen de payons dans un autre la base funktioniert:
'https://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
'qui difficulté hierbei, ist qui fehlende zéro. Alle Nullstellen doit abgefangen volonté, qui
'aktuelle Stelle um une verringert et qui folgende Stelle également um une verringert volonté.
'qui Wert A000 wird ensuite alors sans Nullen trop YYZ. C000 wird trop BYYZ
Proc Nr2ABC
Paramètres numéro!
Déclarer Wert$,reste%
Tandis que numéro! > 0
reste% = numéro! Mod 26
numéro! = numéro! \ 26
Si reste% = 0
'ici volonté qui Nullstellen abgefangen et umgewandelt
numéro! = numéro! -1
reste% = 26
EndIf
Cas reste% > 0:Wert$ = Chr$(reste% + 64) + Wert$
Wend
Retour Wert$
ENDPROC
Proc ABC2Nr
Paramètres Text$
Déclarer numéro!,somme!,B$
Text$ = Upper$(Text$)
WhileLoop Len(Text$),1,-1
B$ = $ Substr(Text$,-&Boucle)
numéro! = (Ord(B$)-64) * 26^(&Boucle-1)
somme! = somme! + numéro!
Wend
Retour Int(somme!)
ENDPROC
Cls
Titre de la fenêtre "Zahlen dans Buchstaben transformer et umgekehrt"
Imprimer "LQSVOFKGQM =", ABC2Nr("LQSVOFKGQM")
Imprimer "AAAAAA =", ABC2Nr("AAAAAA")
Imprimer "ABCDEFGH =", ABC2Nr("ABCDEFGH")
Imprimer
Imprimer "XPROFAN pouvoir Spass =", ABC2Nr("XPROFAN"),ABC2Nr("macht"),ABC2Nr("Spass")
Imprimer
Déclarer s$
Randomiser
WhileLoop 10
s$ = Chr$(Tour(26) + 65) + s$
Wend
Imprimer s$ + " =",ABC2Nr($ S)
WaitInput
Cls
Randomiser
WhileLoop 0,780,1
Imprimer Nr2ABC(&Boucle),
Wend
WaitInput
Cls
WhileLoop 00,480,1
Imprimer Nr2ABC(&Boucle + Tour(345676)),
Wend
WaitInput
ici ist encore un kleines Programme, chez dem on un un peu herumexperimentieren peux:
$H windows.ph
Def DelLast(2) Mid $(@$(1),1,(Len(@$(1)) - @&(2)))
'ici peux on joli nachlesen, comment so une change funktioniert:
'https://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
Proc Nr2ABC
Paramètres numéro!
Déclarer Wert$,reste%
Tandis que numéro! > 0
reste% = numéro! Mod 26
numéro! = numéro! \ 26
Si reste% = 0
numéro! = numéro! -1
reste% = 26
EndIf
Cas reste% > 0:Wert$ = Chr$(reste% + 64) + Wert$
Wend
Retour Wert$
ENDPROC
Proc ABC2Nr
Paramètres Text$
Déclarer numéro!,somme!,B$
WhileLoop Len(Text$),1,-1
B$ = $ Substr(Text$,&Boucle)
numéro! = Chr$(B$) * 26^(&Boucle-1)
somme! = somme! + numéro!
Wend
Retour somme!
ENDPROC
SubProc Créer.TextR
Retour @Contrôle("STATIC",@$(2),$50000002,@%(3),@%(4), \
@%(5),@%(6),@%(1),101, %hInstance)
ENDPROC
Proc Text_setzen
Paramètres cb&,txt&,txt1&
Déclarer Text$,Ergebnis!
Text$ = GetText $(txt&)
SetText txt1&,Str$((GetCurSel(cb&)) * Val(Text$))
Claire Text$
WhileLoop 0,se mettre%-1
Ergebnis! = Val(GetText $(txt1&[&Boucle])) + Ergebnis!
Text$ = Text$ + GetText $(cb&[&Boucle])
Wend
SetText txt_Ergebnis&,Str$(Ergebnis!)
SetText txt_Alphabet&,Text$
SetText txt_Nr2ABC&,Nr2ABC(Ergebnis!)
ENDPROC
Proc Button_Aktion
Paramètres btn&
Si GetText $(btn&) = "Null setzen"
SendMessage(cb&[focus%],$014E,0,0)
Text_setzen(cb&[focus%],txt&[focus%],txt1&[focus%])
SetText btn&,"Zufall"
D'autre
SendMessage(cb&[focus%],$014E,Tour(26),0)
Text_setzen(cb&[focus%],txt&[focus%],txt1&[focus%])
SetText btn&,"Null setzen"
EndIf
ENDPROC
Proc Alle_Null
Paramètres btn&
Si GetText $(btn&) = "alle zéro setzen"
WhileLoop 0,se mettre%-1
SendMessage(cb&[&Boucle],$014E,0,0)
Text_setzen(cb&[&Boucle],txt&[&Boucle],txt1&[&Boucle])
SetText btn&[&Boucle],"Zufall"
Wend
SetText btn&,"alle Zufall"
D'autre
WhileLoop 0,se mettre%-1
SendMessage(cb&[&Boucle],$014E,Tour(26),0)
Text_setzen(cb&[&Boucle],txt&[&Boucle],txt1&[&Boucle])
SetText btn&[&Boucle],"Null setzen"
Wend
SetText btn&,"alle zéro setzen"
EndIf
ENDPROC
Déclarer se mettre%
Stellen% = 10
Déclarer cb&[se mettre%],txt&[se mettre%],txt1&[se mettre%],A$,x%,b%,focushdl&,focus%,Ergebnis&
Déclarer btn&[se mettre% + 1]
b% = 118
x% = 120
Fenêtre Style 8 | 24 | 512
Fenêtre se mettre% * (b% + 24),300
SetDialogFont ~GetStockObject($11)
WhileLoop 26
a$ = a$ + Chr$(64 + &loop) + "|"
Wend
a$ = " |" + DelLast(a$,1)
MoveStrToList(a$,"|")
WhileLoop 0,se mettre%-1
cb&[&Boucle] = Créer("ChoiceBox",%hwnd,0,5 + &Boucle * x%,40,b%,160)
Créer("Tooltip",%hwnd,cb&[&Boucle],"26^" + Str$(se mettre%-1 - &Boucle))
MoveListToHandle(cb&[&Boucle])
SendMessage(cb&[&Boucle],$014E,0,0)
txt&[&Boucle] = Créer("TextR",%hwnd,»,5 + &Boucle * x%,10,b%,20)
txt1&[&Boucle] = Créer("TextR",%hwnd,»,5 + &Boucle * x%,80,b%,20)
btn&[&Boucle] = Créer("Button",%hwnd,"Zufall",5 + &Boucle * x%,110,b%,20)
Cas &Boucle = se mettre% - 1:btn&[&Boucle + 1] = Créer("Button",%hwnd,"Zufall",5 + (&Boucle + 1) * x%,110,b%,20)
Wend
Var txt_Alphabet& = Créer("TextR",%hwnd,»,5 + se mettre% * x%,40,b% + se mettre%,20)
Var txt_Ergebnis& = Créer("TextR",%hwnd,»,5 + se mettre% * x%,80,b%,20)
Var txt_Nr2ABC& = Créer("TextR",%hwnd,»,5 + se mettre% * x%,140,b%,20)
Set("Décimal",0)
WhileLoop 0,se mettre%-1
SetText txt&[se mettre%-1 - &Boucle],Str$(26^&Boucle)
Wend
Randomiser
Tandis que 1
WaitInput
focushdl& = %getfocus
WhileLoop 0,se mettre%-1
Cas focushdl& = cb&[&Boucle]:focus% = &Boucle
Si focushdl& = btn&[&Boucle]
focus% = &Boucle
EndIf
Wend
Si %clé = 2
Pause
ElseIf GetFocus(cb&[focus%])
Cas GetCurSel(cb&[focus%]) > -1:Text_setzen(cb&[focus%],txt&[focus%],txt1&[focus%])
ElseIf Clicked(btn&[focus%])
Button_Aktion(btn&[focus%])
ElseIf Clicked(btn&[se mettre%])
Alle_Null(btn&[se mettre%])
ElseIf %mousepressed = 2
CreateMenu
AppendMenu 100,"Summe kopieren"
AppendMenu 101,"Buchstaben kopieren"
TrackMenu %mousex,%mousey
Si MenuItem(100)
ClearClip
PutClip GetText $(txt_Ergebnis&)
ElseIf MenuItem(101)
ClearClip
PutClip GetText $(txt_Alphabet&)
EndIf
EndIf
Wend
ici ist encore une Auflistung:
Proc Nr2ABC
Paramètres numéro!
Déclarer Wert$,reste%
Tandis que numéro! > 0
reste% = numéro! Mod 26
numéro! = numéro! \ 26
Si reste% = 0
numéro! = numéro! -1
reste% = 26
EndIf
Cas reste% > 0:Wert$ = Chr$(reste% + 64) + Wert$
Wend
Retour Wert$
ENDPROC
Cls
ShowMax
Déclarer se mettre%[6],Wert$[6],n%,a$,b$,OrdNr&,En-tête$,s$
Claire se mettre%[]
OrdNr& = 1
Var b% = %maxx \ 27 -1
WhileLoop 26
s$ = s$ + Chr$(64 + &loop) + ";1;" + Str$(b%) + ";"
Wend
s$ = ";0;" + Str$(b%) + ";" + s$
Var l& = Créer("GridBox",%hwnd,s$,0,2,2,Width(%hwnd)-4,Height(%hwnd)-4)
WhileLoop 26^2
WhileLoop 26
B$ = B$ + Nr2ABC(OrdNr&) + "|"
Inc OrdNr&
Wend
AddStrings(l&,Str$(OrdNr&-26) + "|" + b$)
Claire b$
Titre de la fenêtre Str$(OrdNr&) + " patience - und dir jusqu'à 26^3 (" + Str$(Int(26^3)) + ")"
Wend
Titre de la fenêtre Str$(OrdNr&) + " patience - und dir jusqu'à 26^3 (" + Str$(Int(26^3)) + ") fertig!"
Tandis que 1
WaitInput
Wend
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 23.10.2011 ▲ |
| |  |
| |  | Quelque chose comme [...] ?
A B C D AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD AAA AAB AAC AAD ABA ABB ABC ABD ACA ACB ACC ACD ADA ADB ADC ADD BAA BAB BAC BAD BBA BBB BBC BBD BCA BCB BCC BCD BDA BDB BDC BDD CAA CAB CAC CAD CBA CBB CBC CBD CCA CCB CCC CCD CDA CDB CDC CDD DAA DAB DAC DAD DBA DBB DBC DBD DCA DCB DCC DCD DDA DDB DDC DDD AAAA  |
| | | | |
| |  Julian Schmidt | oui, oui c'est ca soetwas? Gibts en supplément encore une Gegenfunktion? |
| | | | |
| |  | Bestimmt.
Müsstest arrêt avec la base len(zaehleMit$) le calcul -
könntest mais aussi simple dans un liste zählen et ensuite hättest Direktzugriff statt Rechnerei. |
| | | | |
| |  Julian Schmidt | mon variante rechnet deutlich plus rapide comme IF's. ^ ^ Im Beispiel verbrauchte IF's variante 412MS et mon variante 8MS. c'est cela cinquante-fache. KompilierenMarqueSéparationcls
var time%=&GetTickCount
print "Ergebnis Variante IF:"
print "702 = "+LetterOfNumber2(702,1)
print "Rechenzeit: "+Str$(&GetTickCount-time%)+"MS"
print ""
time%=&GetTickCount
print "Ergebnis Variante Julian:"
print "702 = "+LetterOfNumber1(702,1)
print "Rechenzeit: "+Str$(&GetTickCount-time%)+"MS"
waitinput
Proc LetterOfNumber1
Parameters number%,grossschreibung%
case grossschreibung%=1 : var alphabet$="A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
case grossschreibung%<>1 : var alphabet$="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
declare text$,ausnahme%
while number%<>0
if number%<27
text$=text$+SubStr$(alphabet$,number%,",")
number%=0
else
whileloop Round(number%/26,0)
if number%=(26*&loop)
text$=SubStr$(alphabet$,IF(Val(SubStr$(Str$(number%/26),1,"."))-1>0,Val(SubStr$(Str$(number%/26),1,"."))-1,1),",")+SubStr$(alphabet$,26,",")
ausnahme%=1
Endif
Endwhile
case ausnahme%<>1 : text$=SubStr$(alphabet$,Val(SubStr$(Str$(number%/26),1,".")),",")+text$
number%=number%-(26*Val(SubStr$(Str$(number%/26),1,".")))
Endif
Endwhile
Return text$
EndProc
Proc LetterOfNumber2
Parameters number%,grossschreibung%
declare zaehler$
case grossschreibung%=1 : var alphabet$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
case grossschreibung%<>1 : var alphabet$="abcdefghijklmnopqrstuvwxyz"
whileLoop number%
zaehler$=zaehleHoch(zaehler$,alphabet$)
Endwhile
Return zaehler$
EndProc
proc zaehleHoch
parameters s$,base$,p&
case %pCount<3 : p&=len(s$)
var chp&=instr(mid$(s$,p&,1),base$)
case chp&=len(base$) : return zaehleHoch(mid$(s$,1,p&-1)+left$(base$,1)+mid$(s$,p&+1,len(s$)-p&),base$,p&-1)
return mid$(s$,1,p&-1)+mid$(base$,chp&+1,1)+mid$(s$,p&+1,len(s$)-p&)
ss=s4 href='./../../funcion-referencias/XProfan/endproc/'>endProc
peux on IF's variante verschnellern, ou bien mon Vervollständigen cela vous größere payons dans Buchstaben(jusque unendlich se mettre, Zahlen>702;ZZ) umformt? |
| | | | |
| |  Julian Schmidt | [OFFTOPIC]pourquoi antwortet niemand?[/OFFTOPIC] |
| | | | |
| |  | Probiere la fois Sleep 0 -
ist encore plus rapide et erledigt qui devoir ebenso wenig.  |
| | | | |
| |  Julian Schmidt | Si, du Scherzkeks  |
| | | | |
| |  Julian Schmidt | cela le calcul sollte relativ vite aller! Fällt euch encore une schnellere Possibilité un sauf dem selbst errechnen? Hochrechnen dauert sans équivoque trop longtemps!
cet Funktion sollte mais aussi größere payons et Buchstaben verarbeiten peut. chez meinen Funktionen ist Schluss chez AAA et 703. Mir fehlt une Strategie comment on cet Limit dans qui Hauteur, ins Unendliche treiben peux. ici la fois mon Voir le texte source: KompilierenMarqueSéparationcls
AppendMenuBar 101,"NumberOfLetter"
AppendMenuBar 102,"LetterOfNumber"
declare text$
var lbox&=Create("ListBox", %hwnd, 0, 0, 0, width(%hwnd), height(%hwnd))
whileloop 26*30
AddString(lbox&,LetterOfNumber(&loop,1))
Settext %hwnd,Str$(GetCurSel(lbox&))+" - "+GetString$(lbox&,GetCurSel(lbox&))
if menuitem(101)
text$=Input$("Letter?", "NumberOfLetter", "A")
MessageBox(text$+" = "+Str$(NumberOfLetter(text$)),"NumberOfLetter",64)
elseif menuitem(102)
text$=Input$("Number?", "LetterOfNumber", "1")
MessageBox(text$+" = "+LetterOfNumber(Val(text$),1),"LetterOfNumber",64)
Endif
SetMenuItem 0
Endwhile
while 1
waitinput
case iskey(27) : end
Settext %hwnd,Str$(GetCurSel(lbox&))+" - "+GetString$(lbox&,GetCurSel(lbox&))
if menuitem(101)
text$=Input$("Letter?", "NumberOfLetter", "A")
MessageBox(text$+" = "+Str$(NumberOfLetter(text$)),"NumberOfLetter",64)
elseif menuitem(102)
text$=Input$("Number?", "LetterOfNumber", "1")
MessageBox(text$+" = "+LetterOfNumber(Val(text$),1),"LetterOfNumber",64)
Endif
Endwhile
Proc LetterOfNumber
Parameters number%,grossschreibung%
case grossschreibung%=1 : var alphabet$="A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
case grossschreibung%<>1 : var alphabet$="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
declare text$,ausnahme%
while number%<>0
if number%<27
text$=text$+SubStr$(alphabet$,number%,",")
number%=0
else
whileloop Round(number%/26,0)
if number%=(26*&loop)
text$=SubStr$(alphabet$,IF(Val(SubStr$(Str$(number%/26),1,"."))-1>0,Val(SubStr$(Str$(number%/26),1,"."))-1,1),",")+SubStr$(alphabet$,26,",")
ausnahme%=1
Endif
Endwhile
case ausnahme%<>1 : text$=SubStr$(alphabet$,Val(SubStr$(Str$(number%/26),1,".")),",")+text$
number%=number%-(26*Val(SubStr$(Str$(number%/26),1,".")))
Endif
Endwhile
Return text$
EndProc
Proc NumberOfLetter
Parameters Number$
declare i%,alphabet$
alphabet$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
whileloop Len(Number$),1,-1
i%=i%+(InStr(Left$(Upper$(Number$),1),alphabet$)*(26*(&loop-1)))+IF(Len(Number$)=1,InStr(Left$(Upper$(Number$),1),alphabet$),0)
Number$=Del$(Number$,1,1)
Endwhile
Retour i%
ENDPROC
Lösungsansätze, Strategien? |
| | | | |
| |  | Grmpfzbl! je schrup doch: avec la base len(zaehleMit$) le calcul -
comment ici z.B.: [...] 
de Dezimal (la base 10) avec Wert 88 trop la base 26 ergibt Wert 3A -
3A müsstest ensuite wiederum comme String interpretieren wobei 3 Buchstabe C wäre et cela A wäre cela J - ergo: CJ.
Zurück genauso simple CJ ensuite wieder comme String betrachtet dans 3A konvertiert comme la base 26 pour la base 10 gerechnet ergibt 88.
si Du cela ensuite hinbekommen la hâte et es ensuite toujours trop lente ist ensuite konvertiere je Dir cela aussi pour asm dans un nProc. |
| | | | |
| |  Julian Schmidt | iF (12.10.11)
3A müsstest ensuite wiederum comme String interpretieren wobei 3 Buchstabe C wäre et cela A wäre cela J - ergo: CJ.
pourquoi wäre cela A cela J? quoi wäre ensuite zum Beispiel cela B, un K? ou bien cela Z un I? alors chacun Buchstabe um 9 se mettre versetzt? dans quoi pour un Zahlensystem wird cela den generell konvertiert? |
| | | | |
| |  | simple linear:
123456789 10 123456789 A ABCDEFGHI J  |
| | | | |
|
répondreOptions du sujet | 29.973 Views |
Themeninformationencet Thema hat 4 participant: |