2017-04-11 3 views
1

Ich habe ein kleines Problem mit meinem Programm und ich kann nicht lösen, was los ist. Grundsätzlich gibt es zwei Arrays in aufsteigender Reihenfolge sortiert und ich muss sie zu einem zusammenführen.Bestellte Merge Probleme

erwarte ich, dass der Ausgang sein:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 

Aber es ist:

1 2 3 4 5 6 7 8 9 10 11 12 13 0 

Was mache ich falsch, dass der letzte Wert in der Ausgabe nicht 14? Ich denke, dass die Lösung dafür sehr einfach sein wird, aber ich kann es nicht herausfinden.

Hier ist der Code:

#include<iostream> 
#include<cstdlib> 
using namespace std; 

int main(){ 

int arrA[]={1,3,5,7,9,11,13}; 
int arrB[]={2,4,6,8,10,12,14}; 
int arrC[sizeof(arrA)/sizeof(int)+sizeof(arrB)/sizeof(int)]; 

int sizeA=sizeof(arrA)/sizeof(int); 
int sizeB=sizeof(arrB)/sizeof(int); 
int sizeC=sizeof(arrC)/sizeof(int); 

for (int i=0;i<sizeA;){ 
    for (int j=0;j<sizeB;){ 
     if (arrA[i]<=arrB[j]){ 
      arrC[i+j]=arrA[i++]; 
     } 
     else{ 
      arrC[i+j]=arrB[j++]; 
     } 
    } 
} 

for (int i=0; i<sizeC; i++){ 
    cout << arrC[i] << " "; 
} 
return 0; 
} 

Antwort

3

Eigentlich nie zu dem Punkt, wo Sie Wert ARRC zuweisen [13], die die letzten 14 Element ist. In der letzten Iteration für Ihre äußere Schleife ist i == 6 und dasselbe für die innere Schleife. Sie enden also, wenn i + j gleich 12 ist.

+0

Also muss ich die Schleifen ändern. Danke für die Hilfe ;) – Ensz

Verwandte Themen