Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Array + Stringgrid !!!


gasgos - Mi 27.02.08 14:57
Titel: Array + Stringgrid !!!
Hallo,
hab folgendes Program zuschreiben und komme einfach nicht mehr weiter!

Aufgabenstellung:
Erstelen Sie ein Delphi-Pro., welches 100 Zufallszahlen im Bereich 1 - 250 erzeugt, diese Zufallszahlen auf einem Datenfeld abspeichert und in eine Stringgrid-Komponente ausgibt!Anschließend sollen alle GERADEZaheln in eine 2. Stringgrid auf selbe stelle des 1.Grids angezeigt werden und die ungeraden ausgeblendet werden.

so soweit bin ich gekommen:
habe die Zufallszahlen erzeugt und in 2 StringGrids ausgeben lassen ... aber egal wie ich vor gehe kann ich die ungeradezahlen in den 2.Grid nicht ausblenden ... als Tipp solle mans mit DIV und MOD die Sache realisieren.


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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Tabelle: TStringGrid;
    TabellePositiv: TStringGrid;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  daten : array [1..100of integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var spalte, zeile, i :integer;
begin
  randomize;
 for i:=1 to 100 do
  daten[i]:=random (250)+1 ;
  i:=1;
 for spalte:=0 to 9 do
 for zeile:=0 to 9 do
  begin
  tabelle.Cells[spalte,zeile]:=inttostr(daten[i]);
  i:=i+1;
  end;
    randomize;
 for i:=1 to 100 do
  daten[i]:=random (250)+1 ;
  i:=1;
 for spalte:=0 to 9 do
 for zeile:=0 to 9 do
  begin
  TabellePositiv.Cells[spalte,zeile]:=inttostr(daten[i]);
  i:=i+1;
  end;
 end;
end.


bitte um Hilfe.
danke im voraus!


Kroko - Mi 27.02.08 15:01

(a) Wenn alle Zufallszahlen zwischen 1 und 250 liegen sollen, gibt es nur Positive!
(b) Randomize nur einmalig aufrufen
(c) Warum füllst Du Daten zweimal?
(d) MOD und DIV haben nichts mit negativ zu tun!
(e) LIES noch mal die Aufgabenstellung!


gasgos - Mi 27.02.08 15:03

mh wenn ich das laufen lasse erscheinen aber sowohl gerade alsoauch ungerade unzwar in beiden SGrids an den selben Stellen!


Kroko - Mi 27.02.08 15:05

EDIT 1. Beitrag


Wo Sollen die den herkommen
Random(250)*1 erzeugt eine Zufallszahl zwischen 1 und 250;


gasgos - Mi 27.02.08 15:19

also,
mein Lehrer hat das 2mal als übersicht aufspielen lassen ... und es funktioniert zu 100% leider mit DIV bzw MOD (ich weiß es auch nicht wie, aber das sollt ich mit hilfe von DIV bzw MOD schaffen!).
aber gut sollten wir/ich nicht drauf kommen werd ich nächste Woche die Lösung erhalten und hier Posten!

nochmal vllt eine kleine visualisierungs hilfe!

[url=http://img521.imageshack.us/my.php?image=gridhb6.jpg]Hier geht es zum Screen[/url]

bloß in den unteren Grid sollen eben nur die Positivenzahlen erscheinen.


Kroko - Mi 27.02.08 16:05

Wo siehst Du denn im Screen negative Zahlen???

Das ist normalerweise die mit dem Minus davor, also -1; -2 ; -3 usw


gasgos - Mi 27.02.08 16:10

:( tut mir schreklich leid -.- ... habe durch lange probieren und überlegungen "gerade" mit "positiv" und "ungerade" mit "negativ" verwechselt :( ... also nochmal oben editiert!
hoffe das es jetzt klar ist was ich erreichen soll.
nochmals sry


Kroko - Mi 27.02.08 16:32

na ja denn,

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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Tabelle: TStringGrid;
    TabellePositiv: TStringGrid;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  daten : array [1..100of integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var spalte, zeile, i :integer;
begin
  randomize;
 for i:=1 to 100 do
  daten[i]:=random (250)+1 ;
  i:=1;
 for spalte:=0 to 9 do
 for zeile:=0 to 9 do
  begin
    tabelle.Cells[spalte,zeile]:=inttostr(daten[i]);
    if (Daten[I] mod 2)=0 then // = 2 gerade; =1 ungerade
      TabellePositiv.Cells[spalte,zeile]:=inttostr(daten[i]);
  i:=i+1;
  end;
  i:=1;
end.


gasgos - Mi 27.02.08 16:35

mh vielen dank,
mein fehler war das ich immer mit 10 modiert habe und auf der suche nach etwas war was das alles überprüft :( .
danke schön


Kroko - Mi 27.02.08 16:52

Bitte!

Ich habe es noch ein bisschen optimiert, :lol: