Advertisement
mino2580

task5_main.c+fce.c _soubor_Knihovna_matematickych_funkci

Apr 19th, 2019
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "fce.h"
  4. #include "ioutils.h"
  5. #include <ctype.h>
  6. int zadej_pole(int * pole, int delka, int kapacita) {
  7. int i, ok, hodnota, znak;
  8. char retezec[255];
  9. printf("Aktualni obsah pole:\n");
  10. for (i = 0; i < delka - 1; i++)
  11. printf("%d, ", pole[i]);
  12. printf("%d\n"
  13. "Zadat jine hodnoty? (A/N)\n", pole[i]);
  14. znak = io_utils_get_char_line();
  15. if (toupper(znak) == 'A') {
  16. printf("Zadavejte hodnoty oddelene novym radkem, konec=K:\n");
  17. for (i = 0; i < kapacita; i++) {
  18. do {
  19. io_utils_get_string(retezec, 254);
  20. if (toupper(retezec[0]) != 'K') {
  21. ok = sscanf(retezec, "%d", &hodnota);
  22. if (ok == 1)
  23. pole[i] = hodnota;
  24. else
  25. printf("Nespravny format, zkuste znovu\n");
  26. } else
  27. return i;
  28. } while (ok != 1);
  29. }
  30. }
  31. return delka;
  32.  
  33. }
  34.  
  35. int main(void) {
  36. int pole[1024] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, delka = 10;
  37. int mini, maxi;
  38. long x;
  39. double n;
  40. setvbuf(stdout, NULL, _IONBF, 0);
  41. setvbuf(stderr, NULL, _IONBF, 0);
  42. while (1) {
  43. printf("Stisknete:\n"
  44. "1 pro minmax\n"
  45. "2 pro minimum\n"
  46. "3 pro maximum\n"
  47. "4 pro faktorial\n"
  48. "5 pro Fibonacciho posloupnost\n"
  49. "cokoli jineho pro konec.\n");
  50. switch (io_utils_get_char_line()) {
  51. case '1':
  52. delka = zadej_pole(pole, delka, 1024);
  53. minimax(pole, delka, &mini, &maxi);
  54. printf("Minimum=%d, maximum=%d\n", mini, maxi);
  55. break;
  56. case '2':
  57. delka = zadej_pole(pole, delka, 1024);
  58. printf("Minimum=%d\n", get_min(pole, delka));
  59. break;
  60. case '3':
  61. delka = zadej_pole(pole, delka, 1024);
  62. printf("Maximum=%d\n", get_max(pole, delka));
  63. break;
  64. case '4':
  65. printf("Vlozte hodnotu N:\n");
  66. io_utils_get_double(&n);
  67. if (n<1) printf("Nesmyslne zadani\n");
  68. printf("Faktorial(%.0lf)=%.0lf\n", n, fact(n));
  69. break;
  70. case '5':
  71. printf("Vlozte hodnotu N:\n");
  72. io_utils_get_long(&x);
  73. if (x<2) printf("Nesmyslne zadani\n");
  74. printf("Fibonacci(%d)=%d\n", (int) x, fibonacci(x));
  75. break;
  76. default:
  77. return EXIT_SUCCESS;
  78. break;
  79. }
  80. };
  81. return EXIT_SUCCESS;
  82. }
  83.  
  84.  
  85.  
  86. /***************************************************************************************************************************/
  87. //fce.c soubor
  88.  
  89.  
  90. void minimax(int * pole, int delka, int *minimum, int *maximum){
  91. int min =pole[0];
  92. int max =pole[0];
  93. for( int i=0;i<delka;i++){
  94.  
  95. if (pole[i]<min){
  96. min=pole[i];
  97. }
  98.  
  99. if (pole[i]>max){
  100. max=pole[i];
  101. }
  102. }
  103. *minimum=min;
  104. *maximum=max;
  105.  
  106.  
  107. }
  108.  
  109.  
  110. int get_min(int * pole, int delka){
  111. int min =pole[0];
  112. for(int i=0;i<delka;i++)
  113. if (pole[i]<min)
  114. min=pole[i];
  115. return min;
  116. }
  117.  
  118.  
  119. int get_max(int * pole, int delka){
  120. int max=pole[0];
  121. for( int i=0;i<delka;i++)
  122. if (pole[i]>max)
  123. max=pole[i];
  124. return max;
  125. }
  126.  
  127.  
  128.  
  129. double fact(double n){
  130. double vysledek=1;
  131. for(double i=2;i<=n;i++)
  132. vysledek =vysledek * i;
  133. return vysledek;
  134. }
  135. int fibonacci(int n){
  136. if (n<=0){
  137. return 0;
  138. }
  139.  
  140. if (n==1){
  141. return 1;
  142.  
  143. }
  144.  
  145. //return fibonacci(n-1)+ fibonacci(n-2);
  146. int vysl=1,predchozi=0;
  147.  
  148. for (int i=2;i<=n;i++){
  149. int pom=vysl;
  150. vysl=vysl + predchozi;
  151. predchozi=pom;
  152. }
  153. return vysl;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement