Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » Dynamisches Array und Ausgabe in StringGrid » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Dynamisches Array und Ausgabe in StringGrid
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Rivago
Grünschnabel


Dabei seit: 01.06.2015
Beiträge: 5

Dynamisches Array und Ausgabe in StringGrid Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Wink

Hab hier eine Aufgabe, siehe Bild:

code:
1:
fs2.directupload.net/images/150601/6sxud3zn.png


Programmierung mit Pascal unter Lazarus (Version 1.2.6)..

Momentan sieht mein Programm so aus:

code:
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:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
unit Unit1;
  {$mode objfpc}{$H+}
  interface
  uses
     Classes, SysUtils, FileUtil, TAGraph, Forms, Controls, Graphics, Dialogs, StdCtrls,Grids, Buttons, GUI_Unit_xyChart;

  type    { TForm1 }

    TForm1 = class(TForm)
     BitBtn1: TBitBtn;
     BU_EVA: TButton;
     Chart1: TChart;
     ED_Anzahl: TEdit;
     Label1: TLabel;
     Label2: TLabel;
     Label3: TLabel;
     Label4: TLabel;
     Label5: TLabel;
     Label6: TLabel;
     Label7: TLabel;
     Label8: TLabel;
     Label9: TLabel;
     LB_Erg: TListBox;
     SG_Erg: TStringGrid;
     procedure BU_EVAClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);

   private
     { private declarations }
   public     { public declarations }
   end;

  var
     Form1: TForm1;

  implementation

  {$R *.lfm}

  { TForm1 }

  var
     y1 : Array [0..99] of Double;
     y2 : Array [0..99] of Double;
     dt : Array [0..99] of Double; //Array, damit t ausgegeben werden kann                    
                                   //dabei ist dt = t = t + sw  

procedure TForm1.FormCreate(Sender: TObject);
begin   
  Form1.Caption := 'Test der gui_unit_xyChart';   
  BU_EVA.Caption := 'Berechnung';   

  //Testdaten   
  ED_Anzahl.Text := '20';    
  
  //Listbox leeren   
  Form1.LB_Erg.Clear;    

  //StringGrid leeren   
  Form1.SG_Erg.Clear;   

   //Diagramm leeren   
  //Form1.Chart1.Clear;  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! funktioniert so nicht 
 
end; //Ende Prozedur FormCreate

  procedure TForm1.BU_EVAClick(Sender: TObject);
 //Variablen deklarieren
  var    
    Anz,          //Anz = Anzahl der Wertepaare (mind. 10, max. 100)     
      i: Integer; // i ist Zählvariable für for-Schleife    
    sw,          //sw = Schrittweite     
     t: Double; //t für Formel

begin   
//Eingabe von Anz in ED_Anzahl
Anz := StrToInt(ED_Anzahl.Text);

//Plausibilitätsprüfung, ob Anz ausreichend ist
if (Anz < 10) or (Anz > 100)   
Then ShowMessage ('Wert muss >=10 und <=100 sein!');   

//Edit-Feld ED_Anzahl zur erneuten Eingabe vorbereiten, falls Fehler bei   //Plausibilitätsprüfung entstanden ist   
Ed_Anzahl.Clear; //Edit-Feld ED_Anzahl leeren   
Ed_Anzahl.SetFocus; //Cursor in Edit-Feld ED_Anzahl setzen   

 //Berechnung   
i := 0;   
sw := 20/(Anz - 1);  
t := 0;   

for i := 0 to Anz do     
begin       
   y1[i] := sin(t);       
   y2[i] := exp(0.1*(t)) * sin(t);       
   dt[i] := t;      
    t := t + sw;  //t um die Schrittweite erhöhen    
end; //Ende for-Schleife    

//Ausgabe  
//Ausgabe für Listbox LB_Erg  
LB_Erg.Items.Add(Format('%5.2s %20.2s %20.2s', ['t', 'y1', 'y2'])); //Tabellenkopf  
for i:=0 to Anz - 1 do    
begin
    LB_Erg.Items.Add(Format('%5.2n %20.2n %20.2n', [dt[i], y1[i], y2[i]]));   
end; //Ende for-Schleife    

//Ausgabe für StringGrid SG_Erg   
........................................
........................................
........................................
 end; //Ende Prozedur BU_EVAClick  

end.



Soweit läuft es.

Mich würde mal interessieren, ob und wie ich ein dynamisches Array hinkrieg? Wie sieht da der Quellcode aus?


Des Weiteren weiß ich nicht, wie ich die Ausgabe in das StringGrid machen muss. Kann mir da jemand helfen?


Wenn wir das geschafft haben, wäre es cool, wenn mir noch jemand erklären kann, wie ich das Diagramm hinkrieg smile


Danke und Gruß
Rivago

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Rivago: 01.06.2015 19:50.

01.06.2015 19:48 Rivago ist offline Beiträge von Rivago suchen Nehmen Sie Rivago in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Delphi ist bei mir schon eine Weile her.

Ein dynamisches Array deklarierst du mit
y1 : Array of Double;
dann kannst du mit
setlength(y1, 100); die Größe festlegen.

Den Rest schaue ich mir morgen an, wenn mir keiner zuvorkommt.

__________________
Syntax Highlighting fürs Board (Link)
01.06.2015 21:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Rivago
Grünschnabel


Dabei seit: 01.06.2015
Beiträge: 5

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Also einfach so:

y1 : Array of Double;
setlenght(y1, 100);

Das wars?

Geht dieses Array dann bei 1 oder bei 0 los?

Denn ich hab ja ursprünglich so deklariert:

y1: Array [0..99] of Double;

Also von 0 bis 99.


Ist deine Version jetzt von 1 bis 100?


Danke schonmal für die Antwort smile Wink
01.06.2015 22:45 Rivago ist offline Beiträge von Rivago suchen Nehmen Sie Rivago in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ist von 0 bis 99.
Du kannst du Grenzen auch explizit angeben:
code:
1:
2:
setlength(y1, 0, 99); //von 0 bis 99
setlength(y1, 1, 100); //von 1 bis 100


edit: hier das StringGrid
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
    t : real;
begin
  StringGrid1.RowCount := 101;
  StringGrid1.Cells[0, 0] := 't';
  StringGrid1.Cells[1, 0] := 'y1';
  StringGrid1.Cells[2, 0] := 'y2';
  for i := 1 to 100 do
  begin
    t := i / 10;
    StringGrid1.Cells[0, i] := FloatToStr(t);
    StringGrid1.Cells[1, i] := FloatToStr(sin(t));
    StringGrid1.Cells[2, i] := FloatToStr(exp(0.1*t)*sin(t));
  end;
end;


__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 02.06.2015 15:56.

02.06.2015 15:24 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Rivago
Grünschnabel


Dabei seit: 01.06.2015
Beiträge: 5

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo eulersche Zahl, Danke für deine Hilfe Wink Daumen hoch
07.06.2015 22:48 Rivago ist offline Beiträge von Rivago suchen Nehmen Sie Rivago in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » Dynamisches Array und Ausgabe in StringGrid