Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 03.07.2007, 19:25 Titel: Auswerten einer sequenziellen Datei |
|
|
hi, ich bin neu hier und ich lerne Qbasic noch, daher verzeiht bitte wenn meine Frage zu einfach ist.
Also es handelt sich um folgendes Problem:
Ich habe eine seq. Datei mit 9000 Meßwerten von denen einige nicht im Gültigkeitsbereich liegen, nun will ich die Meßwerte in Gruppe zu je 150 zusammenfassen, den Mittelwert der gültigen Werte bestimmen und die prozentuale Angabe gültiger Werte.
Mein Prog entwurf:
CLS
DIM x(8 )
FOR i = 1 TO 8
INPUT x(i)
NEXT i
FOR i = 1 TO 4
IF x(i) < 8 AND x(i) >= 3 THEN
mittel1 = mittel1 + x(i)
w = w + 1
END IF
NEXT i
FOR i = 5 TO 8
IF x(i) < 8 AND x(i) >= 3 THEN
mittel2 = mittel2 + x(i)
w2 = w2 + 1
END IF
NEXT i
mittel = mittel1 / 4
mittelw = mittel2 / 4
PRINT mittel, (w / 4) * 100
PRINT mittelw, (w2 / 4) * 100
END
Wie ihr natürlich seht ist das nur ein Versuch mir das allgemeine Vorgehen anzueignen, also gebe ich ein Feld als ersatz für die Datei ein und es läuft ja auch alles wie es soll, nur will ich wissen wie man die Gruppierung, die ja in zwei unterschiedlichen Schleifen nochmal gemacht wird so hinbekommen kann, dass ich nicht bei meiner Aufgabe von oben 60 Zählschleifen machen muss.
Viele dank schonmal im Voraus
mfg seimon
Zuletzt bearbeitet von seimon am 03.07.2007, 22:01, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.07.2007, 20:00 Titel: |
|
|
arrays verwenden
weißt du schon was arrays sind ( ) ?
man dimensioniert sie mit einem
Code: |
dim array_name(anfangswert TO endwert) as datentyp
|
dann sind das wie gaaaanz viele variablen, nur wird ein array mit der Zahl im eingeklammerten angesprochen:
Code: |
dim bla(1 to 3) as string
bla(1) = "Hello"
bla(2) = "world"
bla(3) = "!"
print bla(1) + " " + bla(2) + bla(3)
|
ausgabe:
_________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 03.07.2007, 22:00 Titel: |
|
|
Hi und danke für die Antwort. Ich hab doch Arrays verwendet, also Felder^^, nur ist mir dann nicht ganz klar wie ich aus diesem Feld die Summe bilden kann wenn ich keine Schleife verwende und wie ich das mit der prozentualen Verteilung machen soll.
mfg seimon |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 03.07.2007, 22:55 Titel: |
|
|
wenn du weißt wie groß das feld is kannst du einfach mit feld(1)+feld(2)+feld(3)+...+feld(größterwert) das ganze von hand zusammenzählen.. aber schleife is einfacher  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 03.07.2007, 22:57 Titel: |
|
|
Hallo
Verstehe ich das richtig, Du willst von allen 60 Gruppen zu je 150 Messwerten den jeweiligen Mittelwert der gültigen und den Anteil der ungültigen, also zwei mal 60 Werte? Dann könntest Du einfach zwei Schleifen ineinander verschachteln. Arrays brauchst Du dann nur, um die Mittelwerte bzw. Anteile von ungültigen Werten zu speichern, wenn Du diese noch weiter verarbeiten willst. Die Messwerte selbst brauchst Du doch eigentlich nicht mehr. So stelle ich mir das vor, das Beispiel zeigt die Werte für jede Gruppe einfach nur an.
Code: | CLS
OPEN "mess.dat" FOR INPUT AS #1
FOR gruppe = 0 TO 59
summe = 0
gueltige = 0
FOR wert = 0 TO 149
INPUT #1, x
IF x < 8 AND x >= 3 THEN
summe = summe + x
gueltige = gueltige + 1
END IF
NEXT
PRINT "Mittelwert Gruppe"; gruppe; ": "; summe / gueltige
PRINT "Anteil ungueltiger Werte:"; (150 - gueltige) / 1.5; "%"
SLEEP 'Wartet auf Tastendruck
NEXT
CLOSE #1 |
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
seimon
Anmeldungsdatum: 09.06.2007 Beiträge: 12
|
Verfasst am: 04.07.2007, 15:59 Titel: |
|
|
Hi, ich bin gestern Nacht auch noch auf die Idee mit den Schleifen gekommen, nun sieht mein Prog so aus, falls euch das interessiert^^:
Code: | CLS
DIM x(9000)
m = 60 'Gruppen
n = 150 'Messwerte pro Gruppe
FOR j = 1 TO m
FOR i = (j - 1) * n + 1 TO j * n
INPUT x(i)
IF x(i) < 8 AND x(i) >= 3 THEN
mittel1 = mittel1 + x(i)
w = w + 1
END IF
NEXT i
mittel = mittel1 / w
PRINT mittel, (w / n) * 100
NEXT j
END
|
Danke für die Hilfe.
mfg seimon |
|
Nach oben |
|
 |
Thomas Antoni

Anmeldungsdatum: 12.10.2004 Beiträge: 220 Wohnort: Erlangen
|
Verfasst am: 16.07.2007, 15:50 Titel: |
|
|
Anregungen gibt's - wie fast bei allen Standardproblemen in der QB-MonsterFAQ unter
"Zahlen verarbeiten ... -> Wie berechne ich den Minimal-, Maximal- und Mittelwert mehrerer Zahlen?" _________________ +++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++ |
|
Nach oben |
|
 |
|