Autor Beitrag
seulberg1
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 06.12.09 19:56 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: So 06.12.09 20:31 
ich hätte das auf die schnelle jetzt so gelöst:
ausblenden 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


Zuletzt bearbeitet von Georg08 am So 06.12.09 20:38, insgesamt 1-mal bearbeitet
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 06.12.09 20:38 
wenn man den string jetzt sinngemäß zusammensetzen würde...

ausblenden Delphi-Quelltext
1:
s2 := s[length(s)] + copy(s,1,length(s)-1);					
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 06.12.09 20:38 
Hey und :welcome: im Forum!

Es geht auch komplett ohne Strings (dafür aber mit der Unit Math):
ausblenden 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. :)


Zuletzt bearbeitet von Marc. am So 06.12.09 20:50, insgesamt 1-mal bearbeitet
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 06.12.09 20:46 
hey,

@Georg08:
damit nimmst du aber nich die letzte Ziffer an die 1. Stelle!
ausblenden 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

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^