Michal_Jankura

ps2

Nov 5th, 2023
712
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. /**Úloha 1: Lift a Car**/
  5. float lift_a_car(const int stick_length, const int human_weight, const int car_weight){
  6.     float posun = (float) stick_length * (float) human_weight / ((float) human_weight + (float) car_weight);//vzorec
  7.     posun = round(posun*100)/100;//zaokruhlujem na 2 des miesta
  8.     return  posun;//vrátim hodnotu radius nie je to void
  9. }
  10.  
  11. ///* TEN ISTÝ PRINCÍP AKO V PRVEJ ULOHE *//
  12.  
  13. /**Úloha 2: Unit Price for Toilet Paper**/
  14. float unit_price(const float pack_prize,const int rolls_count,const int pieces_count){
  15.     float one_kej = (float) pack_prize / ((float) rolls_count * (float)pieces_count) * 100;
  16.     one_kej = round(one_kej*100)/100; //funkcia round zaokruhli číslo na 2 desatinne ale treba spravit m.o
  17.     return one_kej;
  18. }
  19. /**Úloha 3: Collatz Conjecture**/
  20. int collatz(const int number){
  21.     int final_number; //vytvoríme novú premennú typu int
  22.     final_number = number; //do premennej priradíme číslo kt. zadáme pri volani funkcie
  23.     int operacie = 1;
  24.     while (final_number > 1){ //dokial číslo bude väčšie ako jedna tak rob -->
  25.         if (final_number % 2 == 0) { //ak po celociselnom delení bude zvysok nula -->
  26.             final_number = final_number / 2; //číslo videl 2jkou
  27.             operacie += 1; //vypíš číslo
  28.         } else { //for odd numbers // ak čislo nebude mať zvyšok tak -->
  29.             final_number = final_number * 3 + 1; //číslo vynásob 3 a pridaj 1
  30.             operacie += 1; //vypíš číslo --- ^
  31.         }
  32.     }
  33.     return operacie;
  34. }
  35.  
  36. /**Úloha 4: Find Opposite Number**/
  37. int opposite_number(const int n, const int number){
  38.     int sused = n/2+number;
  39.     if (sused<n){
  40.         return sused;
  41.     }else if(sused>n){
  42.         sused=sused-n;
  43.         return sused;
  44.     }else{
  45.         sused=0;
  46.         return sused;
  47.     } /**vzorec z geometrie ak beriem kruh ako taký a čísla na ňom takže k susedovi sa dostanem
  48.  * cez polovicu tzv. leteckou čiarou takže potrebujem prejsť vždy polovicu, musim
  49.  * byt v kruhu zorientovaný musim vediet do kt strany potrebujem rotovať**/
  50.  
  51.  
  52. }
  53.  
  54. /**Úloha 5: Count Numbers in Array**/
  55. void counter(const int input_array[], const int array_size, int result_array[2]){
  56.     int delitelne = 0; //vytvorim premennu typu int pre delitelne pozicie
  57.     int nedelitelne = 0; //vytvorim premennu typu int pre nedelitelne pozicie
  58.     for (int index = 0 ; index < array_size ; index ++){ //cyklus bude prechádzať čísla v poli
  59.         if (index % 2 == 0){ //ak bude párne tak -->
  60.             delitelne += input_array[index]; //pridaj čislo do delitelne
  61.         } else{ //inak
  62.             nedelitelne += input_array[index]; //pridaj číslo do nedelitelných
  63.         }
  64.         //po ukončeni cyklu pridaj výsledne čísla do pola kt. má len dve miesta
  65.         result_array[0] = delitelne;
  66.         result_array[1] = nedelitelne;
  67.     }
  68. }
  69.  
  70. /**Úloha 7.1: Min**/
  71. int array_min(const int input_array[],const int array_size){ //funkcia min a max funguju na rovnakom principe otočim <>
  72.     int minimal = input_array[0];// vytvorím premennu typu int a vložim do nej prvé číslo z pola
  73.     if(input_array==NULL){
  74.         return -1;
  75.     }
  76.     for (int i = 0; i < array_size; ++i) {//v cykle toto číslo porovnávam z ostanými číslami v poli
  77.         if (input_array[i] < minimal){//ak by číslo v poli bolo menšie ako moje tak sa to dané čislo
  78.             minimal = input_array[i];//priradí do premmenej minimal
  79.         }
  80.  
  81.     }
  82.     return minimal;//na konci musim vrátit hodnotu kedze to nie je void
  83.  
  84. }
  85.  
  86. //*TO ISTE AKO HLADANIE MINIMA LEN OPAČNE ZNAMIENKO <
  87.  
  88. /**Úloha 7.2: Max**/
  89. int array_max(const int input_array[],const int array_size){
  90.     int maximal = input_array[0];
  91.     if(input_array==NULL){
  92.         return -1;
  93.     }
  94.     for (int i = 0; i < array_size; ++i) {
  95.             if (input_array[i] > maximal) {
  96.                 maximal = input_array[i];
  97.             }
  98.  
  99.         }
  100.  
  101.     return maximal;
  102. }
  103.  
  104. /**Úloha 8: Special Counter **/
  105. unsigned long special_counter(const int input_aray[],const int array_size){ //funkcia požaduje 2 parametre
  106.     int parne = 0; //vytvoril som premenu <-- kde budem ukladať čísla na parnej pozicii
  107.     int neparne = 0;//vytvoril som premenu <-- kde budem ukladať čísla na neparnej pozicii
  108.     int sum = 0;//vytvoril som premenu <-- kde sčítam parne a neparne
  109.  
  110.     for (int i = 0; i < array_size; ++i) { //cyklus prejde pole s číslami
  111.         if (i % 2 == 0){ //ak pozícia je párna tak pridaj číslo do premmennej int
  112.             parne += input_aray[i]; //pridávaj
  113.         } else{
  114.             neparne += pow((int) input_aray[i],2);//č. na np. musíme umocniť z knižnice math použijeme pow
  115.         }//pow som našiel v dokumentácii danej knižnice
  116.         sum = parne + neparne; //do premennej sum sčítam párne a nepárne
  117.     }
  118.     return sum; //vrátim hodnotu sum kedže to nie je void
  119. }
  120.  
  121. /**Úloha 9: Special Numbers **/
  122. int special_numbers(const int input_array[],const int array_size, int result_array[]){
  123.     int pivot = 0; //zvolím si prvé číslo v retazci tak že priradím mu akoby index 0
  124.     int posun_v_poli = 0; //nastavím si posun pre pole v ktorom budem ukladat specialne cisla
  125.     //zacnem cyklus do while
  126.     do{
  127.         if (input_array == NULL){//pre prípad žeby arena chcela dať prázdny retazec
  128.             break;
  129.         } else{
  130.             int sum = 0; //premenná kde budem sčítavať všetky čísla od pivota napravo
  131.             int pivot_sum = pivot + 1; //premenna kt. umozni posun a sčitanie čísel od pivota napravo
  132.             while (pivot_sum < array_size){//posuvaj sa doprava až kým nedojdeš na koniec retazca cisel v poli input_array
  133.                 sum += input_array[pivot_sum]; //číslo na danej pozicii pripočítaj do sum
  134.                 pivot_sum += 1;//posun sa o jedno čislo doprava v poli a nasledne ---^
  135.             }
  136.             if(input_array[pivot] <= sum){//ak pivot < od súčtu všetkých čísel tak sa pivot posunie o 1 doprava
  137.                 pivot += 1;//posun o 1 v pravo
  138.             }else{
  139.                 result_array[posun_v_poli]=input_array[pivot];//ak bolo č. > tak sa priradi do result_array
  140.                 pivot += 1;//posunieme pivot o 1 vpravo
  141.                 posun_v_poli += 1;//posunieme sa vo výslednom poli čisel
  142.             }
  143.         }
  144.     }while (pivot<array_size);
  145.     int s_numbers = posun_v_poli; //vysledné číslo je v result_array na pozicii posun v poli
  146.     return s_numbers;
  147. }
  148.  
  149. unsigned long long sum_squared (const int line){
  150.     unsigned long int pascal_array[line+1];//+1 preto lebo nezačína /_\ 0
  151.     unsigned long int i = 0;// unsigned preto lebo budeme narabat z velkymi čislami
  152.     pascal_array[i] = 1;//nastavím si číslo 1 akoby za vrchol trojuholnika a od neho budem pirdavat riadky
  153.     while (i <= line){
  154.         i += 1;//posun v riadku
  155.         pascal_array[i] = pascal_array[i-1]*(line-i+1) / i;//vytváranie nových čísel do riadku
  156.     }
  157.     unsigned long int umocnene_cislo = 0;
  158.     unsigned long int sum = 0;
  159.     unsigned long int j = 0;
  160.  
  161.     while(j <= line){
  162.         umocnene_cislo = pow(pascal_array[j],2);//umocnujem dané čislo v riadku z kniznice math
  163.         sum += umocnene_cislo;//umocnene cislo pridám do suctu
  164.         j += 1;//posun sa v riadku do prava
  165.     }
  166.     return sum;
  167. }
  168.  
  169.  
  170.  
  171. int main(){
  172.     /** LIFT CAR    **/
  173.  
  174. //    printf("Lift car example 1 : %.4f \n" ,lift_a_car(2, 80, 1400));
  175. //    printf("Lift car example 2 : %.4f \n" ,lift_a_car(4, 90, 1650));
  176. //    printf("<___________________________>\n");
  177.  
  178.  
  179.     /** UNIT PRICE    **/
  180.  
  181. //    printf("Unit price example 1 : %.4f\n", unit_price(4.79, 16, 150));
  182. //    printf("Unit price example 2 : %.4f\n", unit_price(5.63, 20, 200));
  183. //    printf("<___________________________>\n");
  184.  
  185.     /** COLLATZ CONJECTURE    **/
  186. //
  187. //    printf("%d\n", collatz(20));
  188. //    printf("<___________________________>\n");
  189. //    printf("%d\n", collatz(20));
  190.  
  191.     /** OPPOSITE NUMBER
  192.     printf("<___________________________>\n");
  193.     printf("%d\n", opposite_number(10, 2));
  194.     printf("%d\n", opposite_number(12, 9));
  195.     **/
  196.  
  197.     /** Count Numbers in Array
  198.     printf("<___________________________>\n");
  199.     int input_array[] = {1,2,3,4,5};
  200.     int result_array[2];
  201.     counter(input_array, 5, result_array);
  202.     printf("%d %d\n", result_array[0], result_array[1]);
  203.     **/
  204.  
  205.     /** Pascal's Triangle **/
  206.  
  207.     /**Min-and-Max Price**/
  208.     //int input_array[] = {1,2,3,4,5};
  209.  
  210.     //printf("%d\n", array_min(input_array, 5));
  211.     //printf("%d\n", array_max(input_array, 5));
  212.  
  213.     //printf("%d\n", array_max(NULL, 5));
  214.     // prints: -1
  215.  
  216.     //int input_array[] = {11,12,13,14,15};
  217.     //printf("%lu\n", special_counter(input_array, 5));
  218.  
  219.     int input_array[] = {16,17,4,3,5,2};
  220.     int result_array[6];
  221.     int count = special_numbers(input_array, 6, result_array);
  222.     for(int i = 0; i < count; i++){
  223.         printf("%d ", result_array[i]);
  224.     }
  225.     printf("\n");
  226.  
  227.     return 0;
  228.  
  229. }
  230.  
Advertisement
Add Comment
Please, Sign In to add comment