Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.09 KB | None | 0 0
  1. /*
  2. #####################################################################################
  3. W niniejszym kolokwium do zdobycia jest 79 punktów.
  4. Należy nie usuwać komentarzy a kod pisać bezpośrednio pod nimi.
  5. Nie należy definiować zmiennych o ile nie jest to treścią zadania.
  6. W niektórych zadaniach, jest wskazane, co powinno zostać wyświetlone w konsoli.
  7. Treść do wyświetlenie, jest umieszczona w komentarzach pomiędzy prami linii gwizdek
  8. początku ciągu Fibbonaciego, takimi jak poniżej:
  9. ******** ***** *** ** * *
  10. ***** *** ** * *
  11. Jeśli w przedstawianym tekście pojawią się znaki specjalne, będzie to oznaczać,
  12. że w tym miejscu, treść zależy od przebiegu działania programu.
  13. #####################################################################################
  14. */
  15.  
  16. /*
  17. Definicje stałych (3p)
  18. Zdefiniuj stałą _C_ przechowującą znak C,
  19. stałą _bezsens_ przechowującą wartość 75,68,
  20. stałą _napisy_ przechowującą wartość 100.
  21. */
  22. #define _C_ "C"
  23. #define _bezsens_ 75.68
  24. #define _napisy_ 100
  25.  
  26. /*
  27. Biblioteki(3p)
  28. Załącz potrzebne i tylko potrzebne biblioteki
  29. */
  30. #include<stdio.h>
  31. #include<stdlib.h>
  32. #include<math.h>
  33. #include<time.h>
  34.  
  35. int main () {
  36. /*
  37. Deklaracja zmiennych(8p)
  38. W czterech liniach kodu (możesz użyć maksymalnie czterech średników) zadeklaruj:
  39. zmienne do przechowywania liczb całkowitych o nazwach: sensWszystkiego, iter, celZyciaInf, celZyciaSup,
  40. wskaźniki do zmiennych przechowujących liczby całkowite o nazwach: celZycia, szukamCeluZycia,
  41. zmienną do przechowywania znaków o nazwie: znak,
  42. zmienną do przechowywania liczb zmiennoprzecinkowych o nazwie: liczymy.
  43. */
  44. printf("%d",2+2*2);
  45. int sensWszystkiego, iter, celZyciaInf, celZyciaSup;
  46. int *CelZycia, *SzukamCeluZycia;
  47. char znak;
  48. float liczymy;
  49.  
  50. /*
  51. Menu(1p)
  52. Wypisz w konsoli następujący tekst
  53. ******** ***** *** ** * *
  54. Co robić?
  55. a - Znalezc sens wszystkiego i w ogole.
  56. b - Znalezc cel w zyciu.
  57. c - To zalezy.
  58. ***** *** ** * *
  59. */
  60. printf("Co robic?\n");
  61. printf("a - Znalezc sens wszystkiego i wogole.\n");
  62. printf("b - Znalezc cel w zyciu.\n");
  63. printf("c - to zalezy.\n");
  64.  
  65. /*
  66. Pobranie znaku i czyszczenie bufora(2p)
  67. Za pomocą funkcji pobierania znaku (nie scanf) pobierz z konsoli znak
  68. do zmiennej znak.
  69. UWAGA: Pamiętaj by wyczyścić bufor ze znaku przejścia do kolejnej linii.
  70. W przeciwnym razie domyślny przypadek napisanej dalej konstrukcji switch
  71. nie będzie działał poprawnie.
  72. */
  73. //strcpy(znak,"%s");
  74. znak=getchar();
  75.  
  76. /*
  77. Wymisanie co wybrano(5p)
  78. Za pomocą instrukcji warunkowej if napisz kod, który zrealizuje następujący
  79. schemat działania:
  80. - Jeśli w zmiennej znak przechowywana jest jedna z wartości: a, b lub c,
  81. to na ekranie zostanie wypisany tekst
  82. ******** ***** *** ** * *
  83. wybrano opcje: &
  84. ***** *** ** * *
  85. gdzie & - wartość przechowywana w znak.
  86. wypisanie wartości przechowywanej w znak oraz przejście do kolejnej lini
  87. należy zrealizować za pomocą funkcji do wypisywania znaków (nie scanf).
  88. - W przypadku przeciwnym zostaje wypisana treść oraz przejście do kolejnej linii.
  89. ******** ***** *** ** * *
  90. Jest zle.
  91. ***** *** ** * *
  92. */
  93.  
  94. if(znak=='a' || znak=='b' || znak=='c') {
  95. printf("wybrano opcje: %c\n", znak);
  96. } else {
  97. printf("jest zle");
  98. }
  99.  
  100. /*
  101. Główny podział działania programu(5p)
  102. Korzystając z instukcji switch oraz zmiennej znak, zrealizuj kolejne przypadki działania programu.
  103.  
  104. Działanie switch
  105.  
  106. Jesli w zmiennej znak przechowywany jest znak "a", to wykonywany jest kod 1.
  107. Jesli w zmiennej znak przechowywany jest znak "b", to wykonywany jest kod 2.
  108. Jesli w zmiennej znak przechowywany jest znak "c", to wykonywany jest kod 3.
  109. W przypadku domyślnym wykonywany jest kod 4.*/
  110.  
  111. //printf("jesli w zmiennej jest znak 'a' to wykonywany jest kod 1");
  112. //printf("jeżeli w zmiennej jest znak 'b' to wykonywany jest kod 2");
  113. //printf("jeżeli w zmiennej jest znak 'c' to wykonywany jest kod 3");
  114.  
  115. /*
  116. Poszczególne kody
  117.  
  118. kod 1. "Sens Wszystkiego" (11p)
  119. - Po operacji rzutowania na odpowiedni typ, wprowadź wartość przechowywaną
  120. w stałej _bezsens_ do zmiennej sensWszystkiego,
  121. - Za pomocą złożonych operatorów przypisania, kolejno powiększ sensWszystkiego o 12,
  122. podziel sensWszystkiego przez 3, pomniejsz sensWszystkiego o 7,
  123. - Zastosuj operację dekrementacji do pomniejszenia sensWszystkiego o 1,
  124. - Za pomocą złożonych operatorów przypisania, kolejno pomnóż sensWszystkiego przez 13,
  125. wykonaj na sensWszystkiego dzielenie modulo 17,
  126. - Za pomocą pętli for iterowanej zmienną iter oraz operaci inkrementacji,
  127. dodaj do sensWszystkiego wartość 40.
  128. - Za pomocą funkcji printf, wypisz wraz z przejściem do kolejnej linii
  129. ******** ***** *** ** * *
  130.  
  131.  
  132.  
  133. Sens wszystkiego to $
  134. ***** *** ** * *
  135. gdzie & jest wartością przechowywaną w sensWszystkiego.
  136.  
  137. kod 2. "Cel w życiu" (20p)
  138. - Zainicjalizuj finkcję losującą (nie są potrzebne dodatkowe zmienne lecz w ostateczności można coś zadeklarować),
  139. - wylosuj i zapisz do celZyciaInf liczbę całkowitą z przedziału od 36 do 42 (dla wątpiących: włącznie z 36 i 42),
  140. - wylosuj i zapisz do celZyciaSup liczbę całkowitą z przedziału od 43 do 45 (dla wątpiących: włącznie z 43 i 45),
  141. - za pomocą funkcji printf wypisz wraz z przejściem do kolejnej linii
  142. ******** ***** *** ** * *
  143.  
  144. No to szukaj. Twoj cel w zyciu lezy gdzies
  145. ***** *** ** * *
  146. - za pomocą JEDNEJ funkcji printf wypisz wraz z przejściem do kolejnej linii
  147. ******** ***** *** ** * *
  148. wsrod liczb calkowitych z przedzialu od # do $
  149. ***** *** ** * *
  150. gdzie # - wartość przechowywana w celZyciaInf, $ - wartość przechowywana w celZyciaSup,
  151. - wylosuj i zapisz do zmiennej celZyciaInf liczbę całkowitą z przedziału od celZyciaInf do celZyciaSup
  152. (dla wątpiących: włącznie z celZyciaInf i celZyciaSup)
  153. - ustaw wskaźnik celZycia na celZyciaInf
  154. - utaw wskaźnik szukamCeluZycia na celZyciaSup
  155. UWAGA: warunku pętli opisanej poniżej oraz jej wnętrzu, można korzystać tylko ze zmiennych celZycia oraz szukamCeluZycia
  156. - utwórz pętlę do...while, która przestanie się wykonywać, gdy wartość wskazywana przez celZycia
  157. będzie taka sama jak wartość wskazywana przez szukamCeluZycia
  158. - wewnątrz utworzonej w poprzednim punkcie pętli wykonaj następujące zadania (wskazane przez ->)
  159. -> za pomocą funkcji scanf pobierz z konsoli liczbę do miejsca wskazywanego przez szukamCeluZycia
  160. -> za pomocą instrukcji if oraz jeszcze innej odpowiedniej instrukcji, omiń dalsze wykonanie pętli
  161. jeśli wartość wskazywana przez szukamCeluZycia jest ujemna lub większa od 100.
  162. -> wypisz wraz z przejściem do kolejnej linii
  163. ******** ***** *** ** * *
  164. Probuj dalej! Niezle ci idzie! Jestes blisko.
  165. ***** *** ** * *
  166. - za pomocą instrukcji warunkowej, wskaźnika na celZycia oraz funkcji printf, zrealizuj następijące działanie (wskazane przez ->)
  167. -> Jeśli celZycia wskazuje na 42 to wypisz wraz z przejściem do następnej linii
  168. ******** ***** *** ** * *
  169. Cel zostal znaleziony. Wynosi on $.
  170. ***** *** ** * *
  171. gdzie $ jest wartością wskazywaną przez celZycia
  172. -> Jeśli celZycia wskazuje na 41 lub 43 to wypisz wraz z przejściem do następnej linii
  173. ******** ***** *** ** * *
  174. Zostal znaleziony cel o wartosci $.
  175. Prawie dobrze, ale lepiej obierz inny cel, proponuje 42.
  176. ***** *** ** * *
  177. gdzie $ jest wartością wskazywaną przez celZycia
  178. -> W przypadku domyślnym wypisz wraz z przejściem do następnej linii
  179. ******** ***** *** ** * *
  180. Zostal znaleziony cel o wartosci $.
  181. Nie jest dobrze, lepiej obierz inny cel, proponuje 42.\n");
  182. ***** *** ** * *
  183. gdzie $ jest wartością wskazywaną przez celZycia
  184.  
  185. kod 3. "To zależy" (8p)
  186. - za pomocą funkcji printf wypisz na eranie tekst wraz z przejściem do kolejnej linii
  187. ******** ***** *** ** * *
  188. Policzmy zatem pierwiastek kwadratowy jakiejs liczby
  189. Podaj liczbe:
  190. ***** *** ** * *
  191. - pobierz z konsoli wartość do zmiennej liczymy
  192. - przypisz do zmiennej liczymy pierwiastek z niej samej
  193. - za pomocą funkcji printf wypisz wraz z przejściem do kolejnej linii
  194. ******** ***** *** ** * *
  195. Wyszlo ci: $
  196. ***** *** ** * *
  197. gdzie $ - wartość przechowywana w zmiennej liczymy wypisana z dokładnością
  198. do drugiego miejsca po przecinku
  199. - za pomocą funkcji printf wypisz na eranie tekst wraz z przejściem do kolejnej linii
  200. ******** ***** *** ** * *
  201. A teraz 3.4 potege jakiejs liczby
  202. Podaj liczbe:
  203. ***** *** ** * *
  204. - pobierz z konsoli wartość do zmiennej liczymy
  205. - przypisz do zmiennej liczymy jej wartość podniesioną do potęgi 3,4
  206. - za pomocą funkcji printf wypisz wraz z przejściem do kolejnej linii
  207. ******** ***** *** ** * *
  208. Wyszlo ci: $
  209. ***** *** ** * *
  210. gdzie $ - wartość przechowywana w zmiennej liczymy wypisana z dokładnością
  211. do drugiego miejsca po przecinku
  212.  
  213. kod 4. "Reszta"
  214. - za pomocą funkcji printf wypisz na eranie tekst wraz z przejściem do kolejnej linii,
  215. ******** ***** *** ** * *
  216. Naucz sie czytac, pisac oraz porgramowac w $.
  217. ***** *** ** * *
  218. gdzie $ - jest znakiem przechowywanym w stałej _C_,
  219. - zaalokuj statycznie dwie tablice znaków o rozmiarze przechowywanym w stałej _napisy_
  220. oraz o zazwach Imie, Nazwisko,
  221. - zaalokuj dynamicznie tablicę znaków o rozmiarze przechowywanym w stałej _napisy_
  222. oraz o nazwie czytamyPiszemy,
  223. - za pomocą funkcji printf wypisz na eranie tekst wraz z przejściem do kolejnej linii,
  224. ******** ***** *** ** * *
  225. Zaczynamy od czytania - z konsoli. Podaj swoje imie:
  226. ***** *** ** * *
  227. - za pomocą jednego wywołania odpowiedniej funkcji, pobierz z konsoli ciąg znaków i zapisz
  228. w tablicy Imie,
  229. - za pomocą funkcji printf wypisz na eranie tekst wraz z przejściem do kolejnej linii,
  230. ******** ***** *** ** * *
  231. A teraz nazwisko:
  232. ***** *** ** * *
  233. - za pomocą jednego wywołania odpowiedniej funkcji, pobierz z konsoli ciąg znaków i zapisz
  234. w tablicy Nazwisko,
  235. - za pomocą funkcji printf wypisz na eranie tekst wraz ze spacją na końcu,
  236. ******** ***** *** ** * *
  237. To teraz pisanie - na konsoli: Nazywasz sie
  238. ***** *** ** * *
  239. - przepisz zawartość tablicy Imie do tablicy czytamyPiszemy,
  240. - dołącz znak spacji do treści przechowywanej w tablicy czytamyPiszemy,
  241. - dołącz zawartość tablicy Nazwisko do treści przechowywanej w tablicy czytamyPiszemy,
  242. - za pomocą jednego wywołania odpowiedniej funkcji, wypisz w konsoli
  243. zawartość przechowywaną w tablicy czytamyPiszemy,
  244. - bez wykorzystania funkcji strcpy wypisz w konsoli znak przejścia do kolejnej linii,
  245. - zwolnij zaalokowane dynamicznie miejsce w pamięci.
  246. */
  247. switch(znak) {
  248. case 'a':
  249. printf("kod 1 - sens wszystkiego");
  250. sensWszystkiego = (int)_bezsens_;
  251. sensWszystkiego=(sensWszystkiego+12)/3-7;
  252. --sensWszystkiego;
  253. sensWszystkiego=(sensWszystkiego*13)%17;
  254. int iter;
  255. for(iter =0; iter<40; ++iter) ++sensWszystkiego;
  256. printf("Sens wszystkiego to %d", sensWszystkiego);
  257. break;
  258. case 'b':
  259. printf("kod 2 - cel w zyciu");
  260. srand(time(NULL));
  261. celZyciaInf= (int)((float)rand()/RAND_MAX*(42-36)) + 36;
  262. celZyciaSup= (int)((float)rand()/RAND_MAX*(45-43)) + 43;
  263. printf("\nNo to szukaj. Twoj cel w zyciu lezy gdzies");
  264. printf("\nwsrod liczb calkowitych z przedzialu od %d do %d",celZyciaInf, celZyciaSup);
  265. celZyciaInf=(int)((float)rand()/RAND_MAX*(celZyciaSup-celZyciaInf)) + celZyciaInf;
  266. CelZycia = &celZyciaInf;
  267. SzukamCeluZycia = &celZyciaSup;
  268.  
  269. do{
  270. scanf("%d", SzukamCeluZycia);
  271. if((*SzukamCeluZycia-50)*(*SzukamCeluZycia-50)>50*50)continue;
  272. printf("\nProbuj dalej! Niezle ci idzie! Jestes blisko.\n");
  273. }while(*CelZycia!=*SzukamCeluZycia);
  274. if(*CelZycia==42)
  275. printf("Cel zostal znaleziony. Wynosi on 42.");
  276. else if(*CelZycia==41 || *CelZycia==43)
  277. printf("\nZostal znaleziony cel o wartosci %d.\nPrawie dobrze, ale lepiej obierz inny cel, proponuje 42.",*CelZycia);
  278. else printf("\nZostal znaleziony cel o wartosci %d.\nNie jest dobrze, lepiej obierz inny cel, proponuje 42.",*CelZycia);
  279. break;
  280. case 'c':
  281.  
  282.  
  283. break;
  284. default:
  285. printf("reszta");
  286. printf("Naucz sie czytac, pisac oraz porgramowac w %s\n",_C_);
  287. break;
  288. }
  289. return 0;
  290. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement