Advertisement
PianistaMichal

Sort9

Nov 19th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. /*
  5.     KAZDY KOMENTARZ ODNOSI SIE DO ZAWARTOSCI PONIZEJ KOMENTARZA
  6. */
  7. /* 
  8.     odleglosc od siebie dwoch punktow w przestrzeni trojwymiarowej
  9.     wczytuje wspolrzedne 2 punktow kazdy jako tablica jednowymiarowa 3 elementowa(x,y,z)
  10.     zwraca odleglosc float
  11. */
  12. float odl(int *punkt, int *punkt2){
  13.     int liczba=0;
  14.     liczba=pow((float)punkt[0]-punkt2[0],2)+pow((float)punkt[1]-punkt2[1],2)+pow((float)punkt[2]-punkt2[2],2);
  15.     return sqrt((float)liczba);
  16. }
  17.  
  18. int main(void){
  19.     //zmienna punkt, przechowuje wspolrzedne wszystkich punktow przestrzeni int
  20.     int **punkt;
  21.     //tablica przechowujaca wszystkie odlegosci punktow przestrzeni
  22.     float *sort;
  23.     //schowek przechowuje wartosc float, do bubble sort
  24.     float schowek;
  25.     //zmienna przechowujaca ilosc testow do wykonania
  26.     int tests; 
  27.     //zmienne pomocnicze, liczniki w petlach
  28.     int a,b,c;
  29.     //OZNACZA ILOSC WSZYSTKICH ODLEGLOSCI PUNKTOW OD SIEBIE
  30.     int liczba=0;
  31.    
  32.     //WCZYTUJE ILOSC TESTOW
  33.     scanf("%d",&tests);
  34.     punkt=(int**)malloc(sizeof(**punkt)*tests);
  35.     /* 
  36.         ALOKOWANIE PAMIECI DLA TESTS-ELEMENTOW
  37.         WCZYTYWANIE WSPOLRZEDNYCH KAZDEGO PUNKTU
  38.         LICZENIE ILOSCI MOZLIWYCH ODLEGLOSCI
  39.        
  40.     */
  41.     for(a=0;a<tests;a++){
  42.         punkt[a]=(int*)malloc(sizeof(*punkt)*3);
  43.         for(b=0;b<3;b++)scanf("%d",&punkt[a][b]);
  44.         liczba+=a;
  45.     }
  46.  
  47.     /* 
  48.         ALOKACJA PAMIECI DLA TABLICY WSZYSTKICH ODLEGLOSCI
  49.         ZAPISYWANIE DO TABLICY TESTS WSZYSTKICH ODLEGLOSCI
  50.     */
  51.     c=0;
  52.     sort=(float*)malloc(sizeof(*sort)*liczba);
  53.     for(a=0;a<tests-1;a++){
  54.         for(b=a+1;b<tests;b++){
  55.             sort[c]=odl(punkt[a],punkt[b]);
  56.             c++;
  57.         }
  58.     }
  59.  
  60.     /*
  61.         SORTOWANIE BABELKOWE W TABLICY ODLEGLOSCI PUNKTOW
  62.         WCZYTUJE TABLICE FLOAT, ZWRACA POSORTOWANA TABLICE FLOAT
  63.         LICZBA-WIELKOSC TABLICY SORT
  64.     */
  65.     c=liczba-1;
  66.     while(c>1){
  67.         for(a=0;a<c;a++){
  68.             if(sort[a]>sort[a+1]){
  69.                 schowek=sort[a+1];
  70.                 sort[a+1]=sort[a];
  71.                 sort[a]=schowek;
  72.             }
  73.         }
  74.         c--;
  75.     }
  76.     /*
  77.         WYSWIETLA TABLICE POSORTOWANYCH ELEMENTOW
  78.     */
  79.     for(a=0;a<liczba;a++)printf("%.2f\n",sort[a]);
  80.     system("pause");
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement