---
title: "sortera två arrayer - fel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28124-sortera-två-arrayer-fel"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "axed"
published: "2001-11-18T21:35:00.000Z"
updated: "2001-11-20T09:40:00.000Z"
replies: 2
views: 332
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28124-sortera-två-arrayer-fel"
---

# sortera två arrayer - fel

## #1 — axed, 2001-11-18T21:35Z

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 &#0124;&#0124; 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!

Permalänk: https://www.webforum.nu/p/28124

## #2 — axed, 2001-11-19T16:03Z

Har fixat det själv...

Permalänk: https://www.webforum.nu/p/401347

## #3 — Beatbox, 2001-11-20T09:40Z

Ett bra tips är ju att använda sig av STL så slipper man "uppfinna hjulet" varje gång.

// BeatBox

Permalänk: https://www.webforum.nu/p/401348

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28124-sortera-två-arrayer-fel
