Hilfe C++ Arrays kopieren



  • Hallo Leute,

    ich habe eine Hausaufgabe, die ich bis Montag abgeben muss.
    Sie Lautet:

    Präsenzaufgabe:
    Schreiben Sie ein C++ Programm ohne Klassen, das folgende Anforderungen abbildet:
    - Im main-Programm sollen zwei arrays fester Länge definert und initialisiert werden. Array1 soll eine andere Länge als Array2 haben. Lesen Sie die Werte zur Initialisierung über die Tastatur ein.
    - Schreiben sie eine Ausgabe-Funktion, die den Inhalt eines beliebigen float-arrays auf dem Bildschirm ausgibt. Der Ausgabe-Funktion soll ein array als Funktionsparameter übergeben werden.
    - Geben Sie die Adressen und die Werte beider arrays auf dem Bildschirm aus. Das array mit der niedrigsten Startadresse im Hauptspeicher soll zuerst ausgegeben werden.
    Hausaufgabe:
    Lösen sie die Präsenzaufgabe mit Hilfe einer Klasse, d. h. die beiden (statischen) arrays sollen als Datenelemente in der Klasse definiert werden. Die Klasse soll neben der Ausgabe-Methode eine zusätzliche Kopier-Methode enthalten, die ein array in ein neues array kopiert. Hierzu soll die Kopier-Methode die Kopie des arrays mit Hilfe des new-Operators erzeugen. Überprüfen sie die Kopierfunktion indem sie die urprünglichen arrays und die kopierten arrays inklusive der Adressen auf dem Bildschirm ausgeben.

    Bisher habe ich die Präsenzaufgabe:

    **#include <iostream>
    #include <cmath>

    using namespace std;

    void Eingabe(float *ptr, int a)

    {
    for (int i = 0; i < a; i++)
    {
    cout << "Zahlen eingeben: ";
    cin >> ptr[i];

    }
    }

    void Ausgabe(float *ptr, int a)

    {
    for (int i = 0; i < a; i++)
    {
    cout << i + 1 << ". Array: " << ptr[i] << endl;
    }
    }

    int main()

    {
    const int a = 2;
    const int b = 3;
    float a1[a];
    float a2[b];

    Eingabe(a1, a);
    Ausgabe(a1, a);
    Eingabe(a2, b);
    Ausgabe(a2, b);

    cout << endl;
    cout << "Ausgabe der Adressen und Werte von beiden Arrays: " << endl << endl;

    cout << "1. Array: " << &a1[0] << a1[0] << endl;
    cout << "2. Array: " << &a2[0] << a2[0] << endl;
    cout << endl;

    if (&a1[0] < &a2[0])

    {
    cout << "Array1 hat die niedrigere Startadresse: " << &a1[0] << endl << endl;
    }

    else

    {
    cout << "Array2 hat die niedrigere Startadresse: " << &a2[0] << endl << endl;
    }

    system("Pause");
    return 0;
    }**

    Wäre echt super wenn mir jemand helfen könnte 🙂


  • Mod

    Deine Frage ist?



  • Ich glaube nicht, dass es VLA's in C++ vom Standard her gibt.

    Das heißt, deine Variablen a und b müssten schon per Kompilierzeit bekannt sein. Das Schlüsselwort const reicht dabei nicht aus.

    Ansonsten siehts irgendwie korrekt aus.

    Mach das

    cout << "Ausgabe der Adressen und Werte von beiden Arrays: " << endl << endl;

    vielleicht noch vor den Funktionsaufrufen von Eingabe() und Ausgabe() und lass die doppelte Ausgabe vom ersten Element weg.



  • CodingProblems schrieb:

    ich habe eine Hausaufgabe, die ich bis Montag abgeben muss.

    Ganz schönes Problem du jetzt hast.



  • rewrew schrieb:

    Ich glaube nicht, dass es VLA's in C++ vom Standard her gibt.

    Richtig.

    rewrew schrieb:

    Das heißt, deine Variablen a und b müssten schon per Kompilierzeit bekannt sein. Das Schlüsselwort const reicht dabei nicht aus.

    Doch, reicht es.

    a und b sind keine VLA (nur bei einem C Compiler wären sie das, was an der unterschiedlichen Semantik von const in C und C++ liegt)



  • Danke! Meine Frage ist wie das mit der Kopiermethode funktioniert... kann mir einer helfen?



  • Programmierproblem schrieb:

    Danke! Meine Frage ist wie das mit der Kopiermethode funktioniert... kann mir einer helfen?

    std::copy() aus dem <algorithm>-Header.


Anmelden zum Antworten