Przedstawiony program powinien być implementacją algorytmu sortowania pozycyjnego dat z wykorzystaniem algorytmu sortowania bąbelkowego. Uzupełnij kod w odpowiednich miejscach, tak aby algorytm sortowania działał poprawnie. Algorytm powinien sortować daty chronologicznie.
Specyfikacja problemu:
Dane:
wielkoscZbioru - liczba całkowita przechowująca informację dotyczącą liczby sortowanych dat
daty[0..wielkoscZbioru - 1] - tablica jednowymiarowa przechowująca sortowane daty w formie napisu; daty w tablicy przechowywane są jako napisy w formacie RRRR‑MM‑DD
Wynik:
daty[0..wielkoscZbioru - 1] – zawiera daty posortowane chronologicznie (od najwcześniejszej do najpóźniejszej)
RjIu5mjIBmz80
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. string daty otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy.
Linia 6. cudzysłów 1410 minus 07 minus 15 cudzysłów przecinek.
Linia 7. cudzysłów 1453 minus 05 minus 29 cudzysłów przecinek.
Linia 8. cudzysłów 2020 minus 03 minus 05 cudzysłów przecinek.
Linia 9. cudzysłów 2020 minus 04 minus 20 cudzysłów przecinek.
Linia 10. cudzysłów 1342 minus 12 minus 03 cudzysłów.
Linia 11. zamknij nawias klamrowy średnik.
Linia 13. int wielkoscZbioru znak równości 5 średnik.
Linia 15. void sortowanieBabelkowe otwórz nawias okrągły int index zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. string temp średnik.
Linia 17. bool czyZmiana znak równości false średnik.
Linia 19. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wielkoscZbioru średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny wielkoscZbioru minus 1 średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. if otwórz nawias okrągły otwórz nawias okrągły daty otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy index zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias okrągły daty otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy otwórz nawias kwadratowy index zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. temp znak równości daty otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 23. daty otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości daty otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy średnik.
Linia 24. daty otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości temp średnik.
Linia 26. czyZmiana znak równości true średnik.
Linia 27. zamknij nawias klamrowy.
Linia 28. zamknij nawias klamrowy.
Linia 30. if otwórz nawias okrągły czyZmiana znak równości znak równości false zamknij nawias okrągły otwórz nawias klamrowy.
Linia 31. break średnik.
Linia 32. zamknij nawias klamrowy.
Linia 33. zamknij nawias klamrowy.
Linia 34. zamknij nawias klamrowy.
Linia 36. void sortowaniePozycyjne otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 37. for otwórz nawias okrągły int i znak równości 9 średnik i zamknij nawias ostrokątny znak równości 0 średnik i minus minus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 38. if otwórz nawias okrągły i znak równości znak równości 4 kreska pionowa kreska pionowa i znak równości znak równości 7 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 39. continue średnik.
Linia 40. zamknij nawias klamrowy.
Linia 41. sortowanieBabelkowe otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 42. zamknij nawias klamrowy.
Linia 43. zamknij nawias klamrowy.
Linia 45. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 46. sortowaniePozycyjne otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 47. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny wielkoscZbioru średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 48. cout otwórz nawias ostrokątny otwórz nawias ostrokątny daty otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 49. zamknij nawias klamrowy.
Linia 51. return 0 średnik.
Linia 52. zamknij nawias klamrowy.
21
Ćwiczenie 2
Użyj algorytmu sortowania pozycyjnego dat z algorytmem sortowania przez zliczanie, aby odpowiedzieć na pytanie, ile dat w tablicy dane jest ułożonych chronologicznie, po dacie upadku Konstantynopola (1453‑05‑29). Przetestuj swój program dla następujących danych:
liczbaElementow = 6
dane = { "1569‑07‑01", "1410‑07‑15", "1453‑05‑29", "1453‑07‑17", "1452‑09‑30", "1386‑03‑04" }
Specyfikacja problemu:
Dane:
liczbaElementow - liczba całkowita przechowująca informację dotyczącą liczby sortowanych dat
dane[0..liczbaElementow - 1] - tablica jednowymiarowa przechowująca sortowane daty w formie napisu; daty w tablicy przechowywane są jako napisy w formacie RRRR‑MM‑DD
Wynik:
x - liczba całkowita; liczba dat w zbiorze ułożonych chronologicznie, po dacie upadku Konstantynopola
R1U5IzXFk6WWB
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. string dane otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy.
Linia 6. cudzysłów 1569 minus 07 minus 01 cudzysłów przecinek.
Linia 7. cudzysłów 1410 minus 07 minus 15 cudzysłów przecinek.
Linia 8. cudzysłów 1453 minus 05 minus 29 cudzysłów przecinek.
Linia 9. cudzysłów 1453 minus 07 minus 17 cudzysłów przecinek.
Linia 10. cudzysłów 1452 minus 09 minus 30 cudzysłów przecinek.
Linia 11. cudzysłów 1386 minus 03 minus 04 cudzysłów.
Linia 12. zamknij nawias klamrowy średnik.
Linia 13. int liczbaElementow znak równości 6 średnik.
Linia 15. void sortowaniePrzezZliczanie otwórz nawias okrągły int indeksZnaku zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. string temp otwórz nawias kwadratowy liczbaElementow zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy średnik.
Linia 17. int tablicaZliczenCyfr otwórz nawias kwadratowy 10 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy średnik.
Linia 19. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaElementow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. int odczytanaCyfra znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy indeksZnaku zamknij nawias kwadratowy minus apostrof 0 apostrof średnik.
Linia 21. tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy plus plus średnik.
Linia 22. zamknij nawias klamrowy.
Linia 24. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 25. tablicaZliczenCyfr otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tablicaZliczenCyfr otwórz nawias kwadratowy i zamknij nawias kwadratowy plus tablicaZliczenCyfr otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy średnik.
Linia 26. zamknij nawias klamrowy.
Linia 28. for otwórz nawias okrągły int i znak równości liczbaElementow minus 1 średnik i zamknij nawias ostrokątny znak równości 0 średnik i minus minus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 29. int odczytanaCyfra znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy indeksZnaku zamknij nawias kwadratowy minus apostrof 0 apostrof średnik.
Linia 30. int indeksWTablicyWynikowej znak równości tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy minus 1 średnik.
Linia 31. temp otwórz nawias kwadratowy indeksWTablicyWynikowej zamknij nawias kwadratowy znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 32. tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy minus minus średnik.
Linia 33. zamknij nawias klamrowy.
Linia 35. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaElementow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. dane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości temp otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 37. zamknij nawias klamrowy.
Linia 38. zamknij nawias klamrowy.
Linia 40. int policzWydarzeniaPoDacie otwórz nawias okrągły string data zamknij nawias okrągły otwórz nawias klamrowy.
Linia 41. int indeks znak równości liczbaElementow średnik.
Linia 42. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaElementow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 43. if otwórz nawias okrągły dane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości data zamknij nawias okrągły otwórz nawias klamrowy.
Linia 44. indeks znak równości i średnik.
Linia 45. break średnik.
Linia 46. zamknij nawias klamrowy.
Linia 47. zamknij nawias klamrowy.
Linia 48. return liczbaElementow minus indeks minus 1 średnik.
Linia 49. zamknij nawias klamrowy.
Linia 51. int main otwórz nawias okrągły zamknij nawias okrągły.
Linia 52. otwórz nawias klamrowy.
Linia 53. for otwórz nawias okrągły int i znak równości 9 średnik i zamknij nawias ostrokątny znak równości 0 średnik i minus minus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 54. if otwórz nawias okrągły i znak równości znak równości 7 kreska pionowa kreska pionowa i znak równości znak równości 4 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 55. continue średnik.
Linia 56. zamknij nawias klamrowy.
Linia 57. sortowaniePrzezZliczanie otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 58. zamknij nawias klamrowy.
Linia 60. cout otwórz nawias ostrokątny otwórz nawias ostrokątny policzWydarzeniaPoDacie otwórz nawias okrągły cudzysłów 1453 minus 05 minus 29 cudzysłów zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 62. return 0 średnik.
Linia 63. zamknij nawias klamrowy.
31
Ćwiczenie 3
Organizatorzy rajdu rowerowego zastanawiają się, jaka jest mediana wieku zawodników. Dysponują listą dat urodzin zawodników. Napisz program, który wyznaczy medianę spośród dat urodzin i wydrukuje ją na standardowe wyjście. Przetestuj swój program dla następujących danych:
Mediana, zwana inaczej wartością środkową, zajmuje środkową pozycję w uporządkowanym szeregu statystycznym. Więcej informacji na jej temat znajdziesz w e‑materiale MedianaD141WaQJ8Mediana.
Specyfikacja problemu:
Dane:
liczbaElementow - liczba całkowita przechowująca informację dotyczącą liczby sortowanych dat
dane[0..liczbaElementow - 1] - tablica jednowymiarowa przechowująca sortowane daty w formie napisu; daty w tablicy przechowywane są jako napisy w formacie RRRR‑MM‑DD
Wynik:
mediana - ciąg znaków; mediana dat tablicy dane
R10OIowQO5hSF
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. string dane otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy.
Linia 6. cudzysłów 1999 minus 02 minus 14 cudzysłów przecinek.
Linia 7. cudzysłów 1984 minus 02 minus 09 cudzysłów przecinek.
Linia 8. cudzysłów 1987 minus 12 minus 31 cudzysłów przecinek.
Linia 9. cudzysłów 1993 minus 03 minus 24 cudzysłów przecinek.
Linia 10. cudzysłów 2001 minus 07 minus 01 cudzysłów przecinek.
Linia 11. cudzysłów 1996 minus 02 minus 26 cudzysłów przecinek.
Linia 12. cudzysłów 1982 minus 11 minus 21 cudzysłów przecinek.
Linia 13. cudzysłów 1990 minus 05 minus 27 cudzysłów przecinek.
Linia 14. cudzysłów 1992 minus 09 minus 10 cudzysłów przecinek.
Linia 15. cudzysłów 1996 minus 09 minus 26 cudzysłów przecinek.
Linia 16. cudzysłów 1998 minus 12 minus 11 cudzysłów.
Linia 17. zamknij nawias klamrowy średnik.
Linia 18. int liczbaElementow znak równości 11 średnik.
Linia 20. void sortowaniePrzezZliczanie otwórz nawias okrągły int indeksZnaku zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. string temp otwórz nawias kwadratowy liczbaElementow zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy średnik.
Linia 22. int tablicaZliczenCyfr otwórz nawias kwadratowy 10 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy średnik.
Linia 24. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaElementow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 25. int odczytanaCyfra znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy indeksZnaku zamknij nawias kwadratowy minus apostrof 0 apostrof średnik.
Linia 26. tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy plus plus średnik.
Linia 27. zamknij nawias klamrowy.
Linia 29. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 30. tablicaZliczenCyfr otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tablicaZliczenCyfr otwórz nawias kwadratowy i zamknij nawias kwadratowy plus tablicaZliczenCyfr otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy średnik.
Linia 31. zamknij nawias klamrowy.
Linia 33. for otwórz nawias okrągły int i znak równości liczbaElementow minus 1 średnik i zamknij nawias ostrokątny znak równości 0 średnik i minus minus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 34. int odczytanaCyfra znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy indeksZnaku zamknij nawias kwadratowy minus apostrof 0 apostrof średnik.
Linia 35. int indeksWTablicyWynikowej znak równości tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy minus 1 średnik.
Linia 36. temp otwórz nawias kwadratowy indeksWTablicyWynikowej zamknij nawias kwadratowy znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 37. tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy minus minus średnik.
Linia 38. zamknij nawias klamrowy.
Linia 40. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaElementow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 41. dane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości temp otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 42. zamknij nawias klamrowy.
Linia 43. zamknij nawias klamrowy.
Linia 45. int main otwórz nawias okrągły zamknij nawias okrągły.
Linia 46. otwórz nawias klamrowy.
Linia 47. for otwórz nawias okrągły int i znak równości 9 średnik i zamknij nawias ostrokątny znak równości 0 średnik i minus minus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 48. if otwórz nawias okrągły i znak równości znak równości 7 kreska pionowa kreska pionowa i znak równości znak równości 4 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 49. continue średnik.
Linia 50. zamknij nawias klamrowy.
Linia 51. sortowaniePrzezZliczanie otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 52. zamknij nawias klamrowy.
Linia 54. cout otwórz nawias ostrokątny otwórz nawias ostrokątny dane otwórz nawias kwadratowy 6 zamknij nawias kwadratowy średnik.
Linia 56. return 0 średnik.
Linia 57. zamknij nawias klamrowy.