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; }
|