Hej!
Jag vill lägga ihop två redan sorterade arrayer till en stor sorterad array...koden följer nedan:
#include <stdio.h>
#define N 5
#define M 7
void sort_cat(int *a, int an, int *b, int bn, int *res);
main(){
int i;
int a\[N\] = { 12, 42, 63, 65, 81};
int b\[M\] = { 21, 62, 64, 66, 70, 75, 80};
int res\[N+M\];
sort_cat(a, N, b, M, res);
for(i=0; i\<N+M; i++){
printf("\\n%d ", res);
}
getchar();
return 0;
}
void sort_cat(int *a, int an, int *b, int bn, int *res){
int i=0, j=0;
do{
if(\*a\<\*b){
\*res = \*a;
res++;
a++;
i++;
}
else{
\*res = \*b;
res++;
b++;
j++;
}
}
while(i\<an || j\<bn);
if(i==an){
do{
\*res = \*b;
res++;
b++;
j++;
}
while(j\<bn);
}
if(j==bn){
do{
\*res = \*a;
res++;
a++;
i++;
}
while(i\<an);
}
}
Detta fungerar bra så länge sista positionen i array a[] är större än sista positionen i array b[].
Men byter jag plats på de två sista positionerna i de bägge arrayerna, kommer inte , 81 i det här fallet, med. Utan programmet skriver ut -1 istället..
Varför?
Förslag till lösning?
Tack!