AGB  ·  Datenschutz  ·  Impressum  







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

Vergleich von Zahlen

Ein Thema von Beach · begonnen am 3. Mär 2020 · letzter Beitrag vom 6. Mär 2020
Antwort Antwort
Beach

Registriert seit: 3. Mär 2019
Ort: Kappel
46 Beiträge
 
FreePascal / Lazarus
 
#1

Vergleich von Zahlen

  Alt 3. Mär 2020, 16:02
Hallo zusammen,

ich versuche aktuell ein Programm zu machen welches mir Daten konvertiert.
Die Daten liegen als Textdateien in einem speziellen Format vor.
Das Einlesen und extrahieren der Daten ist soweit kein Problem.

Nun habe ich Positionen in einem Stringarray vorliegen. Diese Daten sind in dem Format "0.000000" also mit 6 Nachkommastellen und einem Dezimalpunkt anstelle des Komma. Die Anzahl der Positionen und deren Wert ist prinzipiell frei. Können theoretisch auch Nachkommastellen enthalten
z.B. so (die einzelnen Werte habe ich aktuell in einem Stringarray)
Zitat:
Targets :
0.000000 100.000000 300.000000 600.000000 1200.000000
Zur Konvertierung der Daten müssen diese Positionen allerdings gleichmäßig sein. Das genannte Beispiel würde nicht funktionieren und sollte eine Fehlermeldung bringen.
Diese Version wäre nutzbar.
Zitat:
Targets :
0.000000 100.000000 200.000000 300.000000 400.000000
Nun möchte ist dieses Überprüfen und brauche auch den Abstand, da ich diesen Verrechnen muß. Aber mir fehlt schon irgendwie der Ansatz wie ich vorgehen kann.
Bin für alle Ideen und Anregungen dankbar.

MfG

Jürgen
MfG Jürgen

Geändert von Beach ( 3. Mär 2020 um 16:04 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 16:04
Ganz banal vielleicht:
Handhabe das wie eine Doppelwoche.

Hole dir Wert 1 und 2, vergleiche sie. Sind dort größere, ungewollte Lücken => füllen.
Danach Wert 2 und 3, 3 und 4, 4 und 5 usw.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 16:07
was ist denn bei
0.000000 100.000000 300.000000 600.000000 1200.000000
falsch?

Eine völlig banale Frage:
wie kann ich denn ein neues Thema aufmachen?
Ich finde es einfach nicht ... bin wahrscheinlich zu blöd
  Mit Zitat antworten Zitat
Beach

Registriert seit: 3. Mär 2019
Ort: Kappel
46 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 16:11
Eine schlechte Erläuterung von mir.
Es handelt sich um Positionen an denen ein Winkel gemessen wurde. Und ich kann nur meine Berechnungen machen, wenn die Abstände dieser Positionen gleich sind.
z.B. alle 100mm

Es geht auch nicht darum diese Positionen zu ergänzen. Sondern einfach nur einen Meldung auszugeben das bei nicht regelmäßigen Positionen eine Umrechnung nicht möglich ist.
MfG Jürgen
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 16:16
wäre es dann nicht einfacher, nur die erste Position sowie den Abstand einzulesen?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 16:17
Zitat:
wäre es dann nicht einfacher, nur die erste Position sowie den Abstand einzulesen?
Erste Position und die letzte und dann in 100er Schritten das Array füllen.

Vielleicht so? Wenn die Nachkommastellen eh immer 0 sind, kann man das mit Integer machen. Wie man das jetzt mit den Nachkommastellen hinbekommt, weiß ich nicht.
Aber es kommt aufs Prinzip an. Das geht bestimmt viel einfacher.

Delphi-Quellcode:
var
 i: Integer;
 Werte, WerteNeu: TArray<Double>;

begin
 try
  SetLength(Werte, 5);
  Werte[0] := 0.000000;
  Werte[1] := 100.000000;
  Werte[2] := 300.000000;
  Werte[3] := 600.000000;
  Werte[4] := 1200.000000;


  for i := Round(Werte[Low(Werte)]) to Round(Werte[High(Werte)]) do
   begin
    SetLength(WerteNeu, Length(WerteNeu) + 1);

    if i mod 100 = 0 then
     begin
      WerteNeu[High(WerteNeu)] := i;
      WriteLn(i.ToString);
     end;
   end;

  ReadLn;

 except
  on E: Exception do
   WriteLn(E.ClassName, ': ', E.Message);
 end;
end;
Code:
0
100
200
300
400
500
600
700
800
900
1000
1100
1200

Geändert von DieDolly ( 3. Mär 2020 um 16:27 Uhr)
  Mit Zitat antworten Zitat
Beach

Registriert seit: 3. Mär 2019
Ort: Kappel
46 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 16:33
Ich will kein Array füllen.
Sondern nur prüfen ob die Positionen regelmäßig sind.

so in der Art:
Code:
i:= array[1]-array[0];
for j := 2 to length(array)-1 do
 begin
  if array[j]-array[j-1] <> i then
    error := TRUE;
  end;
 next;
end;

if error = TRUE then
 break;

[...]Berechnungen
MfG Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:57 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