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:

Mehrere Werte vergleichen

 
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
Die.K



Anmeldungsdatum: 07.01.2008
Beiträge: 6

BeitragVerfasst am: 07.01.2008, 19:52    Titel: Mehrere Werte vergleichen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Keks



Anmeldungsdatum: 03.11.2007
Beiträge: 156
Wohnort: Dose

BeitragVerfasst am: 07.01.2008, 19:56    Titel: Antworten mit Zitat

Erläre es mal bitte genauer. Was willst du denn überhaupt damit machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 07.01.2008, 19:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Die.K



Anmeldungsdatum: 07.01.2008
Beiträge: 6

BeitragVerfasst am: 07.01.2008, 20:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 07.01.2008, 20:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Die.K



Anmeldungsdatum: 07.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 17:05    Titel: Antworten mit Zitat

Danke für die Antworten, hab nun eine Lösung ausgearbeitet.

MFG

Die.K
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 09.01.2008, 19:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Die.K



Anmeldungsdatum: 07.01.2008
Beiträge: 6

BeitragVerfasst am: 11.01.2008, 14:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.01.2008, 14:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 11.01.2008, 15:14    Titel: Antworten mit Zitat

Das ist logischerweise nur die Vergleichsmethode. Kenne ja sein restliches Programm nicht...

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 11.01.2008, 15:28    Titel: Antworten mit Zitat

Zudem gehört der OPEN-Befehl vor die Schleife, da die Datei ja nur einmal geöffnet werden muss. zwinkern
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.01.2008, 16:18    Titel: Antworten mit Zitat

@Croco: Ich meinte seinen Programmvorschlag von 13:14 Uhr und nicht deinen Quelltext, falls das so rübergekommen ist. zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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
Seite 1 von 1

 
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