Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Anna1988
Anmeldungsdatum: 28.11.2007 Beiträge: 3
|
Verfasst am: 28.11.2007, 23:25 Titel: QBASIC PROGRAMM erstellen |
|
|
Ich muss folgendes Problem in ein Programm, QBASIC umsetzen…
Mit Hilfe eines Computerprogramms soll die Summe aller ganzen geraden Zahlen zwischen a und b (a<b,) ermittelt werden, wobei a und b positive ganze Zahlen sind und nicht mit eingerechnet werden sollen.
Bsp: a=11, b=20 -> Ergebnis = 12+14+16+18 = 60
Folgendes Programm habe ich schonmal erstellt...
...nur leider ist es kein QBASIC, sondern ein Mix aus C und qbasic...
Kann mir vielleicht jmd helfen?
Variablen: a, b, c, z
INPUT „Kleinere Zahl A eingeben“ ; a
INPUT „Groessere Zahl B eingeben“; b
IF (a MOD 2 = = 0)
{
Else (a MOD 2 = = 1)
{
a + 1
}
IF (b MOD 2 = = 0)
Else (b MOD 2 = = 1)
{
b - 1
}
c = a
LOOP UNTIL c= b+2
{
z = +c
c= c + 2
}
} ENDIF
PRINT z |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 29.11.2007, 00:05 Titel: |
|
|
((a + 1) \ 2) * 2
Mit diesem "Trick" erhält man a, wenn a gerade ist oder a+1, wenn a ungerade ist (war vor kurzem hier im Forum.
Code: | CLS
INPUT "Untere Grenze: ", a
INPUT "Obere Grenze: ", b
summe = 0
FOR i = ((a + 2) \ 2) * 2 TO ((b - 1) \ 2) * 2 STEP 2
summe = summe + i
NEXT
PRINT "Summe: ";summe
|
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 29.11.2007, 00:52 Titel: |
|
|
Hallo
Das Beispiel von SpionAtom hat einen Schönheitsfehler. Ist der Anfangswert a eine gerade Zahl, dann wird sie mitgezählt. So könnte es gehen:
Code: | CLS
INPUT "Kleinere Zahl A eigeben"; a
INPUT "Groessere Zahl B eingeben"; b
s = a + 2 - (a MOD 2)
e = b - 1
summe = 0
FOR zahl = s TO e STEP 2
summe = summe + zahl
NEXT
PRINT summe
|
Bei geraden Zahlen für a wird für den Startwert s der Schleife 2 dazu addiert, bei ungeraden wieder 1 abgezogen. Beim Endwert e reicht es, nur 1 von b abzuziehen. Da der Startwert immer gerade ist landet man so mit STEP 2 immer bei der nächstkleineren geraden Zahl vor dem Endwert b.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 29.11.2007, 13:23 Titel: |
|
|
Den Fehler hab ich nun auch behoben, danke.
Aber ich Fuchs hab mal was ohne Schleife ausgetüftelt. Bin mir nicht ganz sicher, obs immer funktioniert (habs auch nur in Blitzbasic getestet):
Code: | a = ((a + 2) / 2) * 2
b = ((b - 1) / 2) * 2
s1 = a / 2 + a^2 / 4
s2 = b / 2 + b^2 / 4
e = s2 - s1 + a
If e <= 0 Then e = 0
Print e |
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Anna1988
Anmeldungsdatum: 28.11.2007 Beiträge: 3
|
Verfasst am: 30.11.2007, 00:58 Titel: |
|
|
Oh, m e r c i...
Habs sogar verstanden! : ) |
|
Nach oben |
|
 |
Anna1988
Anmeldungsdatum: 28.11.2007 Beiträge: 3
|
Verfasst am: 05.12.2007, 23:26 Titel: |
|
|
Leider gibts immer noch ein kleines Problem...
Und zwar Funktioniert das Programm einwandfrei...
Aber ich möchte, dass die Anfangszahl a, falls sie gerade ist dazusummiert wird...
Also
a= 10
b= 12
Summe= 22
a=9
b=13
summe= 22
a=9
b=12
summe= 22
usw.
------------------------------------------
INPUT "Kleinere Zahl A eigeben"; a
INPUT "Groessere Zahl B eingeben"; b
s = a + 2 - (a MOD 2)
e = b +1 – (b MOD 2)
summe = 0
FOR zahl = s TO e STEP 2
summe = summe + zahl
NEXT
PRINT summe |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 05.12.2007, 23:57 Titel: |
|
|
Hallo
Code: | INPUT "Kleinere Zahl A eigeben"; a
INPUT "Groessere Zahl B eingeben"; b
s = a + (a MOD 2)
e = b
summe = 0
FOR zahl = s TO e STEP 2
summe = summe + zahl
NEXT
PRINT summe |
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Ferdi

Anmeldungsdatum: 10.03.2007 Beiträge: 284 Wohnort: Berlin
|
Verfasst am: 12.01.2008, 15:01 Titel: |
|
|
Da es aber mit ganzzahlen Arbeitet:
am anfang schreiben.
Geht schneller
Gruß Ferdi _________________ Dieser Post wurde cum grano salis gewürzt! Na dann: Guten Appetit! |
|
Nach oben |
|
 |
toniok
Anmeldungsdatum: 19.01.2008 Beiträge: 2
|
Verfasst am: 19.01.2008, 19:56 Titel: Brauch Hilfe |
|
|
hi,
kann Jemand mir helfen das folgende Programm zu erstellen?
-Schreibt ein QBasic -Programm, das die Dezimalzahlen 0.1 bis 100.0 im Abstand von 0.1 zu je zehn in einer Zeile druckt .
danke im Voraus. _________________ Glaube ohne Werk ist nichst |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
toniok
Anmeldungsdatum: 19.01.2008 Beiträge: 2
|
Verfasst am: 20.01.2008, 00:35 Titel: danke für Hilfe |
|
|
danke für deine Lösung Sebastian. die Lösung hat funktioniert . _________________ Glaube ohne Werk ist nichst |
|
Nach oben |
|
 |
|