Ich habe versucht, zweidimensionales Array in ein anderes Array mit einer anderen Größe zu kopieren. Zum Beispiel: erster Array mit 4 Reihen und 4 Spalten:Kopieren Sie zweidimensionale Array-Elemente in ein anderes zweidimensionales Array mit einer anderen Größe
1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
zweiter Array mit 2 Reihen und 8 Spalten:
1 2 3 4 5 6 7 8
9 0 1 2 3 4 5 6
und wenn es in dem neuen Array mehr Elemente als erstes ist dann wird die Funktion es mit 0
füllen, das ist die Funktion, die ich gemacht habe, aber das Problem mit Indizes. Wie schreibe ich es richtig?
void changearr(int **ppm, int size1, int size2, int size_1, int size_2)
{
int **temp = new int*[size_1];
for (int i = 0; i < size_1; i++)
temp[i] = new int[size_2];
int z = 0;
for (int i = 0; i < size_1; i++, z++)
{
for (int j = 0, k = 0; j < size_2; j++, k++)
{
if (i < size_1 || j < size_2)
{
temp[i][j] = ppm[z][k];
}
else
temp[i][j] = 0
}
}
nur Schleife auf das erste Array mit i und j. Die Indizes z und k für das zweite Array müssen von i und j ausgewertet werden, nicht über z und k. –
Da ein Array zusammenhängend im Speicher ist, sind die Arrays in der Art, in der sie gespeichert sind, fast identisch. Die Frage ist, welche Überprüfungsebene Sie in Ihrer Funktion benötigen. Was möchten Sie unter der Bedingung, dass das Ziel kleiner als die Quelle ist? Und wie bereits erwähnt, muss es nur für Arrays oder auch für ein Array von Zeigern ausgeführt werden? Wenn die Daten im Speicher zusammenhängen, können Sie dies in ein oder zwei Zeilen tun. – Chiel