Beiträge von Wasserleiche

    Also du müsstest erstmal sagen unter welchem Betriebssystem. Denn das funktioniert nicht mit ISO C++.
    Das Programm müsste sich schon auf die API des OS stützen. Oder man macht das mit Qt oder einem anderen Framework.

    Außerdem glaube ich kaum das jemand Lust hat dir das zu schreiben, weil da ist ja überhaupt kein Sinn dahinter.

    Am besten ist du schreibst es dir selbst. Und keine Angst, du musst nicht extra C++ dafür lernen, ich würde das per AutoHotkey machen (allerdings nur unter Windows). Das wären 4 bis 5 Zeilen Code. Das geht 1. schneller und ist 2. einfacher.

    Space man hat sicherlich recht.

    Überprüf doch mal dein struct mit sizeof(), ich bin mir sicher das du ein anderes Ergebnis bekommst als du erwartest!

    Aber ob du das mit #pragma pack(1) beheben kannst, hängt vom Compiler ab. Bei gcc benötigst du so weit ich weiß __attribute__ ((packed)).

    Es existiert eine STL Implementierung für Permutationen: Link.
    Die ist afaik iterativ gelöst.

    Selber zu machen ist es wesentlich einfacher per Rekursion. Probier es doch selber mal anstatt auf ein Code Beispiel zu warten.

    PS: ich hab 2 Minuten gebraucht um via google eine fertige Implementierung zu finden, also einfach mal selber suchen...

    Ok, hab da ein bisschen Müll erzählt.

    Ich hab das gerade mal ausprobiert, und so wie es aussieht braucht der Compiler bei einer solchen statischen Matrix die Größe. Es reicht also nicht "short** variable" zu übergeben, sondern die Größe muss mit angegeben werden: "short variable[2][6]".
    Dann funktioniert das problemlos.

    Komischerweise funktioniert es bei einem normalen Array auch ohne die Größe:

    Also ich weiß jetzt auch nicht genau warum der Compiler bei einer Matrix die Größe benötigt. Muss ich mich mal informieren...

    Also, die Sache ist eigentlich ganz einfach, du hast wahrscheinlich nur bei den Pointern noch kleinere Defizite.

    Dein Problem ist, dass die Funktion calculateMoveClass::init einen Pointer auf den primitiven Typ "short" erwartet. Du übergibst aber der Funktion einen Pointer der wiederrum auf einen Pointer auf den primitiven Typ short zeigt.

    Hier mal der Hinweis:

    Code
    short points[...][...];
    // ist nichts anderes als
    short* points[...];
    // oder
    short** points;
    /* mit _einem_Unterschied_
     * du holst dir mit den eckigen Klammern und einer Zahl darin
     * direkt Speicher, was du bei short** points nicht tust
     */

    Wenn du das verstanden hast, brauchst du nur die Methode so anpassen:

    Code
    void calculateMoveClass::init(short** points)
    {
       // do something
    }

    Und schon sollte es funktionieren.
    Aber Vorsicht: wenn du die Größe der Matrize nicht übergibst, musst du aufpassen nicht über die Grenzen zu laufen. Auf gut deutsch, dass hier darfst du nicht:

    Code
    void calculateMoveClass::init(short** points)
    {
       points[2][6] = ... // falsch
       points[1][5] = ... // richtig, "letztes" Element
       points[0][0] = ... // richtig, "erstes" Element
       // oder anders rum
       ... = points[1][3];
    }

    Naja, ein einfacher Character ist intern auch nichts weiter als ein Integer. Deswegen kann man diese beiden Typen eigentlich problemlos vergleichen.

    Also folgender Code funktioniert bei mir wunderbar:

    PS: ich versteh eigentlich nicht was die Variable iHelp soll, aber wahrscheinlich ist das nicht der ganze Quellcode...

    Also ich würde das ein kleinwenig anders machen, um Probleme zu vermeiden:

    1. "strlen(map.c_str())-1" ist das selbe wie "map.size()" und geht schneller
    2. anstatt const char* Variable würde ich ein einfaches char nehmen (du willst sowieso nur ein Zeichen haben) und das mit map[i] belegen

    Damit sollte auch die if Anweisung funktionieren, vorausgesetzt du nutzt die einfachen Anführungszeichen.

    Noch ein Tipp: falls du wirklich mal c-strings vergleichen willst (char*), nimm die Funktion strcmp(...), die ist für solche Zwecke gedacht.

    Jeder sieht das mit der Komplexität anders. Gerade am Anfang fällt es den einen viel einfacher, und andere brauchen etwas länger um bestimmte Dinge zu durchschauen. Doch wenn man Interesse an der Sache hat, sollte man sich nicht entmutigen lassen!

    Find ich super wie du deine Probleme selbst gelöst hast. Und du hast recht, eine Referenz auf eine lokale Variable ist nicht sinnvoll.

    Deswegen solltest du die Variable erg komplett weglassen, und stattdessen auf dem aktuellen Objekt arbeiten:

    Code
    safe_int& safe_int::operator+(safe_int b)
    {
        if((b.val>0 && val>lim-b.val) || (b.val<0 && -val>lim+b.val)) {
            throw overflow("Addition",val,b.val);
        }
        val = val + b.val;
        // oder
        // val += b.val;
        return (*this);   
    }

    Also ich werde dir die Aufgabe jetzt nicht lösen, aber hier mal ein paar Tipps:

    1. friend brauchst du bei Memberfunktionen nicht mehr.

    2. du bekommst als Parameter nur noch einen safe_int übergeben, der zweite ist das eigentliche Objekt (this, also dieses Objekt auf dem du dann arbeitest).

    3. gibt immer eine Referenz auf safe_int zurück, damit so was geht:

    Code
    a = b + c + d; // a,b,c,d sind safe_int

    Ach und ich muss sagen, dass ich das mit dem String-ctor nicht versehe. Warum nicht ein Integer-ctor "safe_int(int zahl);" ? Wäre das nicht sinnvoller?

    Ich will dir nicht ausreden dir selber etwas über C/C++ beizubringen. Gerade wenn man die ersten Erfolgserlebnisse hat (sinnvolle, funktionstüchtige Programme) ist das super. Aber bis dahin vergehen schon einige Wochen/Monate (wenn man nicht vollzeit dran sitzt).

    Ich hab mir mal einige Beschreibungen von Programmen bei murb.com angesehen. Ich denke die Schwierigkeitsgrad dieser Programme ist sehr unterschiedlich. Zum Beispiel ist es kein Problem einen kleinen Passwortgenerator zu schreiben. Das größere Problem für dich dabei ist dann eher die GUI (grafische Oberfläche). Bevor du nämlich damit anfängst, solltest du einiges an Grundwissen haben.

    Aber wie gesagt, weder bei mir im Studium, noch bei einem Kumpel auf der Berufsschule wurden Vorkenntnisse erwartet. Aber du kannst dich drauf einstellen in der BS die erste Zeit (Monate/Schuljahre) nur auf Konsole zu programmieren.

    Das liegt ganz einfach daran, dass du bei "cout << feld;" jedes mal nur die Adresse des Pointers "feld" ausgiebst. Du musst den Zeiger (Array ist in deinem Fall ein Pointer auf das erste Objekt) dereferenzieren.

    Außerdem nutzt du den Operator sizeof falsch. Der gibt die Anzahl der belegten Bytes zurück, nicht die Länge des Arrays. Überarbeite das nochmal!

    Die Ausgabe sollte in etwa so aussehen:

    PS: wegen deinem sizeof Problem: ich würde bei der Funktion immer die Größe des Arrays mit übergeben. Dann hast du damit keine Probleme...

    Also wenn ihr es in der Berufsschule sowieso lernt, würde ich mir gut überlegen selbst viel Zeit reinzustecken. Es ist natürlich sinnvoll Grundkenntnisse mitzubringen, dann fällt dir die Sache später wesentlich leichter.

    Aber so ganz ohne ist es sicher nicht. Ich denke (meine ganz persönliche Meinung) für eine Hochsprache ist C/C++ doch sehr lowlevelig. Bei vielen Problemstellungen geht es runter bis zur Bitschieberei, was du bei anderen Hochsprachen wie Java wahrscheinlich nicht so schnell haben wirst.

    Ich glaube kaum das man in der Berufsschule Vorwissen voraussetzt. Aber ich würde mich wahrscheinlich, wenn ich Zeit hätte, mich ein bisschen einarbeiten. Eben ums leichter zu haben. Wenn das allerdings nur schwer möglich ist, weil zu viel anderes um die Ohren, kannst du das sicher auch lassen.

    Edit:
    Ach und wegen der Zeitangabe die du gerne hättest: das kann dir wohl kaum jemand sagen. Das hängt von deinen aktuellen Wissen ab, und wie weit du kommen willst.

    Nein, natürlich ist es nicht unmöglich mit der Threadprogrammierung.

    Aber bei C musst du da entweder auf Bibliotheken zurückgreifen, oder direkt auf der API der Betriebssystems programmieren. Unter Linux gibt es dafür die altbekannten p-threads. Hier ein Link mit einer schnellen und meiner Meinung nach guten Einführung in pthreads.

    Unter Windows hast du dafür die WinAPI.

    Platformübergreifend gibt es dann (zum Beispiel) noch die ACE Library. Die ist sehr mächtig, aber auch ein "dickes Ding". Homepage von ACE.

    Wo liegt denn das Problem, setw(3) setzt die Feldweite der nächsten Variablen auf 3 und damit wollte alles schön untereinander kommen, außer die Variablen sind größer und brauchen mehr Platz.

    Poste doch mal die Datentypen der Variablen, die erwünschte und die aktuelle Ausgabe...

    Naja, ist eigentlich ganz einfach. Du brauchst in der Tabelle Projekte noch ein Feld mit der KundenID, um eine Referenz herzustellen.

    Das ist eben eine 1 zu n Beziehung. Hat außerdem nichts mit php zu tun, sondern ist ein Datenbankthema (bei dir mysql).

    Um jetzt alle Projekte von einem Kunden abzufragen, ist folgender query nötig:

    SQL
    SELECT *
    FROM Projekte
    WHERE Kunden_ID = %kundenid%

    %kundenid% ist hier natürlich nur ein Platzhalter...

    Was du da an Code geschrieben hast ist aber kein reines C/C++, sondern die WinAPI.

    Wenn du absoluter Anfänger bist, lass dort erst mal die Finger weg und kümmer dich um pures C/C++.

    Ein lauffähiger Code wäre folgender:

    So, damit sollte es funktionieren (also das Kompilieren & Ausführen).