Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Łączenie 2 tablic

Ostatnio zmodyfikowano 2016-01-06 20:00
Autor Wiadomość
jabol369
Temat założony przez niniejszego użytkownika
Łączenie 2 tablic
» 2016-01-06 20:00:05
Witam, mam problem. Mama podane 2 tablice już posortowane i potrzebuje je scalić, wiem jak podzielić 1 tablice na 2 mniejsze, potem je posortować, scalić i wyświetlić, jednak nie mogę sobie poradzić ze scaleniem 2 podanych już posortowanych tablic i je wyświetlić. Dziękuję za wszelką pomoc. Załączam kod:

#include <iostream>

using namespace std;

int mniejsze=0, wieksze=0;
const int rozmiar=4;
int  *tab1=NULL, *tab2=NULL;
int tablica[rozmiar] = {5,9,2,15};
int tabka1[rozmiar]={1,3,5,7};
int tabka2[rozmiar]={2,4,6,8};

void Posortuj(int tab[], int size)
{
    int k;
    for(int i=0; i<size; i++)
    {
        k=i;
        for(int j=i+1; j<size; j++ )
        if(tab[j] < tab[k])
        {
           k = j;
        }
        swap(tab[k], tab);
    }
}

/*void Podziel(int tablica_do_podzialu[], int wielkosc)
{
    int pivot=tablica_do_podzialu[0];
    for(int x=1; x<wielkosc; x++)
    {
       if(tablica_do_podzialu[x] <= pivot)
       {
           mniejsze++;
       }
    }
    mniejsze++;
    wieksze=rozmiar-mniejsze;
    tab1=new int[mniejsze], tab2=new int[wieksze];
    for(int x=1, y=0; x<wielkosc; x++)
    {
        if(tablica_do_podzialu[x] <= pivot)
        {
            tab1[y]=tablica_do_podzialu[x];
            y++;
        }
    }
    tab1[mniejsze-1]=pivot;
    for(int x=1, y=0; x<wielkosc; x++)
    {
        if(tablica_do_podzialu[x] > pivot)
        {
            tab2[y]=tablica_do_podzialu[x];
            y++;
        }
    }
}
*/
void Wyswietl()
{
    for(int x=0; x<rozmiar; x++)
    {
        cout << tabka1[x] << ",";
    }
    cout << endl;
}

void WyswietlPodzielone()
{
    for(int x=0; x < mniejsze; x++)
    {
        cout << tab1[x] << ",";
    }
    cout << endl;
    for(int x=0; x < wieksze; x++)
    {
        cout << tab2[x] << ",";
    }
    cout << endl;
}

void Scal(int tabka1[], int tabka2[], int rozmiar_pierwszej, int rozmiar_drugiej)
{
    int calkowity_rozmiar=rozmiar_pierwszej+rozmiar_drugiej;
    for(int i=0, i1=0, i2=0; i<calkowity_rozmiar; i++)
    {
        if(i1>=rozmiar_pierwszej)
        {
            tablica=tabka2[i2++];
            continue;
        }
        if(tabka1[i1]<tabka2[i2])
        {
           tablica=tabka1[i1++];
        }
        else
        {
           tablica=tabka2[i2++];
        }
  }
}

int main()
{
    cout << "Cala tablica nieposortowana:" << endl;
    Wyswietl();
    /*Podziel(tablica, rozmiar);
    cout << "Pierwsza i druga z podzielonych tablic nieposortowane obie:" << endl;
    WyswietlPodzielone();
    Posortuj(tab1, mniejsze);
    cout << "Pierwsza i druga z podzielonych tablic posortowana tylko pierwsza:" << endl;
    WyswietlPodzielone();
    Posortuj(tab2, wieksze);
    cout << "Pierwsza i druga z podzielonych tablic posortowane obie:" << endl;
    WyswietlPodzielone();
    cout << "Cala tablica posortowana:" << endl;*/
    Scal(tab1,tab2,mniejsze,wieksze);
    Wyswietl();
    return 0;
}
P-143015
« 1 »
  Strona 1 z 1