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
-
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.