Autor Beitrag
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Mo 08.09.08 22:03 
Also der Text vom letzten Programm wurde überarbeitet, und die Zahlen sollen aus dem Array ganz gelöscht werden, und nicht mit einer "0" ersetzt werden.
Das heißt die Zahl nach der Gelöschten muss dann auch an die Stelle der Gelöschten rutschen.
Außerdem sollen die Zahlen per Button nach Größe von klein nach groß sortiert werden.

Code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button2: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button3: TButton;
    Edit5: TEdit;
    Button4: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zahlen : array [1..1000of integer;
  i: integer;
  zaehler : integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);   // Zahlen werden gespeichert
begin
zahlen [i]:= StrToInt (edit1.text);
ListBox1.Items.Add (IntToStr(zahlen[i]));
i:= i+1;
zaehler := zaehler +1 ;
Label1.Caption:= ' Sie haben ' + IntToStr (zaehler) + '  Zahlen gespeichert';
end;

procedure TForm1.FormCreate(Sender: TObject);  // Zaehler Startzahl
begin
 zaehler := 0;
end;

procedure TForm1.Button2Click(Sender: TObject);  // Filter mit Radiobutton anwenden
begin
  ListBox1.Clear;
  if RadioButton1.Checked then
   for i := 1 to zaehler do
                        if (zahlen[i] >= StrToInt(Edit2.Text)) and  (zahlen[i] <= StrToInt(Edit3.Text)) then ListBox1.Items.Add(IntToStr(zahlen[i]));
   for i := 1 to zaehler do
                        if (zahlen[i] >= StrToInt (Edit2.Text)) and (zahlen[i] <= StrToInt(Edit3.Text)) then Listbox1.Items.Add(IntToStr(zahlen[i]));

end;

procedure TForm1.Button3Click(Sender: TObject);   // Suchfunktion
  var
  i, suchzahl : integer;
  gefunden : boolean;
  zahlen_sind_gleich : boolean;
begin
  gefunden := false;
  suchzahl := StrToInt(Edit4.Text);
  for i := 1 to zaehler do
  begin
  zahlen_sind_gleich := zahlen[i] = suchzahl;
  if zahlen_sind_gleich then
                        begin
                        gefunden := true;
                        ShowMessage ('Die Zahl '+Edit4.Text+' wurde an der '+IntToStr(i)+' gefunden.');
                        end;
  end;

  if not gefunden then ShowMessage ('Die Zahl wurde nicht gefunden.');

end;

end.


Ich hoffe auf eure Hilfe, will aber keinen komplett abgeänderten Code haben sondern eine
Erklärung und die Lösungswege.

Gruß
ByteKiller
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 32

Win Vista, XP Pro SP2
Delphi 7 (Delphi 2005)
BeitragVerfasst: Mo 08.09.08 22:44 
hallo

ich habe mal aus meiner infozeit in der schule n paar sortier algorithmen rausgesucht, vll. hilfts ja.
aber ich glaube es gibt auch bestimmte funktionen von delphi für arrays (hab schon lange nix mehr mehr delphi gemacht)
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
//NICH GANZ DELPHI 'FeldT' is zB das array mit den zahlen drin und 'n' is glaube die anzahl
PROCEDURE bubble(n:INTEGER;VAR a:FeldT);
VAR i,j,h : INTEGER;
BEGIN
  FOR i:=n-1 DOWNTO 1 DO
    FOR j:=1 TO i DO
      IF a[j]>a[j+1THEN
        h:=a[j];
        a[j]:=a[j+1];
        a[j+1]:=h
      END
   END;
  END;
END bubble;

PROCEDURE insertion(n:INTEGER;VAR a:FeldT);
VAR i,j,h : INTEGER;
BEGIN
  FOR i:=2 TO n DO
    h:=a[i];
    j:=i-1;
    WHILE (h<a[j]) & (j>0DO
      a[j+1]:=a[j];
      j:=j-1;
    END;
    a[j+1]:=h;
  END;
END insertion;


PROCEDURE selection(n:INTEGER;VAR a:FeldT);  
VAR i,j,k,h : INTEGER;
BEGIN
  FOR i:=1 TO n-1 DO
    k:=i;
    h:=a[i];
    FOR j:= i+1 TO n DO
      IF a[j]<h THEN
        k:=j;
        h:=a[j]
      END;
    END;
    a[k]:=a[i];
    a[i]:=h
  END;
END selection;



PROCEDURE quick(VAR a:FeldT;l,r:INTEGER);  
VAR i,j,x,w:INTEGER;
BEGIN
  i:=l;  
  j:=r;  
  x:=a[(l+r) DIV 2]; 
  REPEAT
    WHILE a[i]<x DO  
      i:=i+1;
    END;  
    WHILE x<a[j] DO  
      j:=j-1;
    END;  
    IF i<=j THEN    
      w:=a[i];      
      a[i]:=a[j];
      a[j]:=w;
      i:=i+1
              
      j:=j-1  
    END
  UNTIL i>j;    
   IF l<j THEN  
                
    quick(a,l,j);
    END;
  IF i<r THEN   
                
    quick(a,i,r)
    END;
END quick;


das mit dem löschen hab ich nich verstanden...
- willst du eine zahl löschen und der rest der zahlen soll nach rutschen?
-> dann speichere die pos. der gelöschten zahl und lass alle dahinter mit einer for schleife nachrutschen
- willst du eine zahl löschen und gleich ne neue einfügen... noch einfacher...
-> pos. spichern und dort wieder die neue einfügen ... hoffe hab dich nich falsch verstanden

mfg
bytekiller

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Einloggen, um Attachments anzusehen!
Dude566 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Di 09.09.08 09:45 
Naja das hilft mir nicht so wirklich weiter, ich bin noch Anfänger und
soweit sind wir noch nicht.
Kann mir denn jemand helfen, auf einer einfachen Anfänger Methode basierend.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Kann mir hier denn keiner helfe?
Das kann doch nicht sein!
Bitte helft mir es ist dringend.