sortowanie ostatniej kolumny w tablicy

0

Potrzebuje w programie funkcji która posortuje mi ostatnią kolumnę w dwuwymiarowej tablicy. Napisałem taką małą prowizorkę, drugi dzień nie mogę się dopatrzeć błędu :/ Zamieszczam kod:

#include <iostream>
#include "insertsort2.h"
using namespace std;
int main() {
	int p=1;
	int q=2;
	float **PARAM=new float*[p+q+1];
	PARAM[0]=new float[p+q+1];
	PARAM[1]=new float[p+q+1];
	PARAM[2]=new float[p+q+1];
	PARAM[3]=new float[p+q+1];

	PARAM[0][0]=1;
	PARAM[0][1]=3;
	PARAM[0][2]=1;
	PARAM[0][3]=4;
	
	PARAM[1][0]=2;
	PARAM[1][1]=2;
	PARAM[1][2]=2;
	PARAM[1][3]=3;
	
	PARAM[2][0]=3;
	PARAM[2][1]=3;
	PARAM[2][2]=3;
	PARAM[2][3]=2;

	PARAM[3][0]=4;
	PARAM[3][1]=4;
	PARAM[3][2]=4;
	PARAM[3][3]=1;
	for(int j=0;j<=p+q;j++){
	for(int i=0;i<=p+q;i++) {
			cout <<PARAM[j][i]<<" ";
	}
	cout <<endl;
	}
	cout <<"po sortowaniu"<<endl;
	insertsort2(PARAM,p,q);
	for(int j=0;j<=p+q;j++){
	for(int i=0;i<=p+q;i++) {
			cout <<PARAM[j][i]<<" ";
	}
	cout <<endl;
	}

	system("PAUSE");
}
void insertsort2(float **x,int p,int q)
{
  int key,i;
  int length=p+q+1;
  for(int j=1;j<length;j++)
  {
     key=x[j][p+q];
     i=j-1;
     while(x[i][p+q]>key && i>=0)
     {
               x[i+1][p+q]=x[i][p+q];
         i--;
     }
     x[i+1][p+q]=key;
  }
}
0

Potrzebujesz posortować, czy chcesz sam sortowanie napisać? Bo jeśli tylko posortować, to użyć sortowania dostępnego w stl http://www.cplusplus.com/reference/algorithm/sort/

0

w zasadzie to chodzi mi o sortowanie tej tablicy względem ostatniej kolumny, tzn zamieniając w ostatniej kolumnie wyraz na pozycji X[i][p+q] z X[i+1][p+q] zamieniam miejscami wyrazy w pozostałych kolumnach w ten sam sposób. Wiem że obecny kod tego nie uwzględnia, za to wysypuje się już przy sortowaniu ostatniej kolumny :/ Jest mi dosyć obojętne jak to będzie zaimplementowane :)

0

Wie ktoś co jest źle ? Bardzo liczę na pomoc

0

W while i po while, gdzie zamieniasz elementy, nie możesz zamieniać tylko jednej kolumny, musisz tam zamieniać wartości wszystkich kolumn wszystkie. Czyli przestawiać wręcz całe wektory.

0

Wiem o tym, problem jest taki że program w obecnej postaci nie robi tego nawet dla ostatniej kolumny. Zwyczajnie się zawiesza. Wszystko z pozoru wygląda dobrze i kompiluje się. Po uruchomieniu mamy wykrzaczenie się programu :/

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