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:

#NV wert in Array Schreiben

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muecke
Gast





BeitragVerfasst am: 06.02.2014, 02:40    Titel: #NV wert in Array Schreiben Antworten mit Zitat

Hallo miteinander,

ich bin es mal wider lächeln mit einer Doofen Frage ich glaube auch das wir so was oder so was in der Art schon mal hatten ich finde es nur nicht ;-(.

ich bin am rechnen von werten die in einem Koordinaten System stecken durch das rechnen hole ich mir bestimmte werte und Marktire die auf dem Monitor lächeln

da ich abfragen mehrerer Werte etc mache schreibe ich die zwischen Ergebnisse in Array`s die ich als SINGLE definiert habe.

im Excel in dem ich die ersten versuche der Rechnerrei vorgenommen habe benutze ich den Wert "#NV" wenn ich keinen wert vorliegen habe kann ich so was auch ins Array Schreiben? denn eine 0 ist schlecht denn die kann auch so vorkommen und Negativ werte können auch vorkommen.

ich glaube jedoch das es keinen wert für nicht vorhanden gibt? oder doch?
ich kann das auch nicht mit "" Füllen denn es ist ja kein String.

hat mir jemand eine Idee? was ich machen könnte?
Nach oben
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 06.02.2014, 08:54    Titel: Antworten mit Zitat

Ein Single kann nur gültige Werte enthalten, ein #NV gibt es hier nicht. Überhaupt kann Excel das nur, weil es standardmäßig den Datentyp Variant benutzt, der sowas zulässt.

Du könntest mit Pointern arbeiten, ein NULL wäre dann eben ein ungültiger Wert, allerdings musst du dann den Speicher für jeden Wert manuell alloziieren und am Ende auch wieder freigeben.

Ein String-Array wäre auch eine Möglichkeit, dann musst du eben zwischen Single und String hin und her wechseln.

Du könntest auch meinen schon etwas betagten Variant-Datentyp nutzen, der hat intern zwar keine Singles, aber Doubles. Dann kannst du im gleichen Array deine nummerischen Werte halten, aber auch einen Leerstring reinsetzen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 06.02.2014, 10:21    Titel: Antworten mit Zitat

MOD hat Folgendes geschrieben:
Ein Single kann nur gültige Werte enthalten

FreeBASIC wird doch wohl irgendeinen dokumentierten Weg (außer halt direkt passenden IEEE-Werte in die Variable zu schreiben) haben, NaN oder Inf in Floats zu schreiben?!
_________________
» 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
nemored



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

BeitragVerfasst am: 06.02.2014, 17:02    Titel: Antworten mit Zitat

DIM AS SINGLE a = 1/0, b = SQR(-1)

Ob das "legale" Wege sind, weiß ich nicht ...
_________________
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
Muecke
Gast





BeitragVerfasst am: 14.02.2014, 18:15    Titel: Antworten mit Zitat

hmm OK, so einfach ist das dann nicht traurig

werde mir das mit dem "Variant-Datentyp" mal genauer anschauen.

@nemored: was du mir damit sagen möchtest ist mir ehrlich gesagt schleierhaft. traurig
Nach oben
Jojo
alter Rang


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

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

Muecke hat Folgendes geschrieben:
@nemored: was du mir damit sagen möchtest ist mir ehrlich gesagt schleierhaft. traurig

Beides wären Anweisungen, die eine ungültige Floating-Point-Zahl generieren würden, was aber auch in die Hose gehen kann, da der Compiler so etwas typischerweise einfach wegoptimieren darf, oder das Programm kann bei der Berechnung abstürzen.
_________________
» 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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 14.02.2014, 20:32    Titel: Antworten mit Zitat

Hallo!

Ich habe nemoreds Vorschläge -aus reiner Neugierde- mal ausprobiert.
"SQR(-1)" liefert als Ergebnis "-1.#IND" und "1/0" ergibt "1#.INF", beides Kennzeichnungen für einen ungültigen Wert.

Kein Kompilerfehler, kein Programmabsturz, man könnte das also auswerten und damit weiterarbeiten, auch wenn die Methode sicher nicht ganz "sauber" ist.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 15.02.2014, 15:39    Titel: Antworten mit Zitat

1/0 ist ganz schlecht ... sowas wird regulär von der CPU mit einer CPU exception Division By Zero quitiert. Das kann dann (sollte es auch) je nach OS zu einem app-ende führen, da der weitere Programmverlauf nicht mehr konsistent sichergestellt werden kann.

Lege lieber eine art Variant-Datentyp an, in dem du spezifizieren kannst, was du für daten hinterlegst, und ob diese valide sind.

Du könntest z.B. ein Integer oder LongInt nehmen, und darin daten ablegen ... das letzte bit nutzt du dann eifach als konsistenzprüfungsbit.

Code:

dim t as integer = &B10000000000000000000000000000000 or (10 + 1)

Durch das vorherschende "signed" bit, das du von hand spezifizierst kannst du dann zwar nur noch &HFFFFFFFF / 2 Werte speichern ( bei nem int), hast allerdings auch die möglichkeit in einer einzigen variable daten und konsistenzinformationen zu hinterlegen.

LongInt wären dann &HFFFFFFFFFFFFFFFF / 2 möglich


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 15.02.2014, 16:14    Titel: Antworten mit Zitat

Wäre so etwas nicht auch als UNION denkbar, wo man über INTEGER die Speicherentsprechung eines inf bzw. NaN reinschreibt und es als DOUBLE wieder rausliest? Gut, würde wohl auch über Pointer-Zugriff gehen. +inf, -inf und NaN sind ja in der Gleitkomma-Spezifikation klar festgelegt.

Zitat:
Das kann dann (sollte es auch) je nach OS zu einem app-ende führen

Hat es bei mir unter verschiedenen Systemen bisher noch nicht getan; aber ich bin ebenfalls davon ausgegangen, dass nicht garantiert ist, dass jedes System dasselbe macht.
_________________
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
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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