Forenindex » Archiv » Perl und CGI » Sortieren

Sortieren

Anonym
Beiträge gesamt: 22827

2. Jun 2003, 14:36
Bewertung:

gelesen: 2061

Beitrag als Lesezeichen
Hallo Ihr lieben,

ihr müßt mir mal wieder helfen und zwar möchte ich meinem Programm vorgeben, wie die Einteilung auf der x-Achse sein soll.
Sie soll weder numerisch als auch alphanumerisch werden.
Im moment werden die Daten zufällig ausgegeben. Ich möchte folgende Einteilung auf der Achse haben:

NNO,No,NOO,SOO,SO,SSO,SSW,SW,SWW,NWW,NW,NNW


Hoffe mir kann jemand helfen. Es ist sehr wichtig!!
LG Muse

Sortieren

oesi50
  
Beiträge gesamt: 2315

2. Jun 2003, 14:41
Bewertung:

gelesen: 2061

Beitrag als Lesezeichen
hi Muse,
teile Deine Himmelsrichtungen in 0..360 Grad ein und schon klappt's mit dem Sortieren.

Grüße Oesi

Sortieren

Anonym
Beiträge gesamt: 22827

3. Jun 2003, 10:17
Bewertung:

gelesen: 2061

Beitrag als Lesezeichen
Ich soll aber die Himmelsrichtungen und deren Abkürzungen auf der x-Achse darstellen und nicht die Gradzahlen.
Kannst du mir sagen, wie man das dann macht?

LG Muse

Sortieren

Anonym
Beiträge gesamt: 22827

3. Jun 2003, 11:16
Bewertung:

gelesen: 2061

Beitrag als Lesezeichen
Hi Muse,
verwende Bei der Anzeige eine Übersetzungstabelle.
Wenn Du keine Gradzahlen verwenden willst, nummeriere doch die Himmelsrichtungen einfach durch.

#!/usr/bin/perl -d
my %hr;
%hr = ( 'N'=>0,
'NNO'=>1,
'NO'=>2,
#usw.);

# $hr{'N'} entspricht dann 0
# $hr{'NNO'} ---> 1
# usw.

# einlesen

my @daten;

# schleife startet hier
# einlesen $himmelsrichtung und $wert
$daten[$hr{$himmelsrichtung}] = $wert;
#schleife endet hier


# zum Anzeigen:

for (sort { $hr{$a} <=> $hr{$b}} keys %hr){
print "$hr[$_] : $daten[$_];\n";
}

Da ich Deine Ausgangsdaten nicht kenne, habe ich dieses Beispiel nur mal so als Anregung gewählt.

Grüße Oesi

(Dieser Beitrag wurde von SabineP am 3. Jun 2003, 11:20 geändert)

Sortieren

oesi50
  
Beiträge gesamt: 2315

3. Jun 2003, 11:30
Bewertung:

gelesen: 2061

Beitrag als Lesezeichen
Korrektur:
Die Ausgabezeile muss natürlich so aussehen:
print "$hr{$_} : $daten[$hr{$_}]\n";

Grüße Oesi

Sortieren

Anonym
Beiträge gesamt: 22827

3. Jun 2003, 12:08
Bewertung:

gelesen: 2061

Beitrag als Lesezeichen
Danke,
die Einteilung auf der x-Achse hat geklappt, habe nur was übersehen. Jedoch stimmt die Zuteilung von Werten zu diesen Richtungen nicht überein.
Beides wird aus einer Datenbank ausgelesen.

Laut dem Output entspricht NOO 30°, dabei soll es 60° entsprechen.

Habe zuvor auch if-Abfragen gemacht,wie z.B. wenn in der Datenbank 30 steht, dann entspricht dies NOO.
Das war zwar sehr aufwendig, aber für den Anfang ok.

LG Muse