Advertisement
Guest User

weeeeeeeeeeeeeeeeeeeeee

a guest
Jan 22nd, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int array_elements; //ilosc elementow tablicy
  6. int array_half; //gdzie wypada polowa tablicy
  7. float global_array[30];
  8. float first_elem, quotient; //elementy ciagu
  9.  
  10. ///////////////////////////////////////
  11.  
  12. float random_float_number();
  13. void sel_sort_desc( float array[], int n );
  14. void sel_sort_asc( float array[], int n );
  15. void upper_half( float array[], float first, float second );
  16. void lower_half( float array[] );
  17. void print_array( float array[], int arr_size );
  18.  
  19. ////////////////////////////////////////
  20.  
  21. float random_float_number()//od -5 do 5
  22. {
  23.     return (-5000+(rand()%10000))*0.001; //dokladnosc do 3 miejsc po przecinku
  24. }
  25.  
  26.  
  27. void insertion_sort_asc(float array[], int elements)
  28. {
  29.     int i;
  30.     for(i=1;i<elements;i++)
  31.     {
  32.         int key = array[i];
  33.         int j = i-1;
  34.         while( j>=0 && array[j]>key )
  35.         {
  36.             array[j+1]=array[j];
  37.             j--;
  38.         }
  39.         array[j+1]=key;
  40.     }
  41. }
  42.  
  43. void insertion_sort_desc(float array[], int elements)
  44. {
  45.     int i;
  46.     for(i=1;i<elements;i++)
  47.     {
  48.         int key = array[i];
  49.         int j = i-1;
  50.         while( j>=0 && array[j]>key )
  51.         {
  52.             array[j+1]=array[j];
  53.             j--;
  54.         }
  55.         array[j+1]=key;
  56.     }
  57. }
  58.  
  59.  
  60. //liczenie ciagu geometrycznego
  61. void upper_half( float array[], float first, float quotient )
  62. {
  63.     int start = 0;
  64.     int end = array_half;
  65.     int i;
  66.  
  67.     float temp[array_half];
  68.  
  69.     temp[0] = first;
  70.  
  71.     for(i=1; i<array_half; i++) temp[i]=0.0; //zerowanie tablicy
  72.  
  73.     for(i=1; i<array_half; i++)
  74.     {
  75.         temp[i] = temp[i-1] * quotient;
  76.     }
  77.  
  78.     for(i=start; i<end; i++) array[i] = temp[i - start];
  79.  
  80. }
  81.  
  82.  
  83. void lower_half( float array[] )
  84. {
  85.     int start = array_half;
  86.     int end = array_elements;
  87.     int i;
  88.     float temp[array_half];
  89.  
  90.     for(i=0; i<array_half; i++) temp[i] = random_float_number();
  91.  
  92.     insertion_sort_desc(temp, array_half);
  93.  
  94.     for(i=start; i<end; i++) array[i] = temp[i-start];
  95.  
  96. }
  97.  
  98. void print_array( float array[], int arr_size )
  99. {
  100.     int i;
  101.     for(i=0; i<arr_size; i++ ) printf( "global_array[%d] = %f\n", i, array[i] );
  102. }
  103.  
  104.  
  105. int main()
  106. {
  107.     srand(time(0));
  108.  
  109.     do{
  110.             puts("Program wypelnia pierwsza polowe tablicy ciagiem geometrycznym rosnacym,");
  111.             puts("a druga liczbami od -5 do 5 posortowanymi rosnaco.");
  112.             puts("Podaj rozmiar tablicy (wiekszy niz 10, mniejszy niz 30): ");
  113.             scanf("%d", &array_elements);
  114.  
  115.     }while(array_elements<10 || array_elements>30);
  116.  
  117.     puts("Podaj pierwszy element ciagu:");
  118.     scanf("%f", &first_elem);
  119.  
  120.     //podaj iloraz ciagu
  121.     puts("Podaj iloraz ciagu:");
  122.     scanf("%f", &quotient);
  123.  
  124.     array_half = array_elements / 2;
  125.  
  126.     //ciagi
  127.     upper_half(global_array, first_elem, quotient);
  128.     //losowe
  129.     lower_half(global_array);
  130.  
  131.     //pokaz
  132.     print_array(global_array, array_elements);
  133.  
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement