AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm Hilfe

Ein Thema von boxer123 · begonnen am 18. Okt 2011 · letzter Beitrag vom 30. Okt 2011
Antwort Antwort
Seite 6 von 17   « Erste     456 7816     Letzte »    
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#51

AW: Programm Hilfe

  Alt 23. Okt 2011, 12:21
Das bedeutet also, dass Dein Vergleich falsch ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#52

AW: Programm Hilfe

  Alt 23. Okt 2011, 12:25
Mit "oder so" können wir nichts anfangen.

Eine ordentliche Fehlermeldung wäre schon angebracht.


Zitat:
Das bedeutet also, dass Dein Vergleich falsch ist.
Man könnte ja mal im Debugger das Ganze Schritt für Schritt durchgehen.
Und mit einer ordentlichen Codeausrichtung sagt es eigentlich auch schon alles.
$2B or not $2B

Geändert von himitsu (23. Okt 2011 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#53

AW: Programm Hilfe

  Alt 23. Okt 2011, 12:29
Ich empfehle folgende Lektüre: http://de.wikipedia.org/wiki/Bubblesort. Da ist sogar eine kleine Animation zum Nachvollziehen dabei. Alternativ gibt es auch in der DP entsprechende Codes/Tutorials zum Thema Sortieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#54

AW: Programm Hilfe

  Alt 23. Okt 2011, 12:53
Hab‘s mal durchgespielt. Das wird so nicht funktionieren, da du die Differenz in einer repeat until Schleife immer neu berechnen und sortieren mußt und diese auch mal nur eine dreistellige Zahl sein kann. Die mod div Variante war da eleganter (speichert z.B. 483 als 0483) oder du überprüfst die Länge von Differenz selbst und füllst entsprechend mit Nullen auf.
  Mit Zitat antworten Zitat
boxer123

Registriert seit: 18. Okt 2011
96 Beiträge
 
#55

AW: Programm Hilfe

  Alt 23. Okt 2011, 12:55
ich versteh eins nicht wir wissen ja das ist eine 4stellige zahl ist. Wieso also repeat machen wir das doch mit der for schleife
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#56

AW: Programm Hilfe

  Alt 23. Okt 2011, 13:15
Hast du doch in #1 geschrieben, so oft wiederholen bis das Ergebnis der vorletzten Iteration dem Ergebnis der letzten Iteration entsprich (also 6174).

Delphi-Quellcode:
function GetFirstKaprekarsConstant(const Value: int64): int64;
var
  T, MinValue, MaxValue, PrevResult: int64;
  Number: array [1..10] of int64;
  I, J, N, Count: integer;
begin
  Result:= 0;
  N:= Length(IntToStr(Value));
  if (N in [3, 4, 6, 8, 9, 10]) and (Value > 0) then
  begin
    Result:= Value;
    Count:= 0;
    repeat
      PrevResult:= Result;
      for I:= 1 to N do
      begin
        *** Number[I] berechnen;
      end;
      *** Number sortieren
      *** MinValue und MaxValue berechnen
      Result:= MaxValue-MinValue;
    until (Result = PrevResult) or (Count > 1000);
    if Count > 1000 then Result:= 0; // Kein Ergebnis gefunden
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Value: int64;
begin
  Edit2.Text:= '';
  if TryStrToInt64(Trim(Edit1.Text), Value) then
    Edit2.Text:= IntToStr(GetFirstKaprekarsConstant(Value));
end;
  Mit Zitat antworten Zitat
boxer123

Registriert seit: 18. Okt 2011
96 Beiträge
 
#57

AW: Programm Hilfe

  Alt 23. Okt 2011, 13:19
Nein, nicht bis zum letzten, sondern nur einmal also. Delphi
Also ich muss ein Programm schreiben. Das Programm soll,
2 Edit Fenster
1 Button

Also wenn man eine 4 stellige Zahl im edit fenster eingegeben hat und dann auf den Button klickt soll er folgendes machen,
also er soll z.b 4123 einmal nach der größe und einmal nach der kleinsten ordnen
Größte: 4321 Kleinste: 1234

Und von den beiden die Differenz bilden.

4321-1234=3087
Und diese Zahl soll er im 2.Edit Fenster ausgeben.



edit: sorry

Geändert von boxer123 (23. Okt 2011 um 13:22 Uhr) Grund: sorry
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#58

AW: Programm Hilfe

  Alt 23. Okt 2011, 13:21
Das hättest Du aber auch sagen können, dass die Aufgabenstellung mittlerweile vereinfacht wurde.

[edit] Trotzdem bleibe ich dabei: Das mit String-Operationen lösen zu wollen ist in meinen Augen suboptimal. [/edit]

[edit2] Fassen wir das noch einmal zusammen:
- 4-stellige Zahl wird eingegeben (als String, klar)
- dieser String/diese Zahl muss nun in 4 Einzelteile gesplittet werden
- nun werden die Teile sortiert (aufsteigend für Minimum, absteigend für Maximum)
- anschließend wird das Minimum vom Maximum subtrahiert und dieses Ergebnis ausgegeben

Das sollte sich doch mit den geposteten Hilfestellungen bewerkstelligen lassen.

P.S.: Wenn man das Maximum oder Minimum bereits ermittelt hat, kann man das ja auch "umdrehen", um das Gegenteil zu ermitteln, ohne neu sortieren zu müssen. [/edit2]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (23. Okt 2011 um 14:34 Uhr)
  Mit Zitat antworten Zitat
boxer123

Registriert seit: 18. Okt 2011
96 Beiträge
 
#59

AW: Programm Hilfe

  Alt 23. Okt 2011, 14:31
ER zerlegt die zahl.
Also wie soll ich fortsetzen, das mit dem ordnen.

Bubblesort. Ich weiß das es eine 4Stellige zahl ist. Also d.h. for i:= 1 to 4 do


Delphi-Quellcode:
var
  Form1: TForm1;
  i,j,zahl1,zahl2,differenz:integer;
  park,spielplatz,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;
repeat
for i:=1 to 4-1 do
for j:=i+1 to 4 do
if a[i] > a[i+1] then begin
park:=a[i];a[i]:=a[i+1];a[i+1]:=park;
until park=i>1
end;
edit so?

Geändert von boxer123 (23. Okt 2011 um 14:45 Uhr) Grund: end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#60

AW: Programm Hilfe

  Alt 23. Okt 2011, 14:37
Nein, da Du bei einem Wert von i = 4 hinter dem Array liest. Außerdem brauchst Du mehrere Durchläufe, einer allein setzt ja nur den größten Wert ans Ende. Schau Dir doch den Wikipedia-Artikel noch einmal an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 17   « Erste     456 7816     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz