Modyfikacja sortowania

0

Witam, mam taki problem, że nie wiem jak zmodyfikować tę funkcję aby można było sortować elementy tablicy dwuwymiarowej, ta umożliwia mi tylko sortowanie elementów jednowymiarowej.
Od razu zaznaczę, że nie mogę użyć funkcji sort.

void wstawianie_m(int n, int *tab)
{
	int p, j;
	for(int i=1;i<n;i++)
	{
		p=tab[i];
		j=i-1;
		while(j>=0 && tab[j]<p)
		{
			tab[j+1]=tab[j];
			j--;
		}
		tab[j+1]=p;
	}
}
0

Jak Chcesz posortować tablicę dwuwymiarową, na wejściu tablica, OK, co na wyjściu?

0

Problem ogólnie polega na tym, że mam program z dwoma tablicami, do drugiej liczby pierwsze zamienia na 1, a pozostałe na 0
Następnie wypisuje wszystkie pierwsze liczby pod drugą tablicą, a na koniec ma je jeszcze posortować

#include <cstdio>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;

bool czy_pierwsza(int n);

int main()
{
	int tab1[20][20];
	int tab2[20][20];
	srand(time(NULL));
	cout<<"Tablica pierwsza: "<<endl;
	for(int i=0;i<20;i++)
	{
		for(int j=0;j<20;j++)
		{
			tab1[i][j]=(rand()%62)+3;
			if(czy_pierwsza(tab1[i][j])==1)
			{
				tab2[i][j]=1;	
			}
			else
			{
				tab2[i][j]=0;
			}
			cout<<setw(4)<<tab1[i][j];
		}
		cout<<endl;
	}
	cout<<endl;
	cout<<"Tablica druga: "<<endl;
	for(int i=0;i<20;i++)
	{
		for(int j=0;j<20;j++)
		{
			cout<<setw(4)<<tab2[i][j];
		}
		cout<<endl;
	}
	cout<<endl;
	for(int i=0;i<20;i++)
	{
		for(int j=0;j<20;j++)
		{
			if(tab2[i][j]==1)
			{
				cout<<tab1[i][j]<<endl;
			}
		}
	}
	cout<<endl;
	getchar();
	return 0;	
}

bool czy_pierwsza(int n)
{
	int e=0;
	
	for(int i=1;i<=n;i++)
	{
		if(n%i==0)
		{
			e++;
		}
	}
	if(e==2)
	{
		return true;
	}
	else
	{
		return false;
	}
}

0

Problem ogólnie polega na tym, że mam program z dwoma tablicami, do drugiej liczby pierwsze zamienia na 1, a pozostałe na 0
Następnie wypisuje wszystkie pierwsze liczby pod drugą tablicą, a na koniec ma je jeszcze posortować

Jeszcze raz jasniej, po polsku i dalej, co na wejściu, co na wyjściu? Do funkcji czy_pierwsza, przyjmującej int, Wysyłasz boolean.

0

Na wejściu znajdują się liczby pierwsze wypisane na końcu programu, a na wyjściu znajdują się te same liczby jednak posortowane malejąco.

0

Czyli, wejście: liczby pierwsze: [p1, p2, ..., pn], wyjście: [q1, q2, ..., qn] - te same liczby posortowane?

0

Zgadza się. Jednak tą funkcją którą podałem na górze mogę posortowac tylko elementy tablicy jednowymiarowej i nie mogę tego użyć w moim programie.

0

Wystarczy, przecież wejście i wyjście to tablice jednowymiarowe...

0

Nie rozumiem... Przecież wypisywaniem liczb pierwszych zajmuje się ostatnia pętla for i w niej wypisuję tab1[i][j], która jest tablicą dwuwymiarową.

0

Poddaję się, Potwierdziłes, że na wejściu i wyjściu sa tablice jednowymiarowe, a teraz Piszesz o dwuwymiarowych...

0

Od początku utrzymywałem, że nie mogę użyć tej funkcji ponieważ ona sortuje tablice jednowymiarową, a chcę posortować to co wypisuję na samym końcu, czyli tab1[i][j].

0

OK, one more time, Pomijając poprzednie posty, Opisz dokładnie treść zadania.

0

Na początku mam jedną tablicę z losowymi liczbami, następnie te które są pierwsze przepisywane są do drugiej tablicy jako 1, a pozostałe jako 0.
Pod drugą tablicą wypisywane są wszystkie liczby pierwsze, a na koniec muszą zostać jeszcze posortowane malejąco.

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