Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Programmhilfe
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Kontra



Anmeldungsdatum: 29.12.2006
Beiträge: 4

BeitragVerfasst am: 03.01.2007, 11:50    Titel: Programmhilfe Antworten mit Zitat

traurig Sortierung von Zahlenreihen

Wie sortiere ich folgende Zahlenreihen ?

Reihe 1. 2 7 15 30 45 49
Reihe 2. 8 12 17 21 37 39
Reihe 3. 1 6 13 18 42 45
Nach der Sortierung:
Reihe 1. 1 6 13 18 42 45
Reihe 2. 2 7 15 30 45 49
Reihe 3. 8 12 17 21 37 39
usw.
Danke für die Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2007, 12:54    Titel: Antworten mit Zitat

Meinst du, dass einfach die Reihen vertasucht werden sollen, etwa nach der größe ihrer anfangszahl? weißt du, man kann reihen soooo beliebig sortieren... durchgeknallt

Code:

Dim Reihe (1 to 3) as string
Reihe(1) = "2 7 15 ...."
Reihe(2) = "8 12 17..."
Reihe(3) = "1 6 13 ...."
For I = 1 to 3
    For J = 1 to 2
        If Val(Reihe(J)) > Val(Reihe(J + 1)) Then Swap Reihe(J), Reihe (J +  1)
    Next
Next


Und: Willkommen im Forum! Hammer
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kontra



Anmeldungsdatum: 29.12.2006
Beiträge: 4

BeitragVerfasst am: 06.01.2007, 10:15    Titel: Antworten mit Zitat

mit dem Kopf durch die Mauer wollen
Danke für deine Hilfe !
Mein Beispiel hat nur 3 Reihen gezeing. Das geht.
Wenn ich über Zufallsgenerator 60 und mehr Reihen in eine Datei schreibe
und dann die Zahlenreihen aus der Datei sortiert anzeigen möchte,
klapt es nicht.
Kanst du mir helfen.
Danken.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 06.01.2007, 12:03    Titel: Antworten mit Zitat

Ich hoffe, du hast den Quellcode von Jojo auch auf deine 60 Reihen angepasst. zwinkern
Zum Beispiel muss i von 1 bis 60 durchlaufen, und das Array Reihe musst du natürlich auch mit 60 Einträgen dimensionieren. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.01.2007, 13:39    Titel: Antworten mit Zitat

Das teil geht für bis zu 32767 einträge durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 06.01.2007, 14:46    Titel: Antworten mit Zitat

Äh...ja, ich weiß.
Aber in deinem Sample hast du 1..3 drin bzw. 1 To 3 drin. Zunge rausstrecken zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.01.2007, 14:47    Titel: Antworten mit Zitat

Klar, ich wollte ihm nur verdeutlichen, dass mein Prog auch mit grooßoen Datenmengen zurechtkommt (obwohl dann sehr langsam)
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 06.01.2007, 14:49    Titel: Antworten mit Zitat

Achsooooo... grinsen
Ich hab nix gesagt... grinsen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kontra



Anmeldungsdatum: 29.12.2006
Beiträge: 4

BeitragVerfasst am: 09.01.2007, 21:15    Titel: Antworten mit Zitat

Hallo Jojo,
sage mir ist dass wirklich sooooo schwer dass ich dass
nicht hinkriege. Ich habe alles richtig eingegeben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.01.2007, 21:29    Titel: Antworten mit Zitat

is doch einfach:

Code:

Dim Reihe (1 to 50) as string
Reihe(1) = "2 7 15 ...."
Reihe(2) = "8 12 17..."
Reihe(3) = "1 6 13 ...."
Reihe(4) = "7 51 59 189..."
[........]
For I = 1 to 50
    For J = 1 to 49
        If Val(Reihe(J)) > Val(Reihe(J + 1)) Then Swap Reihe(J), Reihe (J +  1)
    Next
Next

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 10.01.2007, 13:25    Titel: Antworten mit Zitat

Code:
Dim Reihe (1 to 50) as string
Reihe(1) = "2 7 15 ...."
Reihe(2) = "8 12 17..."
Reihe(3) = "1 6 13 ...."
Reihe(4) = "7 51 59 189..."
[........]
For I = 1 to 50
    For J = 1 to 49
        If Val(Reihe(J)) > Val(Reihe(J + 1)) Then Swap Reihe(J), Reihe (J +  1)
    Next
Next

Sorry, aber dieser Ansatz funktioniert so nicht, jedenfalls nicht für alle Anwendungsfälle, und zwar deshalb:
Code:
? "43" > "6 "
0

Man müsste erst die Zahlen auf eine einheitliche Stellenanzahl bringen:
Code:
? "43" > "06"
-1

Für die eigentliche Aufgabenstellung fallen mir wesentlich effizientere Lösungen ein, ich hab aber im Moment keine Zeit, sie auszuarbeiten...
_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 10.01.2007, 14:01    Titel: Antworten mit Zitat

Hallo

