AGB  ·  Datenschutz  ·  Impressum  







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

Array Zugriff

Ein Thema von Slashmob · begonnen am 27. Nov 2011 · letzter Beitrag vom 28. Nov 2011
 
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#1

Array Zugriff

  Alt 27. Nov 2011, 18:11
Nabend zusammen,

ich arbeite zurzeit an einem Projekt, das eine Tabelle von Cos-Werten im Bereich von 0° bis 90°
(in 1/10° Schritten, d.h 901 Cos-Werte) erzeugen soll, dann anschließend diese Tabelle übernommen und in ein Array eingelesen wird.
Ziel ist es alleine durch die obige Cos-Tabelle (0°-90°) die Werte von Sinus, Cosinus und Tangens im Bereich von 0° bis 360° zu "berechnen", indem man die richtigen Verhältnisse von Cos aus dem ersten Quadranten zu den übrigen Quadranten erstellt.

Mein Problem ist, dass ich den Zugriff auf den Array nicht hinbekomme. Da kommt immer totaler Quatsch als Wert raus. Ich hab wohl irgendwo einen Denkfehler oder übersehe etwas.
Weil mich dieser letzte Teil schon seit zwei Tagen plagt, wollt ich euch um Hilfe, Anregungen oder Tipps bitten.

Gruß Slash

Mein Code sieht wie folgt aus:

Code:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, MaskEdit,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    MaskEdit1: TMaskEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var                          // Globale Deklaration
  Form1: TForm1;
  cos_Tab: array [0..900] of double;
  f: textfile;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject); // Tabelle erzeugen und speichern
Var s: string;    // Zeichenkette
    i: integer;  // Laufindex
begin
     assignfile(f,'cos.txt');  
     rewrite(f);              
     For i:= 0 to 900 Do      
         Begin
              s:=floattostr(cos((i/10)*(2*Pi/360)));
              writeln(f,s);      
         end;
     closefile(f);      
end;

procedure TForm1.Button2Click(Sender: TObject);  // Tabelle übernehmen und in Array einlesen
Var s: string;
    i: integer;
begin
     assignfile(f,'cos.txt');    
     reset(f);                  
     For i:=0 to 900 Do          
         Begin
              readln(f,s);      
              cos_Tab[i]:=strtofloat(s);
         end;
     closefile(f);
end;

procedure TForm1.Button3Click(Sender: TObject); // Berechne Funktionswert
Var i,quadrant: integer;
    winkel, rad, coswert,sinwert,tanwert: double;

begin
     winkel:=strtofloat(maskedit1.text);  
     If (winkel>360) then                
     showmessage ('Wert zu groß! Bitte einen Wert zwischen 0° und 360° eingeben!');
     If (winkel<0) then
     showmessage ('Negativer Wert! Bitte einen Wert zwischen 0° und 360° eingeben!');
     rad:= (winkel*2*Pi)/360;


     // Quadrantnummer aus Grenzwinkeln bestimmen
     If ((winkel*10)>=0) and ((winkel*10)<=900) then
     Begin
           quadrant:= 1;
     end;
     If ((winkel*10)>900) and ((winkel*10)<=1800) then
     Begin
           quadrant:= 2;
     end;
     If ((winkel*10)>1800) and ((winkel*10)<=2700) then
     Begin
           quadrant:= 3;
     end;
     If ((winkel*10)>2700) and ((winkel*10)<=3600) then
     Begin
           quadrant:= 4;
     end;

// Funktionsberechnung

     Case quadrant of
     1: begin
          coswert:=cos_Tab[i];

        end;
     2: begin
          coswert:=-cos_Tab[1800-i];

        end;
     3: begin
          coswert:=-cos_Tab[1800+i];

        end;
     4: begin
          coswert:=cos_Tab[3600-i];

        end;
     end;

// Ausgabe der Funktionswerte
     label1.Caption:='Cos-Wert: '+ floattostr(coswert);
     label2.Caption:='Sin-Wert: '+ floattostr(sinwert);
     label3.Caption:='Tan-Wert: '+ floattostr(tanwert);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

Geändert von Slashmob (27. Nov 2011 um 18:21 Uhr)
  Mit Zitat antworten Zitat
 


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 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz