kopieren der Elemente von einem array zu einem anderen
Ich bin immer ein Absturz-Fehler zur Laufzeit und nicht sicher, was genau zu tun ist, mit der Funktion, oder wie bekomme ich die Daten dafür.
FUNKTION DETAILS
Schreiben Sie eine Funktion, die akzeptiert ein int
array und size
als Argumente, dann erstellen Sie ein neues array, das ein element größer als die gegebene. Einstellung das erste element 0
, dann kopieren über das, was im argument-array in das neue array.
WICHTIGSTEN DETAILS
Verwendung in einem Programm zu Lesen int n
vom Eingang, dann Lesen Sie int n
aus Datei Daten name data
übergabe an element shifter, dann drucken, um die Ausgabe (eine pro Zeile).
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int element_shift(int elmts[], int size) {
int new_size = size + 1;
int shifter[new_size];
int *elmt_sft;
shifter[0] = 0;
for (int i = 1; i >= new_size; i++) {
shifter[i + 1] = elmts[i];
}
return *elmt_sft;
}
int main() {
fstream infile;
infile.open("D:\\data.txt");
int n, x;
infile >> x;
cout << "size of array: ";
cin >> n;
const int ARRAY_SIZE = n + x;
int elements[ARRAY_SIZE];
element_shift(elements, ARRAY_SIZE);
system("PAUSE");
return EXIT_SUCCESS;
}
- Ich empfehle die Lektüre eines einführendes Buch über C++, schau hier
- Paar Dinge zum nachdenken: 1.
for(int i=1;i>=new_size;i++)
denken über die Vergleiche (beachten Sie auch arrays beginnen bei null). 2.return *elmt_sft;
Wenn Sie dereferenzieren dieses Zeigers, wo liegt es auf?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst
ARRAY_SIZE
erklärt in der main-Funktion ist nicht konstant, variabel, aber zur Laufzeit definiert werden, je nach Eingaben des Benutzers. Dies bedeutet, dass das arrayelements
sollte dynamisch erstellt werden. Auf der anderen Seite Lesen Sie einigex
variable, die nur verwendet wird, definieren Sie die Größe des Arrays nicht initialisiert das array überhaupt. Ich denke, dass das problem Aussage ist zu Lesen, die Größe des array aus der Eingabe, dann die Daten des Arrays aus der Datei.Gibt es auch viele Fehler in element_shift Funktion.
Ihr code Aussehen sollte etwas ähnliches wie das hier:
First off, Sie verbringen viel Zeit mit der Erstellung der array verschoben, aber nicht wieder zurück.
Den
elmt_sft
Zeiger ist nie vergeben. Sie sind versucht, auf Speicher zuzugreifen, das nicht vorhanden ist, mithilfe*elmt_sft
. Dies kann die Ursache Ihrer Fehler. Auch diese Funktion hat keine Möglichkeit der Rücksendung der new arrayshifter
weil diese variable lokal deklariert und verschwinden, sobald die Funktion beendet wird. Wenn Sie etwas neues schaffen wollen in der Funktion und habe Sie immer noch im Speicher, sobald die Funktion beendet wird, empfehle ich erstellen Sie das array dynamisch und Rückgabe einen Zeiger darauf.Dies ist ungetestet, sollte aber starten Sie in die richtige Richtung. Wird es wieder ein separates dynamisch reservierten Arrays, die nicht überschrieben Ihre anderen.