![]() |
AW: Programm Hilfe
Ich geb zu das es nicht schön ist, aber es tut's:
Delphi-Quellcode:
Das geht ganz gut ohne mod und div und kann ach mit 2,3,4,5,... stelligen Zahlen umgehen.
var
i : integer; liste: tstringlist; zahl1,zahl2,tmpzahl : string; zahlgros, zahlklein, differenz, altdifferenz : integer; cnt : integer; begin liste:=tstringlist.Create; tmpzahl:=edit1.Text; differenz:=0; cnt:=0; repeat altdifferenz:=differenz; (* ** ) liste.clear; ( * ************* *) for i:=1 to length(tmpzahl) do dummy1.add(tmpzahl[i]); dummy1.Sort; zahl1:=''; zahl2:=''; for i:=0 to liste.Count-1 do begin zahl1:=zahl1+dummy1[i]; zahl2:=dummy1[i]+zahl2; end; zahlgros:=strtoint(zahl2); zahlklein:=strtoint(zahl1); differenz:=zahlgros-zahlklein; memo1.Lines.Add(tmpzahl+' / '+zahl2+'-'+zahl1+' = '+inttostr(differenz)); tmpzahl:=inttostr(differenz); inc(cnt); until (altdifferenz=differenz) or (cnt >20); liste.Free; end; Gruß K-H |
AW: Programm Hilfe
@p80286:
Zitat:
So, wie der Code in deinem Beitrag steht, wird er nicht funktionieren. Warum?: Weil du auf eine StringList "dummy1" zugreifst, die nicht deklariert ist. Ich hab das ganze auch mal durchgespielt und bemerkt, daß bei allen 4-stelligen Zahlen 6174 als sich wiederholende Differenz herauskommt. Also hab ich mal Tante Google bemüht und bin auf diesen Link gestoßen. ![]() So sieht mein Code aus: (das in meinem Code angesprochene "meResult" ist ein TMemo)
Delphi-Quellcode:
PROCEDURE TForm1.Work(ss:string);
var r,s,t:string; len,i,j,res,old:integer; h:char; begin res:=-1; len:=Length(ss); SetLength(t,len); repeat old:=res; s:=ss; // s sortieren for i:=1 to len-1 do for j:=i+1 to len do if s[i]>s[j] then begin h:=s[i]; s[i]:=s[j]; s[j]:=h; end; // s reverse in t stellen for i:=1 to len do t[len+1-i]:=s[i]; res:=StrToInt(t)-StrToInt(s); // res als String mit führenden Nullen in r Str(res:len,r); for i:=1 to len do if r[i]=' ' then r[i]:='0' else break; meResult.Lines.Add(ss+' : '+t+' - '+s+' = '+r); ss:=r; until (res=old) or (meResult.lines.count>30); end; |
AW: Programm Hilfe
Jo da hast Du recht,
mit copy und paste bekommst Du den nicht zum laufen. Aber jeder der ein wenig mit Pascal umgehen kann findet den Fehler sofort. Gruß K-H Edith: interessant, der Link, wenn man's mit 5stelligen Zahlen macht hast Du eine Endlosschleife die sich um drei Werte bewegt. |
AW: Programm Hilfe
Closed
|
AW: Programm Hilfe
Mach doch mal einen
![]() [edit] Kleiner Tipp: man kann ja auch von hinten nach vorn kopieren, wenn man schon unbedingt Strings verwenden will. [/edit] |
AW: Programm Hilfe
Was ergibt hier kein sinn?
Delphi-Quellcode:
var
Form1: TForm1; i,j,zahl1,zahl2,differenz:integer; park,zahltext,zahltexteins,zahltextzwei:string; doppelt:boolean; a,b:array[1..4] of string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin zahltext:=edit1.text; for i:=1 to 4 do begin //zerlegung a[i]:=copy(zahltext,i,1); b[i]:=copy(zahltext,i,1); end; // aufsteigend sortieren for j:=1 to 4 do if a[i]>=a[j] then begin park:=a[i];a[i]:=a[j];a[j]:=park; zahltexteins:=zahltext;// was in zahltext steht in zahltexteins speichern end; // absteigend sortieren if b[i]<=b[j] then begin park:=b[i];b[i]:=b[j];b[j]:=park; zahltextzwei:=zahltext; // was in zahltext steht in zahltextzwei speichern end; differenz:=Strtoint(zahltexteins)-Strtoint(zahltextzwei);// differenz der beiden zahlen edit2.text:=inttostr(differenz);// ausgabe end; end. |
AW: Programm Hilfe
Was ist für dich der Sinn?
Bzw., wo ist das Problem? Schonmal etwas von Codeformatierung/Codeausrichtung gehört? Dabei würde dir auffallen, daß dir absteigende sortierung nicht sortieren kann, da sie sich nicht innerhalb der Schleife befindet. Und wozu
Delphi-Quellcode:
und das Andere innerhalb der Schleife?
zahltexteins:=zahltext
Es verändert sich darin doch garnicht. Was machst du mit den Werten in a und b? (nach der Sortierung) Und warum die globalen Variablen, wo sie doch nur lokal (innerhalb der Prozedur) gnutzt werden |
AW: Programm Hilfe
Ich denke es gibt kein problem in dem quelltext, aber wenn ich starte und eine 4stellige zahl im edit fenster eingebe, dann kommt project1 fehler oder so.
ich habe es mir so vorgestellt, wenn er was in zahltext drin ist geordnet hat,das soll er in zahltexteins speichern. |
AW: Programm Hilfe
Hast Du Dir einmal angeschaut, welchen Wert i nach der ersten Schleife hat?
|
AW: Programm Hilfe
ah ja ihn wurde noch kein wert zugewiesen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz