Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
qbprogger

Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 29.05.2008, 20:29 Titel: Print Problem -Sudokufeld |
|
|
Hallo,
ich schreibe an einem Sudoku Programm.
Doch leider gibt es da das Problem mit der Print anweisung.
Er soll 9Zahlen hinter einander anzeigen aber er zeigt immer nur die letzte
an. Hier der Code:
Code: | Dim Sudofeld(1 TO 81)
For n%=1 to 9
Sudofeld(n%)=n%
Next n%
For i%=1 to 9
Locate 10,i%:Print sudofeld(i%)
Next i% |
Aja die Zahlen der Felder 1 bis 9 sind noch egal.
Danke schon im voraus. _________________ Proggen macht Spaß!!!
 |
|
Nach oben |
|
 |
DosCoder
Anmeldungsdatum: 02.03.2008 Beiträge: 25
|
Verfasst am: 29.05.2008, 21:08 Titel: |
|
|
Hi,
deine Sudofeldinhalte haben komischerweise die Länge 4 . Folgende Print-Zeile kann Abhilfe schaffen: Code: | LOCATE 10,i% : PRINT LTRIM$(STR$(Sudofeld(i%))) |
Ciao
DosCoder |
|
Nach oben |
|
 |
qbprogger

Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 30.05.2008, 15:46 Titel: |
|
|
Super!!
Ich schreib jetzt die Vergleichs-Sub.
Tschüss _________________ Proggen macht Spaß!!!
 |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 30.05.2008, 16:11 Titel: |
|
|
noch was damit du in zukunft eher auf sowas kommst :
wenn du bei so sachen ein sleep einbaust, und es nur per tastendruck weitergeht, würdest du sehen dass immer das nächste das vorherige überschrieben hat  _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
DosCoder
Anmeldungsdatum: 02.03.2008 Beiträge: 25
|
Verfasst am: 30.05.2008, 22:18 Titel: |
|
|
Hi,
ich hab jetzt herausgefunden, was an deinem erstem Programm falsch war. Bei Integer-Variablen wird am Anfang noch eine Leerstelle fürs Vorzeichen gelassen. Das + wird meistens weggelassen, die Leerstelle bleibt jedoch. Deshalb haben sich auch deine Zahlen schön brav gegenseitig überschrieben.
Dies erklärt jedoch nicht, warum es Länge 4 anzeigt, doch auch dies ist einfach zu beantworten:
Die Len-Funktion gibt lediglich die Anzahl der belegten Bytes einer Variable zurück. Da der Integer in Windows 32 Bits belegt, gibt LEN(n%) 4 zurück, da 32 / 8 = 4.
Ciao
DosCoder |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 30.05.2008, 22:26 Titel: |
|
|
so viel müll auf einem haufen...
Zitat: | Da der Integer in Windows 32 Bits belegt, |
1) wir sind hier unter DOS, auch wenn du QBasic in Windows ausführst
2) Ob ein integer jetzt 16,32,128 oder 1337 bits hat, gibt nicht das betriebssystem vor - sondern die programmiersprache
=> in qb sind integer 16-bittig! _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
DosCoder
Anmeldungsdatum: 02.03.2008 Beiträge: 25
|
Verfasst am: 30.05.2008, 22:41 Titel: |
|
|
Sorry Jojo, aber wenn das wirklich Müll ist, dann möchte ich wirklich wissen, warum bei qbprogger ein seinen Sudofeldeinträgen die Länge 4 hat, da es mich jetzt auch brennend interessiert.
EDIT:
Schau' mal unter folgender Seite, Kapitel 4 - Häufige Speicherformen, Zeile 1
Integer
Dort steht, dass sich Integer immer nach der jeweiligen CPU ausrichtet. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 31.05.2008, 00:40 Titel: |
|
|
Weil du vielleciht FreeBASIC benutzt?! LEN(zahl%) liefert unter QBasic immer 2 zurück und das liegt daran, dass Integers nicht von der CPU abhängig sind sondern von dem Compiler/Interpreter!
CPUs in den 80ern waren nun mal 16bittig und daran hat sich QB auch orientiert... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
DosCoder
Anmeldungsdatum: 02.03.2008 Beiträge: 25
|
Verfasst am: 31.05.2008, 10:11 Titel: |
|
|
Hi,
ich benzutze QBasic. Und, Sorry, deine 16 Bit-These stimmt wirklich. Ich habe übersehen, dass das sudofeld von qbprogger Single ist. Ich dachte, dass sudofeld(i%) = i% das Sudofeld mit Integereinträgen bestückt, wegen der Endung %. Aufgrund der Tatsache, dass folgende Zeile 4 ausgibt, dachte ich, dass Integer 32 Bit besitzen:
Code: | PRINT LEN(sudofeld(i%)) |
Diesen Irrglauben hat dann Wiki noch weiter verstärkt
Sorry Jojo, aber du weißt ja, man lernt nie aus.
Ciao
DosCoder |
|
Nach oben |
|
 |
|