Wenn die Elemente der Zahlenreiheihen nicht grösser als 255 werden, könnte man die Reihen doch in einen String umwandeln, der sich aus den den Zahlen entsprechenden ASCII-Zeichen zusammensetzt und diese Strings dann sortieren. Aslo ungefähr so:

Code:
...
reihe$(x) = ""
FOR e = 0 TO elemente
reihe$(x) = reihe$(x) + CHR$(zahl(x, e))
NEXT
...


und dann die Strings reihe$() nach jojos Ansatz sortieren.

EDIT: Ich hab's mal ausgearbeitet, scheint zu funktionieren.

Code:
CLS
maxzahl = 255
reihen = 10
elemente = 7
DIM zahl(1 TO reihen, elemente)
DIM reihe$(1 TO reihen)
RANDOMIZE TIMER

'reihen erstellen
FOR r = 1 TO reihen
 reihe$(r) = ""
 FOR e = 1 TO elemente
  DO
   zahl(r, e) = FIX(RND * (maxzahl + e - elemente)) + 1
  LOOP WHILE zahl(r, e) <= zahl(r, e - 1)
  reihe$(r) = reihe$(r) + CHR$(zahl(r, e))
 NEXT
NEXT

'sortieren
FOR i = 1 TO reihen
 FOR j = 1 TO reihen - 1
  IF reihe$(j) > reihe$(j + 1) THEN SWAP reihe$(j), reihe$(j + 1)
 NEXT
NEXT

'anzeigen
FOR i = 1 TO reihen
 FOR j = 1 TO elemente
  PRINT ASC(MID$(reihe$(i), j, 1));
 NEXT
 PRINT
NEXT


@Kontra: Du hast geschrieben, du hättest alles richtig "eingegeben". Du kannst Codebeispiele aus dem Forum auch z.B. in den Editor kopieren und als .bas abspeichern, dann brauchst du nichts abzutippen.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.01.2007, 17:41    Titel: Antworten mit Zitat

pinkpanther hat Folgendes geschrieben:
Code:
Dim Reihe (1 to 50) as string
Reihe(1) = "2 7 15 ...."
Reihe(2) = "8 12 17..."
Reihe(3) = "1 6 13 ...."
Reihe(4) = "7 51 59 189..."
[........]
For I = 1 to 50
    For J = 1 to 49
        If Val(Reihe(J)) > Val(Reihe(J + 1)) Then Swap Reihe(J), Reihe (J +  1)
    Next
Next

Sorry, aber dieser Ansatz funktioniert so nicht, jedenfalls nicht für alle Anwendungsfälle, und zwar deshalb:
Code:
? "43" > "6 "
0

Man müsste erst die Zahlen auf eine einheitliche Stellenanzahl bringen:
Code:
? "43" > "06"
-1

Für die eigentliche Aufgabenstellung fallen mir wesentlich effizientere Lösungen ein, ich hab aber im Moment keine Zeit, sie auszuarbeiten...


Er wollte nur die reihen nach der anfangszahl sortieren. und das geht IMMER, wenn man val(reihe) anwendet, denn das erste leerzeichen oder sonderzeichen bricht die überprüfung durch val ab. VAL("4 5") gibt also 4 und nicht 45 oder so was zurück. und das wollte er doch.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 10.01.2007, 18:13    Titel: Antworten mit Zitat

Hallo

Jojo hat Folgendes geschrieben:
VAL("4 5") gibt also 4 und nicht 45 oder so was zurück.


Doch tut es. Hab's gerade nochmal ausprobiert um sicherzugehen.

Code:
PRINT VAL ("4 5")


ergibt die Ausgabe 45. Ausserdem würde, wenn es so wäre wie du schreibst, das zweite Element einer Reihe nicht berücksichtigt werden, was sicher nicht gewollt ist wenn mehrere Reihen mit der gleichen Zahl beginnen. Meine Methode macht das.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.01.2007, 20:01    Titel: Antworten mit Zitat

okay, dann hat sich hier freeBASIC bedeutend verändert.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 10.01.2007, 20:47    Titel: Antworten mit Zitat

FreeBASIC (Linux), compiliert am 8.Januar 2007:

Zitat:
4


Es gibt 4 zurück Zunge rausstrecken
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.01.2007, 20:56    Titel: Antworten mit Zitat

sag' ich doch zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 10.01.2007, 21:01    Titel: Antworten mit Zitat

Und in C gibt's ne Fehlermeldung... Ist ja schön und gut, dass das in FreeBasic so ist, nur befinden wir uns hier bei den allgemeinen Fragen zu QBasic. Sorry, solche Kommentare helfen zwar eurem Postcounter, aber nicht dem Fragesteller.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.01.2007, 21:11    Titel: Antworten mit Zitat

Ich *wusste* ja nur nicht, dass es in qbasic anders ist... Außerdem ist es ja gut, dass du schon eine gute lösung gefunden hast zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 10.01.2007, 21:22    Titel: Antworten mit Zitat

Ist ja schon gut. Manchmal geht einfach mein Sarkasmus mit mir durch.
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz