AGB  ·  Datenschutz  ·  Impressum  







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

Arrays vertauschen

Offene Frage von "jonsen2.0.0.9"
Ein Thema von jonsen2.0.0.9 · begonnen am 27. Jan 2010 · letzter Beitrag vom 29. Jan 2010
Antwort Antwort
Seite 2 von 2     12   
jonsen2.0.0.9

Registriert seit: 5. Dez 2009
67 Beiträge
 
Delphi 7 Personal
 
#11

Re: Arrays vertauschen

  Alt 28. Jan 2010, 15:46
hmmm...DANKE für eure tipps...

er hat die aufgabe ein wenig geändert -.-

jetzt sollen wir array[1..100] mit zufallszahlen von 1-1000 beschreiben.

und dann immer die nebeneinander liegenden tauschen.

hab zu folgender lösung eine frage.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  ar:array[1..100] of integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure fuellen();
Var i:integer;
begin
for i:=1 to 100 do
 ar[i]:=random(1000)+1;
end;

procedure tauschen() ;
Var i,j:integer;
 i2:integer;
 temp:integer;
begin
i:=0;
j:=0;
for i2:=1 to 99 do
 begin
 i:=i2;
 j:=i2+1;
 temp:=ar[i];
 ar[i]:=ar[j];
 ar[j]:=temp;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var i:integer;
begin
 fuellen;
 tauschen;
for i:=0 to 99 do
 begin
 listbox1.Items.Delete(i);
 listbox1.items.Add(inttostr(ar[i]));
 end;
end;

end.
dies müssen wir mit den proceduren fuellen und tauschen machen.

diese programm müsste doch wirklich tauschen?

also funktioniern, so wie es soll.

nachdem ich die anderen zwei teilaufgaben gelöst hab werd ich euch wieder schreiben

DANKE nochmal

MFG
Jonsen
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Arrays vertauschen

  Alt 28. Jan 2010, 15:47
Zitat von blink182:
Okay vllt nicht sehr rechenzeit optimiert, dafür weniger speicherplatz

ja das macht wenig Sinn... Muss man halt checken, dass j<>i ist.
Aber selbe zahlen kann man ja trotzdem vertauschen ;-)

11 xor 11 = 00
00 xor 11 = 11
00 xor 11 = 11

aber okay, der dreieckstausch ist da sinnvoller. Ist auch das was man normal macht
Nein und nochmal nein.
Das erste Nein zu "Aber selbe zahlen kann man ja trotzdem vertauschen ;-)"
Bei deiner obigen Darstellung
11 xor 11 = 00
00 xor 11 = 11
00 xor 11 = 11
machst du einen Denkfehler. Tatsächlich wird (wenn j=i ist) folgendes gerechnet.
11 xor 11 = 00
00 xor 00 = 00
00 xor 00 = 00
Das zweite Nein zu "dafür weniger speicherplatz"
Die zusätzliche lokale Variable wird überhaupt nicht angelegt, weil (bei eingeschalteter Optimierung) ein CPU-Register für die Zwischenspeicherung verwendet wird. Auch bei ausgeschalteter Optimierung kostet die zusätzliche Variable im Prinzip keinen Speicherplatz, weil sie auf dem Stack angelegt wird, und der ist (unabhängig von lokalen Variablen) eh' schon vergeben.
Aber : bei ausgeschalteter Optimierung ist (in Bytes gemessen) deine Prozedur deutlich länger und das kostet dann tatsächlich Speicherplatz.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Arrays vertauschen

  Alt 28. Jan 2010, 15:56
Und wieder zurück zum Thema *g*. @Jonsen: Du solltest Dir gleich eine nachvollziehbare Einrückung angewöhnen, dann können auch andere Deinen Code besser lesen. Und ich persönlich würde das etwas anders machen:
Delphi-Quellcode:
procedure tauschen(var a, b: integer);
var temp: integer;
begin
  temp := a;
  a := b;
  b := temp;
end;

//der Aufruf könnte dann so aussehen
for i := Low(ar) to High(ar) - 1 do
  tauschen(ar[i],ar[i + 1]);
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
jonsen2.0.0.9

Registriert seit: 5. Dez 2009
67 Beiträge
 
Delphi 7 Personal
 
#14

Re: Arrays vertauschen

  Alt 28. Jan 2010, 16:30
wieso high(ar) -1

wenn ich high richtig verstehe gibt das wenn mein array von 1-100 gehe doch 100 zurück oder?

wieso muss dann die minus eins dahin?

UND

tauschen(ar[i],ar[i + 1]); so rufst du ja auf.

aber die ar[i],ar[i+1] sind doch dann eigentlich wenn ich ne procedur aufrufe variablen die vorher

Delphi-Quellcode:
procedure tauschen() ; //in der klammer hinter tauschen stehen müssten
Var i,j:integer;
i2:integer;
temp:integer;
begin
i:=0;
j:=0;
for i2:=1 to 99 do
begin
i:=i2;
j:=i2+1;
temp:=ar[i];
ar[i]:=ar[j];
ar[j]:=temp;
end;
end
stimmt doch oder?

wenn nich...sorry aber so hab ichs gelernt .

DANKE trotzdem

MFG
Jonsen
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Arrays vertauschen

  Alt 28. Jan 2010, 16:36
Zitat von jonsen2.0.0.9:
jetzt sollen wir array[1..100] mit zufallszahlen von 1-1000 beschreiben.
[delphi]ar:array[1..100] of integer;
Wer macht denn sowas?
Smallint/Word reicht doch völlig aus. Die restlichen 2 Byte sind doch überflüssig.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#16

Re: Arrays vertauschen

  Alt 28. Jan 2010, 17:23
Zitat von implementation:
Wer macht denn sowas?
Smallint/Word reicht doch völlig aus. Die restlichen 2 Byte sind doch überflüssig.
Lediglich fortgebildete Informatiklehrer, die von der Materie nicht viel Ahnung haben und für die eine Zahl par tout gleich "Integer" ist. Das Thema hatten wir hier im Forum schon irgendwo, also bitte nicht den Thread missbrauchen, auch wenn ich gerade dazu eingeladen habe.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Arrays vertauschen

  Alt 29. Jan 2010, 08:07
Zitat von jonsen2.0.0.9:
wieso high(ar) -1

wenn ich high richtig verstehe gibt das wenn mein array von 1-100 gehe doch 100 zurück oder?

wieso muss dann die minus eins dahin?
Richtig, und da wir beim Tauschen um 1 inkrementieren
Zitat:
tauschen(ar[i],ar[i + 1]);
, müssen wir vorher dafür sorgen, dass wir keine Bereichsüberschreitung provozieren
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 2 von 2     12   


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 07:22 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