2 Aufgaben zum Erstellen eines c++ Programms



  • Hi, ich bin hier neu im Forum. Wir haben im Fach "c++ Programmieren" zwei Aufgaben aufbekommen:

    1. Aufgabe:

    Entwickeln Sie ein Programm, das das Ergebnis der Multiplikation zweier
    Matrizen ausgibt.

    C = A * B

    Damit die Multiplikation zweier Matrizen möglich ist, muss die Spaltenzahl
    der Matrix A mit der Zeilenzahl der Matrix B übereinstimmen.
    Ein Wert in C ergibt sich aus der Summe der Produkte der entsprechenden
    Werte aus A bzw. B.

    Bsp.:
    C(1,1) = A(1,1) * B(1,1) + A(1,2) * B(2,1) + A(1,3) * B(3,1)

    2. Aufgabe:

    Auf dem Konzil von Nicäa (325 n. Chr) wurde festgelegt, dass der Ostersonntag
    der erste Sonntag nach dem ersten Vollmond im Frühling ist. Der geniale
    Mathematiker Carl Friedrich Gauß (1777-1855) hat im Jahr 1800 folgendes
    einfache Verfahren zur Berechnung des Ostertermins entwickelt (das hier für die
    Jahre von 1583 bis 2199 beschrieben ist). Ausgangspunkt ist folgende Tabelle:

    Jahr M N
    1583-1699 22 2
    1700-1799 23 3
    1800-1899 23 4
    1900-2099 24 5
    2100-2199 24 6

    Aus der gegebenen Jahreszahl und den Werten M und N werden weitere Werte A,
    B, C, D und E berechnet:
    • A, B und C sind die Reste der ganzzahligen Division der Jahreszahl durch 19, 4
    und 7.
    • D ist der Rest der ganzzahligen Division von (19A + M) durch 30
    • E ist der Rest der ganzzahligen Division von (2B + 4C + 6D + N) durch 7.
    Dann ist der Ostersonntag gleich dem (22+D+E)-ten März, falls (22+D+E) ≤ 31,
    und sonst der (D+E–9)-te April. Dabei sind noch folgende Sonderfälle zu
    berücksichtigen:

    • Ergibt sich der 26. April, so setze den 19. April als Ostertermin
    • Ergibt sich der 25. April und gilt D = 28, E = 6 und A > 10, so fällt der
    Ostersonntag auf den 18. April.
    Aus dem Ostertermin lässt sich einfach der Termin für Pfingsten ableiten: Der
    Pfingstsonntag ist immer der siebte Sonntag (d.h. 49 Tage) nach Ostern.

    a) Schreiben Sie ein Funktion osterterminBerechnen, die nach dem oben
    beschriebenen Algorithmus den Ostertermin zu einer gegebenen
    Jahreszahl berechnet.
    Diese Funktion soll drei Parameter für Jahr, Monat und Tag besitzen
    (jeweils als unsigned-Wert). Das Jahr ist ein Eingabewert der Funktion.
    Über die Parameter für Monat und Tag soll das Ergebnis zurückgegeben
    werden
    (Tipp: Denken Sie an Call-by-Reference).
    Der Rückgabewert der Funktion soll int sein: Der Wert 0 kennzeichnet die
    erfolgreiche Ausführung der Funktion, ein Wert ungleich 0 meldet eine
    fehlerhafte Ausführung (z.B. Jahreszahl liegt nicht im zulässigen Bereich).

    b) Schreiben Sie analog ein Funktion pfingstterminBerechnen, die den
    Pfingsttermin zu einer gegebenen Jahreszahl berechnet.

    c) Schreiben Sie eine Hauptprogramm, das vom Benutzer zwei Jahreszahlen
    j1 und j2 einliest und dann für alle Jahre von j1 bis j2 das Jahr und den
    Ostertermin ausgibt.

    Zum Test sind hier einige Oster- und Pfingsttermine angegeben:

    Jahr Ostertermin Pfingsttermin

    1699 19.Apr 07.Jun
    1700 11.Apr 30.Mai
    1799 24.Mrz 12.Mai
    1800 13.Apr 01.Jun
    1899 02.Apr 21.Mai
    1900 15.Apr 03.Jun

    Jahr Ostertermin Pfingsttermin

    1943 25.Apr 13.Jun
    1954 18.Apr 06.Jun
    1981 19.Apr 07.Jun
    1998 12.Apr 31.Mai
    2003 20.Apr 08.Jun
    2004 11.Apr 30.Mai

    Das sind die zwei gestellten Aufgaben. Bisher haben wir bei unserem Professor noch einfachere Dinge gemacht aber bei den beiden Aufgaben tu ich mir schon schwer, könnt ihr mir da irgendwie helfen? Wär echt nett. Als Software zum Programmieren für C++ verwenden wir Microsoft Visual Studio 2005 bzw. 2008.


  • Administrator

    Lenni1986 schrieb:

    Das sind die zwei gestellten Aufgaben. Bisher haben wir bei unserem Professor noch einfachere Dinge gemacht aber bei den beiden Aufgaben tu ich mir schon schwer, könnt ihr mir da irgendwie helfen? Wär echt nett. Als Software zum Programmieren für C++ verwenden wir Microsoft Visual Studio 2005 bzw. 2008.

    Und was schwebt dir da so vor, wie wir dir helfen sollen?
    Es gibt nur sehr wenige in diesem Forum, welche mit dir Mitleid haben werden und die Aufgabe für dich lösen. Der Rest verlangt dafür Geld 😉

    Bring einen Ansatz, versuch es zuerst selbst, bei konkreten Fragen helfen wir gerne auch gratis weiter 😉

    Grüssli



  • ey warum machen soviele leute ein informatik studium oder eine info ausbildung und können von vorne rein nix und haben auch keine lust das zu lernen?

    und die es können bzw können wollen bleiben ohne...



  • Falls dir die Beschreibungen deiner beiden Aufgaben noch zu wenig Hilfe bieten sollten um dich auf einen ersten Lösungsansatz zu bringen, dann könnten dir vielleicht die folgenden Links zu Wikipedia noch weiterhelfen:
    Berechnung des Pfingsdatums
    Matrizenmultiplikation
    Und zur Berechnung des Datums der Osterfeiertage habe ich noch den folgenden Link, der sich einfach nicht mit Hilfe der url -Tags verlinken lassen will (doofes 'ß' 😡):
    http://de.wikipedia.org/wiki/Gaußsche_Osterformel#Originalfassung
    Edit: Den letzten Link wirst du wohl kopieren müssen :).



  • #include <iostream.h>
    #include "SquareMatrix.H"

    class TestMatrix {

    public:

    TestMatrix(int n) : a(n), b(n), c(n) {
    for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
    a.set(i, j, i + j);
    b.set(i, j, i - j);
    }
    b.set(i, i, 1.0);
    }
    }

    void run() {
    a.mult(b, c);
    }

    void check() {
    int n = a.shape()[0];

    double sp_th = n * (n + 1);
    double sp = c.trace();

    double c12_th = (n * n * n - 7 * n + 9) / 3.0;
    double c12 = c.get(1, 2);

    cout << "Spur theoretisch: " << sp_th << endl;
    cout << "Spur : " << sp << endl;
    cout << "c(1,2) theor. : " << c12_th << endl;
    cout << "c(1,2) : " << c12 << endl;
    }

    private:

    SquareMatrix a, b, c;
    };

    int main(int argc, char* argv[]) {
    try {
    TestMatrix tm(500); // initialisiert alles
    tm.run();
    tm.check();
    } catch (char* info) {
    cerr << "EXCEPTION: " << info << endl;
    return -1;
    }
    }

    Hab jetzt mal die Matrixmultiplikation probiert, aber in Visual Stuido express 2008 kommt beim debuggen bzw compileren dass er squarematrix.h no such a file sagt



  • Wahrscheinlich befindet sich die Datei nicht im gleichen Ordner oder heisst nicht genau so wie angegeben.

    Benutze bitte C/C++-Tags, um den Code schön zu formatieren. Also mit [cpp] und [/cpp].

    Ausserdem ist <iostream.h> nicht Standard-C++, der richtige Header würde <iostream> heissen.


Anmelden zum Antworten