Zum Inhalt springen

AndiE

Mitglieder
  • Gesamte Inhalte

    156
  • Benutzer seit

  • Letzter Besuch

Beiträge von AndiE

  1. Hallo,

    das ist ein interessantes Thema.

    Mit

    float f=3.1415926f;

    kann ich eine Zahl abspeichern und mit

    adr=&f;

    die Adresse der Zahl abfragen.

    Aber wie bekomme ich daraus die vier Byte, in denen die Zahl dargestellt wird?

    Mit (char)*adr geht das nicht- Ergebnis=0.

    Ich glaube, mal gelesen zu haben, es ginge mit "bitfields".

    Aber ich weiß nicht mehr genau.

    Ich musste mal ein Programm schreiben, das aus einer Folge von 0 und 1 die dazugehörige Dizimalzahl berechnet. Aber wie bekomme ich eine float-Zahl dazu, mir ihre vier Byte zu übergeben?

    LG

    André

  2. Hallo Herki,

    mir ging nicht es nicht darum, dir zu helfen, einen Taschenrechner zu erstellen, sondern um diese Dinge, weil sie grundlegende Denkweisen der OOP(OOA und OOD) und MVC beinhalten:

    1. Erzeugung einer View-Document-Architektur aus Fenster-, Dokument- und Rahmenfensterklasse

    2. Abfangen einer "Mouse clicked"- Botschaft und Aufruf eines Dialogs

    3. Erstellung eines Dialogs mit verschiedenen Eingabeelementen

    4. Auswertung der Dialogeingaben in der Dokumentenklasse

    5. Auslösen eines Neuzeichnens

    6. Darstellung der Daten im Ansichtsfenster

    Da dabei acht und mehr Dateien entstehen können, halte ich es für vorteilhaft, sich die Zusammenhänge graphisch darzustellen, z.B. mit UML-Diagrammen.

    Das scheint hier zwar nicht nötig, weil die Zusammenhänge sehr überschaubar sind, sollte aber be anderen Projekten helfen.

    LG

    Andre'

  3. Hallo,

    ich habe zu dem Thema bei Wiki gestöbert, und könnte mir das als Schichtmodell so vorstellen:

    die nullte Schicht ist die Plattform.

    die erste und für den Programmierer unterste Schicht ist die programmtechnische Umsetzung(Programmiersprache)

    darüber ist die zweite Schicht, das programmspezifische UML

    darüber die dritte Schicht, das fachbezogene UML

    darüber als vierte Schicht ein auf den Einzelfall zugeschnittenes Modell

    darüber als fünfte Schicht ein Modell für eine bestimmte Anwendungsgruppe(Domäne).

    Das soll dann so funktionieren:

    Gegeben sei ein System zur Verwaltung für Verleiher.

    Es steckt dahinter ein für die Branche allgemein gültiges Modell(5).

    Für einen konkreten Betrieb wird das Modell angepasst(4), wozu Anweisungen genutzt werden, also ist das Modell so etwas wie eine Metasprache.

    Nun entsteht daraus ein fachbezogenes UMl für die Kommunikation mit dem Kunden (3) und ein programmspezifisches UML(2).

    Daraus entsteht der Quellcode(1), der für die Plattform(0) erstellt wird.

    Die Ubergänge machen die UML-Tools.

    Das Beispiel läßt sich mit Web-Services, weil die auch Dömane sein müßten, auch so durchspielen.

    Vielleicht liege ich auch falsch damit, aber so ließe sich für mich der Zusammenhang zu den anderen genannten Begriffen herstellen.

    LG

    Andre'

    1

  4. Hallo Herki,

    Ein Taschenrechner, mit einer Funktion, wie du sie beschreibst sollte dein Fernziel sein.

    Ich würde diesen Weg vorschlagen:

    Dein 1. Ziel sollte so sein:

    Eine Windows-Form, die bei Maus-Klick auf das Fenster ausgeführt wird. Zwei Operanden(Textfelder) und die Operation(Radio-Button) werden eingestellt. Bei Druck auf den "OK"-Button wird in die Ansicht das Ergebnis gezeichnet.

    2. Ziel=1. Erweiterung

    Zusätzlich können mehrere Zahlensysteme eingestellt werden

    3. Ziel =2. Erweiterung

    Umwandlung der Form zur Eingabe der Aufgabe mit einem Operandin ein Textfeld.

    Umstellung der Ansicht auf eine FormView. Ein zweites Textfeld zeigt das Ergebnis.

    Ein Button "Losrechnen"

    Aufgabenlösung mit einer Parser-Klasse.

    4. Ziel=3. Erweiterung

    Umwandlung des Parsers für Aufgaben mt mehreren Operanden mit der typischen Leserichtung von links nach rechts.

    5. Ziel =4. Erweiterung

    Umstellung des Parsers auf Punkt-vor-Strichrechnung

    6. Ziel =5. Erweiterung

    Umstellung des Parsers auf Zahlensysteme

    Fernziel=6. Erweiterung

    Hinzufügen komplexer Zahlen als eigen entwickelte Datenstruktur

    Nach meiner Erfahrung solltest du früh anfangen, dir klarzumachen und vorzustellen, wie die Programme funktionieren und aufgebaut sind, und wie die beteiligten Objekte erzeugt und zerstört werden.

    Dazu hilft und unterstützt dich die UML.

    Du lernst Kapselung, Vererbung und Nachrichten kennen, wesentliche Bestandteile der OOP.

    Günstiger zum Lernen wäre es vielleicht, eine Adressverwaltung o.ä. zu programmieren. Aber das kann ja das nächste Projekt sein.

    Vielleicht konnte ich helfen.

    LG

    Andre'

  5. Ok,

    ich habe überlegt, dass es zwei Extreme gibt:

    a) 15,16,17,18,11,12,13,14

    und

    B) 11,13,15,17,12,14,16,18

    in a)

    Das Minimum von Teilliste A ist größer als das Maximum von Teilliste B.

    Das Maximum von Teilliste B ist kleiner als das Minimum von Teilliste A.

    ->der Bereich der Listen liegt nebeneinander.

    in B)

    Das Minimum von Teilliste A ist kleiner als das Maximum von Teilliste B

    Das Maximum von Teilliste B ist größer als das Maximum von Teilliste A

    -> der Bereich der Listen liegt übereinander

    Lösung:

    in a)

    vertausche die Stellen:

    5 und 1

    (Lade 5 in M1, lade 1 in 5, lade M1 in 1)

    6 und 2

    7 und 3

    8 und 4

    ->in-place OK

    in B)

    lasse 1(11)

    merke 2 als M1(13)

    setze 5 auf 2 (12)

    merke 3 als M2(15)

    setze M1 auf 3 (13)

    merke 4 als M1 (17)

    setze 6 auf 4 (14)

    setze M2 auf 5(15)

    setze 7 auf 6 (16)

    setze M1 auf 7

    lasse 8(18)

    -> das bedeutet, theoretisch käme man mit zwei Merkvariablen(M1 und M2) aus.

    fast in-place(??)

    Die Frage ist nun,

    a)wie man das in Anweisungen umwandelt, und

    b)die Fälle zwischen a) und B) unterscheidet.

    LG

    André

  6. Hallo,

    ich denke, dass die Aufgabenstellung so nicht möglich ist.

    ich habe das Prinzip vom "merge" so verstanden:

    Wenn F ein Array mit den sortierten Namen der Frühschicht und S ein Array mit den sortierten Namen der Spätschicht sei, dann kann ich mit "merge" ein Array B für die sortierten Namen der Belegschaft erzeugen.

    B=merge(F,S);

    Dabei werden die Daten aus den beiden anderen "Quell"-Arrays nach ihrem Wert in das neue "Ziel"-Array eingefügt.

    Nach dem "merge" existieren drei Arrays, deren Daten sich je nach Anwendungsfall unterscheiden.

    Ähnlich ist es z.B. bei Inventaren.

    Wenn die Abteilungen ihre Inventare aufnehmen, kann ich sie mit merge zu einem Gesamtinventar zusammenführen, aber die Einzelinventare bleiben für sich doch bestehen.

    LG

    André

  7. Hallo,

    ich hätte zwei Ansätze:

    a) im angegebenen Link unter documetation->technical notes" nachsehen(XTS, AES usw.)

    B) im Verzeichnis "common" gibt es eine Datei "tests.c" mit "tests.h", in der die verschiedene Algorithmen getestet werden. Von da aus könnte man den Code aufbröseln.

    Viele Spass dabei!

    LG

    André

  8. Hallo,

    ich hatte mich mich bisher noch nie richtig mit dem "Stream-Konzept" C++ beschäftigt. Bisher habe ich mir die Daten von der Tastatur oder dem Dialog geholt und auf den Monitor/View geschrieben. Auf den datenträger habe ich Daten nur geladen und gespeichert.

    Nun wollte ich für ein Projekt unter ausschliesslicher Nutzung der MFC einen HTML-ähnlichen Eintrag, der in einer Datei vorliegt, verarbeiten:

    <satz nr=1 > Text </satz>

    Das Programm soll hier den "Text" in einem CStringArray satz unter der Nr 1 speichern.

    Mein Vorgehen wäre(Datei ist geöffnet), um den ersten "Tag" zu laden :

    
    char c;
    
    CStringList arglist;
    
    CString wort;
    
    CFile file;
    
      do
    
      {
    
         // Werte zurücksetzen
    
         wort="";  
    
         zeichen=0x20;
    
         do
    
         {
    
            file.read(c,1)
    
            wort+=c;
    
         }while(c!=' ') // Lese Wort
    
         arglist.append(wort);
    
      }while(wort!='>');
    
    

    Der Code soll eine StringListe wie diese erzeugen:

    1. <satz

    2. nr=1

    3. >

    Das würde mir schon zur Weiterverarbeitung reichen, weil ich dann die Argumente prüfen und aus dem zweiten Eintrag die Satznummer abtrennen kann.

    Nun wird immer nur ein Zeichen eingelesen, was bei längeren Dateien sicher nicht sehr effektiv ist.

    Hat jemand eine Idee oder enen Link, wie ich das effizienter lösen kann?

    Danke

    MfG

    André

  9. warum macht man es sich nicht einfach und schreibt über uml genau das:

    uml ist ein sammelsurium von Diagrammarten, die unterschiedliche Sachverhalte darstellen können (z.b. wie ein programm und seine klassen aussehen, geschäftsprozesse uva).

    es gibt ingesamt 13 diagrammarten.

    Weil das "L" bei UML "Language" also "Sprache" bedeutet.

  10. bis jetzt halte ich uml für einen haufen mist und ich kann das am text belegen

    Hallo,

    das kann ich so nicht stehen lassen. Ich habe gerade ein "e-learning"-Projekt begonnen, dass ich mit dem Gerüst der MFC erstellen will. Nach meinen bisherigen Erfahrungen hilft mir UML bei der Projektplanung ungemein, und ich ärgere mich etwas, das ich es nicht vorher kannte. Ohne UML ist z.B. die Darstellung der Verarbeitung von "windows messages" in verschiedenen Klassen ganz schlecht darstellbar.

    LG

    André

  11. Hallo,

    ich weiss, dass mein Beipsile "Prädikatenkalkül" ist, und in Prolog besser umgesetzt werden kann.

    Ich bin aber durchaus auch der Meinung, dass sich das in einer Sprache wie C++ umsetzen lässt.

    Ich meine, dass Semantische Netze zur Wissenspräsentation als erstes geeignet sind, weil sie sich grafisch darstellen lassen als Strecke( für Relation) zwischen zwei Punkten( für die Objekte). Im Beispiel ging es darum, aus den Strecken AB und BC ein Dreieck ABC zu bilden. Die Relation AC ist aus den anderen beiden abgeleitet.

    In diesem kleinen Beispiel ergibt sich daher, dass die Datenbank nur zwei Beziehungen speichern muss, die dritte wird vom System gebildet.

    Das System benötigt zur Darstellng des Wissens damit eine klein(er)e Datenbank, und eine (kleine) Wissensbank.

    Dass das System selbst Daten hinzufügen und verwerfen kann, ist gerade das Besondere an solchen KI-Systemen.

    User: Ich habe einen Vogel gekauft

    Chatbot:Vogel- Kenne ich nicht. Was ist ein Vogel?

    User: En Vogel ist sowas wie ein Tier.

    Nun soll das Chatbot einen neuen Knoten "Vogel" anlegen und ihn mit leeren Knoten verbinden, wozu er die Relationen des bekannten Knotens Tier nutzt. Wenn das System nun die Relationen abfragt, sammelt es Wissen über Vogel.

    Das Spannende hier ist wiederum, dass der Nutzer selbst auch neue Relationen an den Knoten ergänzen kann.

    Das nächste Problem dabei zeigt sich "Ist A ein Vogel, kann A fliegen"-"Ist A ein Pinguin kann nicht fliegen". Daten sind also immer wichtiger als geschlussfolgertes Wissen.

    dass bei der Verarbeitung "Muster" genutzt werden, halte ich für normal, weil wir als Menschen selbst beim Reden und Schreiben auch Muster benutzen.

    Schönen Abend noch,

    André

  12. Hallo,

    danke für de Antwort. Wenn ich etwas weiter denke, dann kann ich über mein Netz Regeln aufstellen, z.B.:

    IF (A,Vater von,B) AND (B, Vater von, C), THEN (A,Grossvater von,C)

    Diese Regeln(Rules) sollen das "Wissen" über die "Daten" darstellen.

    (nach "Grundlagen künstlicher Intelligenz"von ??, 198?)

    Ich könnte mit vorstellen, das das den Speicherbedarf der Datenbanken reduziert.

    Aber vielleicht sollten wir darüber ein neues Thema aufmachen?

    LG

    André

  13. Hallo,

    ich hatte mal vor einigen Jahren die Idee, ein "Semantisches Netz" aufzubauen. Grundlage war, dass das kleinste Element aus Subjekt, Prädikat, Objekt besteht. Dabei sind Subjekt und Objekt Objekte und das Prädikat eine Relation zwichen beiden.

    Das SN hat als notwendige Knoten:

    - Wurzel der Objekte

    - Wurzel der Relationen

    Es hat als notwendige Relationen:

    - is kind of (iko), ist Teil von

    - has as kind (hak), hat als Teil

    - is same as ( isa), ist soviel wie

    In meinem Modell habe ich (o,r,o) eingegeben, um einen Eintrag zu erzeugen. Dabei ist o ein Objekt, und r eine Relation.

    Z.B. ("9","*9","81") bedeutet 9*9=81.

    Wenn ich min. einer Stelle ein "?" eingegeben habe, dann hat mir das programm die Sätze rausgesucht, die passen.

    z.B. ("?","*9,"81") entspräche der Frage "Mit was muss man neune multiplizieren um 81 zu erhalten" und es ergebe den oben genannten Satz.

    Weiter habe ich das Projekt bisher nicht verfolgt.

    Vielleicht könnt ihr das was draus machen!

    LG

    Andre'

  14. Hallo,

    vielleicht habe ich nur einen Denkfehler. Diese Sequenz hatte ich dafür gemacht, damit bei einer fehlerhaften Eingabe der Nutzer die Daten noch einmal eingeben muß.

    float l;

    float b;

    float h;

    do

    {

    cin >> l >>b >> h ;

    }while(cin.good()==NULL);

    cout << l+b+h >>endl;

    Gee ich "10 10 10" ein, kommt das richtige Ergebnis "1000". Gebe ich aber ein "10 10 e", geht das Programm in eine Endlosschleife.

    Wie kann ich "cin" leeren? "flush" soll nur bei ostream gehen.

    LG

    Andre'

  15. Hallo,

    ich habe an einer Stelle im Forum von "Syntaxdiagrammen" gelesen. In einem alten Fachbuch (80-er) ist von Ein- und Ausgabediagrammen die Rede.

    Die wären eher für Konsolenanwendungen interssant, weil man ja meines Wissens bei GUI eher Skizzen der Dialoge, Menus, Ausgabefenster usw. benutzt.

    Meine Frage ist , ob so etwas überhaupt noch genutzt/gelernt wird?

    LG

    Andre'

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...