 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Die.K
Anmeldungsdatum: 07.01.2008 Beiträge: 6
|
Verfasst am: 07.01.2008, 19:52 Titel: Mehrere Werte vergleichen |
|
|
Hi sry wen die Frage etwas noobig ist, hab erst vor kurzem mit programmieren angefangen.
Also ich entwickle gerade ein Programm, komme leider nicht weiter.
Mein Problem: der Benutzer kann zwischen 2 was auswählen zb.: A, B
A hat werte 1,2,3
B hat werte 4,5,6
er kann nur 1 was auswählen, wen er sich entschieden hat, dann wählt er weiter aus
C hat Werte 2,8
D hat Werte 2,5,6
Das ganze läuft dann so ab zb: A wurde ausgewählt 1,2,3 dan wurde C ausgewählt 2.8 jetzt läuft es so ab das, die Zahlen die A und C gemeinsam haben behalten werden und in neuen Platzhalter gespeichert. In diesen Fall die Zahl 2
zweiter Beispiel: B (4,5,6 ausgewählt dan D (2,5,6 die Zahlen 5 und 6 werden dann in neuem Platzhalter gespeichert weil sie die gemeinsam haben.
Mein Problem ist das ich z.B. A nicht 3 oder mehrere Werte zuweisen kann. Hab schon viele Hilfen für Anfänger gelesen aber nichts gefunden oder überlesen. Wen es dann möglich ist mehrere Werte zu zuweisen? wie kann ich sie dann vergleichen?
(glaube mit IF A=B then ........ ist es dan nicht erledigt)
Bitte um kleine Hilfe
Mit freundlichen Grüßen
Die.K
Zuletzt bearbeitet von Die.K am 11.01.2008, 14:00, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Keks
Anmeldungsdatum: 03.11.2007 Beiträge: 156 Wohnort: Dose
|
Verfasst am: 07.01.2008, 19:56 Titel: |
|
|
Erläre es mal bitte genauer. Was willst du denn überhaupt damit machen? |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 07.01.2008, 19:59 Titel: |
|
|
Hmm ... das einzige, was mir in QBASIC einfällt, ist ein Array - also, A ist ein Array, das drei Werte speichert, A(0), A(1) und A(2). Vergleichen müsstest du aber dann Stück für Stück, also A(0) mit B(0), A(0) mit B(1) usw.
@Keks: Wenn ich es richtig verstanden habe, sollen zwei Mengen verglichen werden, also eine Schnittmenge bestimmt werden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Die.K
Anmeldungsdatum: 07.01.2008 Beiträge: 6
|
Verfasst am: 07.01.2008, 20:13 Titel: |
|
|
Keks hat Folgendes geschrieben: | Erläre es mal bitte genauer. Was willst du denn überhaupt damit machen? |
Also will ein kleines Porgramm für Ermittlung der Anlagen nach DIN 4701-10
dort ist es dann zb so
1.wählt Benutzer BW aus (Brennwertkessel) die hat Anlagen 16-48 sowie 26.1-26.4, 30.1, 42.1
2. dann wählt er zenH (zentral zusammen mit der heizung) die hat Anlagen 1-12, 16-42, 49-57, 64-78 sowie 26.1-26.4, 30.1, 42.1, 50.1, 52.1-52.4, 55.1, 57.1
dan werden die Anlagen von beiden verglichen und das, was 1 mit 2 gemeinsam haben gepeichert
Ergebnis 16-42, 26.1-26.4, 30.1, 42.1
das geht dan immer so weiter bis am ende eine Anlage bleibt. |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 07.01.2008, 20:21 Titel: |
|
|
Nettes Aufgäbchen...
Du kannst es auf verschiedene Weisen lösen, mehr "anfängerhaft" oder etwas sauberer. In jedem Fall aber ist das "Raussuchen" der Schnittmenge nicht mit einer einfachen If-Anweisung getan.
1. Möglichkeit: Du nutzt Strings (dreckige, aber anschauliche Lösung). Dann musst du mittels MID$() Zeichen für Zeichen durch die Strings (zwei verschachtelte Schleifen) und schauen, ob ein Zeichen gleich ist. Das speicherst du in einem dritten String ab.
2. Möglichkeit: Genau analog, aber mit Arrays. Zunächst sauberer. Allerdings erst dann wirklich sauber, wenn du die Arrays dynamisch machst - nichts für absolute Anfänger.
3. Möglichkeit: Mit UDT's und entsprechenden Vergleichs-Methoden.
Irgendwie so:
Code: |
TYPE myset
nsize AS INTEGER
'Hier sind die Zahlen drin:
x(10) AS INTEGER
END TYPE
SUB mycompare(set1 as myset, set2 as myset, resultset as myset)
DIM i AS INTEGER, j AS INTEGER
resultset.nsize=0
FOR i=0 to x1.nsize-1
FOR j=0 to i
IF set1.x(i)=set2.x(j) THEN
resultset.x(resultset.nsize)=set1.x(i)
resultset.nsize=resultset.nsize+1
END IF
NEXT j
NEXT i
END SUB
|
Grüsse!
Croco |
|
Nach oben |
|
 |
Die.K
Anmeldungsdatum: 07.01.2008 Beiträge: 6
|
Verfasst am: 09.01.2008, 17:05 Titel: |
|
|
Danke für die Antworten, hab nun eine Lösung ausgearbeitet.
MFG
Die.K |
|
Nach oben |
|
 |
Elvis

Anmeldungsdatum: 01.06.2006 Beiträge: 818 Wohnort: Deutschland, BW
|
Verfasst am: 09.01.2008, 19:31 Titel: |
|
|
Du solltest übrigens diesem Thread mittels der EDIT-Funktion einen vernünftigen Namen geben, denn dass jemand Hilfe braucht und
eventuelle ein Anfänger ist, gehört in den eigentlichen Nachrichtentext.
Wenn also später ein Mitglied das gleiche Problem hat und zur Lösung die Suchfunktion verwendet, so findet es diesen Thread.
Grüße, Elvis _________________ Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+ |
|
Nach oben |
|
 |
Die.K
Anmeldungsdatum: 07.01.2008 Beiträge: 6
|
Verfasst am: 11.01.2008, 14:14 Titel: |
|
|
Sry wen ich euer Zeit raube, aber hab da noch eine Frage und zwar: hab eine Datei in .txt Format
dort sind Zahlen gespeichert mit Kommas getrennt. Zb: (2,3,4,5), diese Zahlen will ich in in ein Array abspeichern also mein Code schaut so aus:
(es soll jeder Feld ein Wert bekommen)
Bsp:
Code: |
CLS
DIM zahlen%(4)
FOR i% 1 to 4
OPEN test.txt FOR INPUT AS #1
INPUT #1, i%
PRINT zahlen%(i%)
NEXT i%
CLOSE #1
|
Das Problem ist das er nur die erste zahle „2“ in i% schreib und das wars, da fehlt noch ein ganz Stück Code denke ich^^, aber ich komme nicht drauf.
MFG
Die.K
PS.: habe Namen Editiert |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 11.01.2008, 14:40 Titel: |
|
|
Hallo,
der Code oben kann nicht funktionieren, weil da nichts in das Datenfeld eingelesen wird. Zwecks Lösungsfindung: Sind denn immer gleich viele Zahlen in einer Zeile? Beispiel:
Code: | 12,3,4
23,4,9
33,1,0
3,4,5
... |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 11.01.2008, 15:14 Titel: |
|
|
Das ist logischerweise nur die Vergleichsmethode. Kenne ja sein restliches Programm nicht...
Grüsse!
Croco |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 11.01.2008, 15:28 Titel: |
|
|
Zudem gehört der OPEN-Befehl vor die Schleife, da die Datei ja nur einmal geöffnet werden muss.  _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|
|
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.
|
|