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:

Print Problem -Sudokufeld

 
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
qbprogger



Anmeldungsdatum: 13.05.2008
Beiträge: 49
Wohnort: Kirchlinteln

BeitragVerfasst am: 29.05.2008, 20:29    Titel: Print Problem -Sudokufeld Antworten mit Zitat

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. weinen 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ß!!!
happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DosCoder



Anmeldungsdatum: 02.03.2008
Beiträge: 25

BeitragVerfasst am: 29.05.2008, 21:08    Titel: Antworten mit Zitat

Hi,
deine Sudofeldinhalte haben komischerweise die Länge 4 durchgeknallt. Folgende Print-Zeile kann Abhilfe schaffen:
Code:
LOCATE 10,i% : PRINT LTRIM$(STR$(Sudofeld(i%)))

Ciao
DosCoder
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
qbprogger



Anmeldungsdatum: 13.05.2008
Beiträge: 49
Wohnort: Kirchlinteln

BeitragVerfasst am: 30.05.2008, 15:46    Titel: Antworten mit Zitat

Super!! Yahooo!!!!
Ich schreib jetzt die Vergleichs-Sub.

Tschüss
_________________
Proggen macht Spaß!!!
happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 30.05.2008, 16:11    Titel: Antworten mit Zitat

noch was damit du in zukunft eher auf sowas kommst zwinkern :
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 zwinkern
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DosCoder



Anmeldungsdatum: 02.03.2008
Beiträge: 25

BeitragVerfasst am: 30.05.2008, 22:18    Titel: Antworten mit Zitat

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.grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 30.05.2008, 22:26    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 02.03.2008
Beiträge: 25

BeitragVerfasst am: 30.05.2008, 22:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 31.05.2008, 00:40    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 02.03.2008
Beiträge: 25

BeitragVerfasst am: 31.05.2008, 10:11    Titel: Antworten mit Zitat

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