Advertisement
Guest User

Dlouhodobka

a guest
Jun 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.72 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "iostream"
  3. #include "time.h"
  4.  
  5. using namespace std;
  6.  
  7. int Ukol1(unsigned int x, unsigned int y)
  8. {
  9. unsigned int soucetSudych = 0;
  10. unsigned int nejvetsiLiche = 0;
  11.  
  12. while (x <= y)
  13. {
  14. if (x % 2 == 0)
  15. {
  16. soucetSudych += x;
  17. }
  18. else
  19. {
  20. nejvetsiLiche = x;
  21. }
  22.  
  23. x++;
  24. }
  25.  
  26. return soucetSudych - nejvetsiLiche;
  27. }
  28. unsigned long long Ukol2(unsigned int c)
  29. {
  30. unsigned long long soucetFaktorialu = 0;
  31. unsigned short cifra = 0;
  32.  
  33. while (c > 0)
  34. {
  35. cifra = c % 10;
  36. c /= 10;
  37.  
  38. if (cifra > 5)
  39. {
  40. unsigned int faktorial = 1;
  41.  
  42. while (cifra > 0)
  43. {
  44. faktorial *= cifra--;
  45. }
  46.  
  47. soucetFaktorialu += faktorial;
  48. }
  49. }
  50.  
  51. return soucetFaktorialu;
  52. }
  53. unsigned int Ukol3(unsigned int x)
  54. {
  55. unsigned int soucetLichych = 0;
  56. unsigned int pocetSudych = 0;
  57. unsigned int i = 1;
  58.  
  59. while (i <= x)
  60. {
  61. if (x % i == 0)
  62. {
  63. if (i % 2 == 0)
  64. {
  65. pocetSudych++;
  66. }
  67. else
  68. {
  69. soucetLichych += i;
  70. }
  71. }
  72.  
  73. i++;
  74. }
  75.  
  76. return soucetLichych * pocetSudych;
  77. }
  78. void Ukol4(unsigned short pocetPrvku, int &soucin, int &rozdil)
  79. {
  80. int max = -RAND_MAX, min = RAND_MAX;
  81. int prvek;
  82. bool kontrola = false;
  83.  
  84. for (int i = 1; i <= pocetPrvku; i++)
  85. {
  86. printf("Zadejte %d. cele cislo posloupnosti: ", i);
  87. cin >> prvek;
  88.  
  89. if (prvek < 0)
  90. {
  91. soucin *= prvek;
  92. kontrola = true;
  93. }
  94.  
  95. if (prvek > max)
  96. {
  97. max = prvek;
  98. }
  99. if (prvek < min)
  100. {
  101. min = prvek;
  102. }
  103. }
  104.  
  105. if (!kontrola)
  106. {
  107. soucin = 0;
  108. }
  109.  
  110. rozdil = max - min;
  111. }
  112. double Ukol5()
  113. {
  114. unsigned short pozice = 1, poziceMin = 0, pocetPrvku = 0;
  115. double prvek, min = RAND_MAX, soucetPrvku = 0;
  116.  
  117. printf("Zadejte realne cislo: ");
  118. cin >> prvek;
  119.  
  120. while (prvek >= 0)
  121. {
  122. if (prvek > 10 && prvek <= 20)
  123. {
  124. soucetPrvku += prvek;
  125. pocetPrvku++;
  126. }
  127.  
  128. if (prvek < min)
  129. {
  130. min = prvek;
  131. poziceMin = pozice;
  132. }
  133.  
  134. printf("Zadejte realne cislo: ");
  135. cin >> prvek;
  136.  
  137. pozice++;
  138. }
  139.  
  140. if (pocetPrvku > 0)
  141. {
  142. double prumer = soucetPrvku / pocetPrvku;
  143. double vysledek = 1;
  144.  
  145. while (poziceMin > 0)
  146. {
  147. vysledek *= prumer;
  148. poziceMin--;
  149. }
  150.  
  151. return vysledek;
  152. }
  153. else
  154. {
  155. return 0;
  156. }
  157. }
  158. void Ukol6(unsigned short pocetPrvku, double pravyBod, double levyBod, double &podil, unsigned short &porovnani)
  159. {
  160. double max = -RAND_MAX, max2 = max, min = RAND_MAX, cislaSeSudPoz = 0;
  161. unsigned short poziceMin = 0;
  162. unsigned int mocnina = 1;
  163. double prvek;
  164.  
  165. for (unsigned short i = 1; i <= pocetPrvku; i++)
  166. {
  167. prvek = (double)rand() / (RAND_MAX) * (pravyBod - levyBod) + levyBod;
  168.  
  169. printf("%d. pozice: %f \n", i, prvek);
  170.  
  171. if (prvek > max2)
  172. {
  173. if (prvek > max)
  174. {
  175. max2 = max;
  176. max = prvek;
  177. }
  178. else if (prvek < max)
  179. {
  180. max2 = prvek;
  181. }
  182. }
  183.  
  184. if (prvek < min)
  185. {
  186. min = prvek;
  187. poziceMin = i;
  188. }
  189.  
  190. if (i % 2 == 0)
  191. {
  192. cislaSeSudPoz += prvek;
  193. }
  194. }
  195.  
  196. if (cislaSeSudPoz > 0)
  197. {
  198. podil = max2 / cislaSeSudPoz;
  199. }
  200. else
  201. {
  202. podil = -1;
  203. }
  204.  
  205. for (int i = 1; i <= 3; i++)
  206. {
  207. mocnina *= poziceMin;
  208. }
  209.  
  210. // 0 = min > mocnina; 1 = min == mocnina; >=2 = min < mocnina;
  211. if (min > mocnina)
  212. {
  213. porovnani = 0;
  214. }
  215. else if (min == mocnina)
  216. {
  217. porovnani = 1;
  218. }
  219. }
  220. void Ukol6(unsigned short pocetPrvku, unsigned int pravyBod, unsigned int levyBod, int &podil, unsigned short &porovnani)
  221. {
  222. int max = -RAND_MAX, max2 = max, cislaSeSudPoz = 0, prvek;
  223. unsigned int mocnina = 1, min = RAND_MAX;
  224. unsigned short poziceMin = 0;
  225.  
  226. for (unsigned short i = 1; i <= pocetPrvku; i++)
  227. {
  228. prvek = rand() % ((pravyBod + 1) - levyBod) + levyBod;
  229.  
  230. printf("%d. pozice: %d \n", i, prvek);
  231.  
  232. if (prvek > max2)
  233. {
  234. if (prvek > max)
  235. {
  236. max2 = max;
  237. max = prvek;
  238. }
  239. else if (prvek < max)
  240. {
  241. max2 = prvek;
  242. }
  243. }
  244.  
  245. if (prvek < min)
  246. {
  247. min = prvek;
  248. poziceMin = i;
  249. }
  250.  
  251. if (i % 2 == 0)
  252. {
  253. cislaSeSudPoz += prvek;
  254. }
  255. }
  256.  
  257. if (cislaSeSudPoz > 0)
  258. {
  259. podil = max2 / cislaSeSudPoz;
  260. }
  261. else
  262. {
  263. podil = -1;
  264. }
  265.  
  266. for (int i = 1; i <= 3; i++)
  267. {
  268. mocnina *= poziceMin;
  269. }
  270.  
  271. // 0 = min > mocnina; 1 = min == mocnina; >=2 = min < mocnina;
  272. if (min > mocnina)
  273. {
  274. porovnani = 0;
  275. }
  276. else if (min == mocnina)
  277. {
  278. porovnani = 1;
  279. }
  280. }
  281. bool Ukol7()
  282. {
  283. unsigned short pocetCisel = 0;
  284. bool lichaPozice = true;
  285. int prvek;
  286.  
  287. printf("Zadejte prvek: ");
  288. cin >> prvek;
  289.  
  290. while (prvek >= 0)
  291. {
  292. if (lichaPozice && (prvek / 100) > 0 && (prvek / 100) < 10)
  293. {
  294. pocetCisel++;
  295. }
  296.  
  297. if (pocetCisel == 2)
  298. {
  299. return true;
  300. }
  301. else
  302. {
  303. printf("Zadejte prvek: ");
  304. cin >> prvek;
  305. }
  306.  
  307. lichaPozice = !lichaPozice;
  308. }
  309.  
  310. return false;
  311. }
  312. void Ukol8(unsigned char &maximalniZnak, unsigned int &soucin)
  313. {
  314. bool vyskytCislic = false;
  315. unsigned char znak;
  316.  
  317. printf("Zadejte znak posloupnosti: ");
  318. cin >> znak;
  319.  
  320. while (znak != '\?')
  321. {
  322. if (znak > maximalniZnak)
  323. {
  324. maximalniZnak = znak;
  325. }
  326.  
  327. if (znak >= '1' && znak <= '9')
  328. {
  329. if ((znak % 48) % 2 != 0)
  330. {
  331. soucin *= znak % 48;
  332. vyskytCislic = true;
  333. }
  334. }
  335.  
  336. printf("Zadejte znak posloupnosti: ");
  337. cin >> znak;
  338. }
  339.  
  340. if (!vyskytCislic)
  341. {
  342. soucin = 0;
  343. }
  344. }
  345.  
  346. int main()
  347. {
  348. unsigned short ukol;
  349.  
  350. do
  351. {
  352. printf("Funkce: \n");
  353. printf("1. Odecte nejvetsi liche cislo od souctu sudych cisel ze zadaneho intervalu <x;y>, kde x < y.\n");
  354. printf("2. Vypocita soucet faktorialu cifer vetsich nez 5 ze zadaneho cisla.\n");
  355. printf("3. Vynasobi soucet lichych delitelu poctem sudych delitelu zadaneho cisla.\n");
  356. printf("4. Na vstupu je N prvkova posloupnost celych cisel.\n Program:\n -vypocita soucin zapornych cisel;\n -rozdil z maxima a minima posloupnosti.\n");
  357. printf("5. Na vstupu je posloupnost realnych cisel zakoncena cislem zapornym. Program umocni aritmeticky prumer cisel z intervalu (10;20> na prvni pozici nejmensiho cisla.\n");
  358. printf("6. N prvkova posloupnost cisel se generuje z intervalu <min;max>. Uzivatel si zvoli krajni body intervalu a typ generovanych cisel - cela nebo realna. \nProgram:\n -najde minimalni cislo a porovna ho s treti mocninou jeho pozice;\n -vypocita podil druheho nejvetsiho cisla a souctu cisel se sudou pozici.\n");
  359. printf("7. Na vstupu je posloupnost celych cisel zakoncena cislem zapornym. Kdyz program nalezne 2 trojciferna cisla na lichych pozicich, predcasne se ukonci.\n");
  360. printf("8. Na vstupu je posloupnost znaku ukoncena znakem ?.\n Program:\n -vypise znak patrici nejvetsimu ASCII kodu z posloupnosti vcetne jeho predchudce a nasledovnika;\n -z lichych cislic (ne ASCII kodu) vypocita soucin.\n");
  361. printf("9. KONEC \n\n");
  362.  
  363. printf("Pro spusteni zadejte poradove cislo zvolene funkce\nVolba: ");
  364. cin >> ukol;
  365.  
  366. switch (ukol)
  367. {
  368. case 1:
  369. {
  370. unsigned int x, y;
  371.  
  372. printf("1. Zadejte prosim 2 cele nezaporne krajni body intervalu <x;y>, kde x < y. Program odecte nejvetsi liche cislo od souctu sudych cisel ze zadaneho intervalu.\n");
  373. cin >> x >> y;
  374.  
  375. printf("Rozdil souctu sudych cisel a nejvetsiho licheho cisla je: %d \n\n", Ukol1(x, y));
  376. }
  377. break;
  378. case 2:
  379. {
  380. unsigned int c;
  381.  
  382. printf("2. Zadejte prosim cele nezaporne cislo. Program vypocita soucet faktorialu cifer vetsich nez 5 ze zadaneho cisla.\n");
  383. cin >> c;
  384.  
  385. printf("Soucet faktorialu cifer vetsich nez 5 ze zadaneho cisla je: %d \n\n", Ukol2(c));
  386. }
  387. break;
  388. case 3:
  389. {
  390. unsigned int x;
  391.  
  392. printf("3. Zadejte prosim cele nezaporne cislo. Program vynasobi soucet lichych delitelu poctem sudych delitelu zadaneho cisla.\n");
  393. cin >> x;
  394.  
  395. printf("Soucin souctu lichych delitelu a sudych delitelu je: %d \n\n", Ukol3(x));
  396.  
  397. }
  398. break;
  399. case 4:
  400. {
  401. unsigned short pocetPrvku;
  402. int rozdil = 0, soucin = 1;
  403.  
  404. printf("4. Na vstupu je N prvkova posloupnost celych cisel.\n Program:\n -vypocita soucin zapornych cisel\n -rozdil z maxima a minima posloupnosti.\n");
  405. printf("Zadejte pocet prvku posloupnosti: ");
  406. cin >> pocetPrvku;
  407.  
  408. Ukol4(pocetPrvku, soucin, rozdil);
  409.  
  410. if (soucin != 0)
  411. {
  412. printf("Soucin ze zapornych cisel je: %d \n", soucin);
  413. }
  414. else
  415. {
  416. printf("Zaporna cisla se v posloupnosti nevyskytuji \n");
  417. }
  418.  
  419. printf("Rozdil z maxima a minima je %d \n\n", rozdil);
  420. }
  421. break;
  422. case 5:
  423. {
  424. printf("5. Na vstupu je posloupnost realnych cisel zakoncena cislem zapornym. Program umocni aritmeticky prumer cisel z intervalu (10;20> na prvni pozici nejmensiho cisla.\n");
  425.  
  426. double vysledek = Ukol5();
  427.  
  428. if (vysledek != 0)
  429. {
  430. printf("Aritmeticky prumer cisel z intervalu (10;20> umocnen na prvni pozici nejmensiho cisla je: %0.3f \n\n", vysledek);
  431. }
  432. else
  433. {
  434. printf("Nelze vypocitat \n\n");
  435. }
  436. }
  437. break;
  438. case 6:
  439. {
  440. srand(time(0));
  441. unsigned short pocetPrvku, typCisla;
  442.  
  443. printf("6. N prvkova posloupnost cisel se generuje z intervalu <min;max>. Uzivatel si zvoli krajni body intervalu a typ generovanych cisel - cela nebo realna. \nProgram:\n -najde minimalni cislo a porovna ho s treti mocninou jeho pozice;\n -vypocita podil druheho nejvetsiho cisla a souctu cisel se sudou pozici.\n");
  444. printf("Zadejte pocet prvku posloupnosti: ");
  445. cin >> pocetPrvku;
  446.  
  447. printf("Vyberte typ cisel, ktera se budou generovat: \n 1] Realna cisla \n 2] Cela cisla \n");
  448. cin >> typCisla;
  449.  
  450. if (typCisla == 1)
  451. {
  452. double levyBod = 0, pravyBod = 0, podil = 0;
  453. unsigned short porovnani = 2; // 0 = min > mocnina; 1 = min == mocnina; >=2 = min < mocnina;
  454.  
  455. printf("Zadejte nejmensi nezaporne realne cislo intervalu: ");
  456. cin >> levyBod;
  457. printf("Zadejte nejvetsi nezaporne realne cislo intervalu: ");
  458. cin >> pravyBod;
  459.  
  460. printf("Budou se generovat realna cisla z intervalu <%0.2f;%0.2f> \n", levyBod, pravyBod);
  461.  
  462. Ukol6(pocetPrvku, pravyBod, levyBod, podil, porovnani);
  463.  
  464. if (podil != 0)
  465. {
  466. printf("Podil druheho nejvetsiho cisla a souctu cisel se sudou pozici je %f \n", podil);
  467. }
  468. else
  469. {
  470. printf("Podil druheho nejvetsiho cisla a souctu cisel se sudou pozici nelze vypocitat\n");
  471. }
  472.  
  473. if (porovnani == 0)
  474. {
  475. printf("Minimum > treti mocnina jeho pozice\n\n");
  476. }
  477. else if (porovnani == 1)
  478. {
  479. printf("Minimum = treti mocnine jeho pozice\n\n");
  480. }
  481. else
  482. {
  483. printf("Minimum < treti mocnina jeho pozice\n\n");
  484. }
  485. }
  486. else
  487. {
  488. unsigned int levyBod = 0, pravyBod = 0;
  489. unsigned short porovnani = 2; // 0 = min > mocnina; 1 = min == mocnina; >=2 = min < mocnina;
  490. int podil = 0;
  491.  
  492. printf("Zadejte nejmensi nezaporne cele cislo intervalu: ");
  493. cin >> levyBod;
  494. printf("Zadejte nejvetsi nezaporne cele cislo intervalu: ");
  495. cin >> pravyBod;
  496.  
  497. printf("Budou se generovat cela cisla z intervalu <%d;%d> \n", levyBod, pravyBod);
  498.  
  499. Ukol6(pocetPrvku, pravyBod, levyBod, podil, porovnani);
  500.  
  501. if (podil != -1)
  502. {
  503. printf("Celociselny podil druheho nejvetsiho cisla a souctu cisel se sudou pozici je %d \n", podil);
  504. }
  505. else
  506. {
  507. printf("Celociselny podil druheho nejvetsiho cisla a souctu cisel se sudou pozici nelze vypocitat\n");
  508. }
  509.  
  510. if (porovnani == 0)
  511. {
  512. printf("Minimum > treti mocnina jeho pozice\n\n");
  513. }
  514. else if (porovnani == 1)
  515. {
  516. printf("Minimum = treti mocnine jeho pozice\n\n");
  517. }
  518. else
  519. {
  520. printf("Minimum < treti mocnina jeho pozice\n\n");
  521. }
  522. }
  523. }
  524. break;
  525.  
  526. case 7:
  527. {
  528. printf("7. Na vstupu je posloupnost celych cisel zakoncena cislem zapornym. Kdyz program nalezne 2 trojciferna cisla na lichych pozicich, predcasne se ukonci\n");
  529.  
  530. if (Ukol7())
  531. {
  532. printf("Program nalezl 2 trojciferna cisla na lichych pozicich a byl predcasne ukoncen. \n\n");
  533. }
  534. else
  535. {
  536. printf("Program nenalezl 2 trojciferna cisla na lichych pozicich. \n\n");
  537. }
  538. }
  539. break;
  540.  
  541. case 8:
  542. {
  543. printf("8. Na vstupu je posloupnost znaku ukoncena znakem ?.\n Program:\n -vypise znak patrici nejvetsimu ASCII kodu z posloupnosti vcetne jeho predchudce a nasledovnika;\n -z lichych cislic (ne ASCII kodu) vypocita soucin.\n");
  544.  
  545. unsigned char maximalniZnak = 0;
  546. unsigned int soucin = 1;
  547.  
  548. Ukol8(maximalniZnak, soucin);
  549.  
  550. if (soucin != 0)
  551. {
  552. printf("Soucin zadanych lichych cislic je: %d \n", soucin);
  553. }
  554. else
  555. {
  556. printf("V posloupnosti se nevyskytuji liche cislice \n");
  557. }
  558.  
  559. printf("Znak s nejvetsi hodnotou ASCII kodu z posloupnosti je: %c.\n", maximalniZnak);
  560. printf("Nasleduje ho: %c\n", maximalniZnak + 1);
  561. printf("Predchazi ho: %c\n\n", maximalniZnak - 1);
  562. }
  563. break;
  564.  
  565. case 9:
  566. printf("Program byl ukoncen\n\n");
  567. break;
  568.  
  569. default:
  570. printf("Neplatny vyber. Zadejte volbu znovu\n\n");
  571. }
  572.  
  573. } while (ukol != 9);
  574.  
  575. system("pause");
  576. return 0;
  577. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement