zamiana tablicy dwuwymiarowej na jednowymiarowa

0

Witam,
mam problem z jednym zadaniem i nie mogę wymyśleć jego rozwiązania.
Muszę napisać program, który tablicę dwuwymiarową wypełnioną liczbami losowymi, zamieni na tablicę jednowymiarową, następnie ją posortować i wyświetlić.
Proszę o pomoc w poprawieniu błędów.
Oto co na razie mam:

#include <iostream>
#include <time.h>
#include <windows.h>

using namespace std;

void quicksort(int *tablica, int lewy, int prawy)
{
    int v=tablica[(lewy+prawy)/2];
    int i,j,x;
    i=lewy;
    j=prawy;
    do
    {
        while(tablica[i]<v) i++;
        while(tablica[j]>v) j--;
        if(i<=j)
        {
            x=tablica[i];
            tablica[i]=tablica[j];
            tablica[j]=x;
            i++;
            j--;
        }
    }
    while(i<=j);
    if(j>lewy) quicksort(tablica,lewy, j);
    if(i<prawy) quicksort(tablica, i, prawy);
}



int main()
{
int tab[3][3];
srand(time(NULL));
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
tab[i][j]=rand()%100+1;

for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
cout<<tab[i][j]<<endl;




return 0;
}
1
  1. tego sie nie da czytac
  2. jezeli tablice masz na [N][M] to tworzysz tablice jednowymiarowa wielkosci [N*M]
  3. uzywasz na niej std::sort
0

Niestety dalej nie działa mi ten program.

0

a zrobiles tak jak mowilem?
skad mam wiedziec co ma nie dzialac skoro nie pokazales ostatniej wersji. Wrozka nie jestem

0

tą 2 wymiarową tablice możesz zamienić tak na jednowymiarową,

int *tab;
tab = (int*)tablica+2;
ewentualnie
tablica = reinterpret_cast<int*>(tablica+2);
0

Błąd jest gdzieś w przejściu pomiędzy tablica 2 wymiarowa a jednowymiarowa

for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
tab[i][j]=tablica[k];
k++;
}
cout<<endl;
for(int i=0; i<9; i++)
cout<<tablica[i]<<"\t";
1

Ale Ty przypisujesz z jednowymiarowej na dwuwymiarową.

1

Brakuje ci

#include <cstdlib>

//Wypisz tab przed sortowaniem....
quicksort(reinterpret_cast<int*>(tab), 0, 8);

// Wypisz tab po sortowaniu..
0

Już wszystko mam. Dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1