Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - einfaches Programm


seulberg1 - So 06.12.09 19:56
Titel: einfaches Programm
Hey,

ich hab erst seit einer Woche Delphi nur jetzt ein mathematischen Problem zu lösen, von dem ich glaube, dasses gut mit dem Programm zu lösen wäre, aber ich leider nicht die Befehle kenne wie es anzustellen wäre.

Also folgendes:

Ich hab eine 6stellige Zahl, von der nehme ich die letzte Ziffer weg uns schreibe sie an den anfang

z.B. 450298 wird zu 845029.
und wenn diese neue Zahl das vierfache der alten ist, würde ich sie gerne in eine Listbox schreiben....

das würde ich jetzt gerne für alle ganzzahligen n von 100000-500000 ausprobieren und dann die Liste angucken..

ist das schwierig zu programmieren??
wie gehts das??

wäre klasse wenn ihr mir helfen könntet....bin nämlich noch in dem Stadium wo man sich über variablendefinitionen und strtofloat gedanken macht:D

lg=)


Georg08 - So 06.12.09 20:31

ich hätte das auf die schnelle jetzt so gelöst:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var
  s, s2 : string;
begin

s := Edit1.Text;
s2 := copy(s, 61)+copy(s, 15);
if ( StrToInt(s)*4 = StrToInt(s2) ) then
begin
  //Die Zahl ist das vierfache von der ursprünglichen
  ListBox1.Items.Add(s);
end
else
  //die Zahl ist NICHT das vierfaceh von s
end;

EDIT:
Jetzt müsste es gehen


FinnO - So 06.12.09 20:38

wenn man den string jetzt sinngemäß zusammensetzen würde...


Delphi-Quelltext
1:
s2 := s[length(s)] + copy(s,1,length(s)-1);                    


Marc. - So 06.12.09 20:38

Hey und :welcome: im Forum!

Es geht auch komplett ohne Strings (dafür aber mit der Unit Math):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  numA, numB: Integer;
  lastFigure: Integer;
begin
  numA := 12345// Irgendeine Zahl ;-)
  lastFigure := numA mod 10// Modulo gibt den Rest einer Division zurück. 12345 mod 10 = 1234 Rest 5!
  // die gilt es nun an den Anfang der Zahl zu setzen. Dazu brauchen wir allerdings erst einmal die Anzahl der Stellen, die wir mit Log10 bestimmen.
  // Power(b,e); berechnet die Potenz von b zu e (b^e), also in unserem Fall 10^(Anzahl der Stellen + 1). 
  //Das nun mit der letzten Stelle multipliziert und zu der Zahl addiert ergibt 512345. Ein "Div 10" (Division durch 10) stellt dann unser Endergbenis dar: 51234.
  numB := (numA + Trunc(Power(10,Trunc(Log10(numA)) + 1) * lastFigure)) div 10; .

Ich werde dir das gleich noch etwas entzerren. Dann sieht am man es als Anfänger vielleicht besser. :)


Bergmann89 - So 06.12.09 20:46

hey,

@Georg08:
damit nimmst du aber nich die letzte Ziffer an die 1. Stelle!

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var i: Integer;
var str1, str2: String;

for i := 100000 to 100050 do begin
  str1 := IntToStr(i);
  str2 := str1[6]+str1[1]+str1[2]+str1[3]+str1[4]+str1[5];
  if (StrToInt(str2)*4 = StrToInt(str1)) then
    ListBox1.Items.Add(str1+', '+str2);
end;

aber so ne Zahl gibts net...

€: zu langsam ^^
die idee nur mit den Zahlen zu rechnen is auch nich schlecht...

Mfg Bergmann