Piotr Bajtocki prowadzi firmę budowlaną. Zgodnie z prawem ma obowiązek zaopatrzyć swoich pracowników w wodę. Butelki wody o pojemności 1,5 litra są pakowane w zgrzewkach. W każdej ze zgrzewek zapakowano pewną liczbę butelek. Liczba ta jest liczbą pierwszą. Najmniejsza zgrzewka opakowuje m butelek; największa n. Litr wody kosztuje x złotych. Budżet Piotra wynosi y złotych. Jak dużą zgrzewkę wody może kupić?
Jeśli liczba butelek, które w zgrzewce może kupić pan Bajtocki, jest większa od n, oznacza to, że jego budżet pozwala na zakup największej zgrzewki.
W swoim rozwiązaniu nie wykorzystuj funkcji sqrt.
Swoje rozwiązanie przetestuj dla x wynoszącego 0,80; y równego 70, n równego 97, m wynoszącego 5.
Specyfikacja problemu:
Dane:
x – cena litra wody; liczba zmiennoprzecinkowa dodatnia
y – budżet Piotra; liczba zmiennoprzecinkowa dodatnia
n – maksymalna liczba butelek w zgrzewce; liczba pierwsza;
m – liczba butelek w najmniejszej zgrzewce; liczba pierwsza;
Wynik:
Na standardowym wyjściu program wypisuje największą liczbę butelek w zgrzewce, która mieści się w budżecie Piotra.
RVd5LOwHNdrye
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 6. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. int n znak równości 97 średnik.
Linia 8. int m znak równości 5 średnik.
Linia 9. double x znak równości 0 kropka 8 średnik.
Linia 10. double y znak równości 70 kropka 00 średnik.
Linia 12. prawy ukośnik prawy ukośnik wyznaczanie sita i zwiększamy n.
Linia 13. n plus plus średnik.
Linia 14. bool sito otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. sito otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości true średnik.
Linia 17. zamknij nawias klamrowy.
Linia 19. for otwórz nawias okrągły int i znak równości 2 średnik i asterysk i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. int j znak równości i asterysk i średnik.
Linia 22. while otwórz nawias okrągły j otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 23. sito otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości false średnik.
Linia 24. j znak równości j plus i średnik.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy.
Linia 27. zamknij nawias klamrowy.
Linia 29. double cenaButelki znak równości x asterysk 1 kropka 5 średnik.
Linia 30. int ileMaksymalnieMozeKupic znak równości otwórz nawias okrągły int zamknij nawias okrągły otwórz nawias okrągły y prawy ukośnik cenaButelki zamknij nawias okrągły średnik.
Linia 32. if otwórz nawias okrągły ileMaksymalnieMozeKupic zamknij nawias ostrokątny n minus 1 zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik porównujemy z maksymalnym rozmiarem zgrzewki.
Linia 33. ileMaksymalnieMozeKupic znak równości n minus 1 średnik.
Linia 34. zamknij nawias klamrowy.
Linia 35. else if otwórz nawias okrągły ileMaksymalnieMozeKupic otwórz nawias ostrokątny m zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. ileMaksymalnieMozeKupic znak równości 0 średnik.
Linia 37. zamknij nawias klamrowy.
Linia 38. else otwórz nawias klamrowy.
Linia 39. while otwórz nawias okrągły wykrzyknik sito otwórz nawias kwadratowy ileMaksymalnieMozeKupic zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 40. ileMaksymalnieMozeKupic minus minus średnik.
Linia 41. zamknij nawias klamrowy.
Linia 42. zamknij nawias klamrowy.
Linia 43. cout otwórz nawias ostrokątny otwórz nawias ostrokątny otwórz nawias okrągły ileMaksymalnieMozeKupic zamknij nawias okrągły średnik.
Linia 44. zamknij nawias klamrowy.
21
Ćwiczenie 2
Zygmunt Bajtek otrzymał od rodziców prezent – zegarek analogowy. Zafascynowany podarkiem postanowił policzyć, ile razy wskazówka minutowa wskaże liczbę pierwszą. Uzyskawszy tę wiedzę, policzył kąty między osią biegnącą od środka tarczy do minutowego 0, a wskazówką minutową wskazującą liczby pierwsze (przykład na rysunku). Napisz program, który w kolejnych liniach wypisze kolejne wartości , zaczynając od trzeciej minuty.
Specyfikacja problemu:
Dane:
A – 61‑elementowa tablica wartości logicznych wypełniona wartościami true
Wynik:
Na standardowym wyjściu program wypisuje w kolejnych wierszach wartości kąta .
Rb077dwxQPSpb
R5Svn0ZRM6FPD
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny cmath zamknij nawias ostrokątny.
Linia 4. using namespace std średnik.
Linia 7. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. int n znak równości 61 średnik.
Linia 9. bool A otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 10. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 11. A otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości true średnik.
Linia 12. zamknij nawias klamrowy.
Linia 14. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny sqrt otwórz nawias okrągły n zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 15. if otwórz nawias okrągły A otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. int j znak równości i asterysk i średnik.
Linia 17. while otwórz nawias okrągły j otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. A otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości false średnik.
Linia 19. j znak równości j plus i średnik.
Linia 20. zamknij nawias klamrowy.
Linia 21. zamknij nawias klamrowy.
Linia 22. zamknij nawias klamrowy.
Linia 24. int katMinuta znak równości 360 prawy ukośnik 60 średnik.
Linia 26. for otwórz nawias okrągły int i znak równości 3 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 27. if otwórz nawias okrągły A otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 28. cout otwórz nawias ostrokątny otwórz nawias ostrokątny otwórz nawias okrągły i asterysk katMinuta zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 29. zamknij nawias klamrowy.
Linia 30. zamknij nawias klamrowy.
Linia 31. zamknij nawias klamrowy.
31
Ćwiczenie 3
Hipoteza Goldbacha zakłada, że każda liczba naturalna parzysta większa od 2 jest sumą dwóch liczb pierwszych. Napisz program weryfikujący hipotezę Goldbacha dla liczb parzystych nie większych od n.
Swoje rozwiązanie zweryfikuj dla n wynoszącego 1000.
Specyfikacja problemu:
Dane:
n – parzysta liczba naturalna dodatnia
Wynik:
Na standardowym wyjściu program wypisuje równania potwierdzające hipotezę Goldbacha, zgodnie z poniższym schematem; NIE w przeciwnym przypadku.
Przykład wyjścia:
Lewy składnik dodawania jest mniejszy od prawego; kolejne sumy wypisywane są rosnąco:
Linia 1. 2 plus 2 znak równości 4.
Linia 2. 3 plus 3 znak równości 6.
Linia 3. 3 plus 5 znak równości 8.
Linia 4. kropka kropka kropka.
Linia 5. 3 plus 997 znak równości 1000.
RqtT4pIuQdJIr1
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny cmath zamknij nawias ostrokątny.
Linia 4. using namespace std średnik.
Linia 6. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. int n znak równości 1000 średnik.
Linia 9. if otwórz nawias okrągły n procent 2 znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Wprowadzono liczbe nieparzysta wykrzyknik cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 11. return 0 średnik.
Linia 12. zamknij nawias klamrowy.
Linia 14. bool sito otwórz nawias kwadratowy n zamknij nawias kwadratowy średnik.
Linia 15. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. sito otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości true średnik.
Linia 17. zamknij nawias klamrowy.
Linia 19. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny sqrt otwórz nawias okrągły n zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. int j znak równości i asterysk i średnik.
Linia 22. while otwórz nawias okrągły j otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 23. sito otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości false średnik.
Linia 24. j znak równości j plus i średnik.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy.
Linia 27. zamknij nawias klamrowy.
Linia 29. int liczbaLiczbPierwszych znak równości 0 średnik.
Linia 30. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 31. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 32. liczbaLiczbPierwszych plus plus średnik.
Linia 33. zamknij nawias klamrowy.
Linia 35. int liczbyPierwsze otwórz nawias kwadratowy liczbaLiczbPierwszych zamknij nawias kwadratowy średnik.
Linia 37. int licznik znak równości 0 średnik.
Linia 38. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 39. if otwórz nawias okrągły sito otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 40. liczbyPierwsze otwórz nawias kwadratowy licznik zamknij nawias kwadratowy znak równości i średnik.
Linia 41. licznik plus plus średnik.
Linia 42. zamknij nawias klamrowy.
Linia 43. zamknij nawias klamrowy.
Linia 45. for otwórz nawias okrągły int parzysta znak równości 4 średnik parzysta otwórz nawias ostrokątny znak równości n średnik parzysta plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 46. prawy ukośnik prawy ukośnik Sprawdzenie czy parzysta może być wyrażone jako suma dwóch liczb pierwszych.
Linia 47. int lewa znak równości 0 średnik.
Linia 48. int prawa znak równości liczbaLiczbPierwszych minus 1 średnik.
Linia 50. while otwórz nawias okrągły lewa otwórz nawias ostrokątny znak równości prawa zamknij nawias okrągły otwórz nawias klamrowy.
Linia 51. if otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy znak równości znak równości parzysta zamknij nawias okrągły break średnik.
Linia 52. else if otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy otwórz nawias ostrokątny parzysta zamknij nawias okrągły lewa plus plus średnik.
Linia 53. else prawa minus minus średnik.
Linia 54. zamknij nawias klamrowy.
Linia 56. if otwórz nawias okrągły liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy plus liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy znak równości znak równości parzysta zamknij nawias okrągły otwórz nawias klamrowy.
Linia 57. cout otwórz nawias ostrokątny otwórz nawias ostrokątny liczbyPierwsze otwórz nawias kwadratowy lewa zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów plus cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny liczbyPierwsze otwórz nawias kwadratowy prawa zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów znak równości cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny parzysta otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 58. continue średnik.
Linia 59. zamknij nawias klamrowy.
Linia 60. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów NIE cudzysłów średnik.
Linia 61. return 0 średnik.
Linia 62. zamknij nawias klamrowy.
Linia 64. return 1 średnik.
Linia 65. zamknij nawias klamrowy.