Napisz program sortujący pozycyjnie tak, aby cyfry na kolejnych pozycjach były sortowane metodą sortowania przez wstawianie. Zbiór ma być posortowany nierosnąco.
Przetestuj działanie programu dla zbioru {5000, 23, 567, 34909, 2, 98, 1010, 8, 90}.
Specyfikacja:
Dane:
dane[] – jednowymiarowa tablica liczb całkowitych; liczby do posortowania
liczbaElementow – liczba naturalna; liczba elementów umieszczonych w tablicy dane
liczbaCyfr – liczba naturalna dodatnia; liczba cyfr tworzących największą liczbę z tablicy dane
Wynik:
dane – posortowana nierosnąco tablica liczb całkowitych
RhlXpMwOO4bRu
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 3. using namespace std średnik.
Linia 5. int dane otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 5000 przecinek 23 przecinek 567 przecinek 34909 przecinek 2 przecinek 98 przecinek 1010 przecinek 8 przecinek 90 zamknij nawias klamrowy średnik.
Linia 6. int liczbaElementow znak równości 9 średnik.
Linia 7. int liczbaCyfr znak równości 5 średnik.
Linia 9. void sortowaniePrzezWstawianie otwórz nawias okrągły int pozycjaCyfry zamknij nawias okrągły otwórz nawias klamrowy.
Linia 11. int wspolczynnikCyfry znak równości pow otwórz nawias okrągły 10 przecinek pozycjaCyfry zamknij nawias okrągły średnik.
Linia 13. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny liczbaElementow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 15. int cyfra znak równości otwórz nawias okrągły dane otwórz nawias kwadratowy i zamknij nawias kwadratowy prawy ukośnik wspolczynnikCyfry zamknij nawias okrągły procent 10 średnik.
Linia 16. int wartosc znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 17. int j znak równości i minus 1 średnik.
Linia 19. while otwórz nawias okrągły otwórz nawias okrągły j zamknij nawias ostrokątny znak równości 0 zamknij nawias okrągły ampersant ampersant otwórz nawias okrągły otwórz nawias okrągły otwórz nawias okrągły dane otwórz nawias kwadratowy j zamknij nawias kwadratowy prawy ukośnik wspolczynnikCyfry zamknij nawias okrągły procent 10 zamknij nawias okrągły otwórz nawias ostrokątny cyfra zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. dane otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości dane otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 21. j znak równości j minus 1 średnik.
Linia 22. zamknij nawias klamrowy.
Linia 23. dane otwórz nawias kwadratowy j plus 1 zamknij nawias kwadratowy znak równości wartosc średnik.
Linia 24. zamknij nawias klamrowy.
Linia 25. zamknij nawias klamrowy.
Linia 26. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 28. for otwórz nawias okrągły int numerCyfry znak równości 0 średnik numerCyfry otwórz nawias ostrokątny liczbaCyfr średnik numerCyfry plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 29. sortowaniePrzezWstawianie otwórz nawias okrągły numerCyfry zamknij nawias okrągły średnik.
Linia 30. zamknij nawias klamrowy.
Linia 31. 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 32. cout otwórz nawias ostrokątny otwórz nawias ostrokątny dane otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów cudzysłów średnik.
Linia 33. zamknij nawias klamrowy.
Linia 35. return 0 średnik.
Linia 36. zamknij nawias klamrowy.
31
Ćwiczenie 2
Zawodnicy dwóch drużyn rywalizowali w pewnej konkurencji, której celem było uzyskanie jak najmniejszej liczby punktów. W każdym etapie można było zdobyć liczbę punktów będącą naturalną potęgą liczby 10. Okazało się, że zawodnicy drużyny A uzyskali parzyste miejsca w rywalizacji, a zawodnicy drużyny B zdobyli miejsca nieparzyste. Ile punktów drużyna A powinna stracić, aby doszło do remisu w klasyfikacji drużynowej? Napisz program wyświetlający różnicę punktową między drużyną A i B. Zauważ, że liczby w zbiorze składają się wyłącznie z cyfr 0 i 1. Cyfry na kolejnych pozycjach posortuj, używając algorytmu sortowania przez zliczanie.
Przetestuj działanie programu dla następujących wyników {1000, 110010, 100001, 11, 10, 101, 1010, 0, 1100110, 1}.
Specyfikacja:
Dane:
dane[] – jednowymiarowa tablica liczb całkowitych; liczby do posortowania
liczbaElementow – liczba naturalna; liczba elementów umieszczonych w tablicy dane
liczbaCyfr – liczba naturalna dodatnia; liczba cyfr tworzących największą liczbę z tablicy dane
Wynik:
roznica – liczba całkowita
R1H1nodN5Duu9
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 3. using namespace std średnik.
Linia 5. int dane otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 1000 przecinek 110010 przecinek 100001 przecinek 11 przecinek 10 przecinek 101 przecinek 1010 przecinek 0 przecinek 1100110 przecinek 1 zamknij nawias klamrowy średnik.
Linia 6. const int liczbaElementow znak równości 10 średnik.
Linia 7. int liczbaCyfr znak równości 7 średnik.
Linia 9. void sortowaniePrzezZliczanie otwórz nawias okrągły int pozycjaCyfry zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. int temp otwórz nawias kwadratowy liczbaElementow zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy średnik.
Linia 11. int tablicaZliczenCyfr otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy zamknij nawias klamrowy średnik.
Linia 13. int wspolczynnikCyfry znak równości pow otwórz nawias okrągły 10 przecinek pozycjaCyfry zamknij nawias okrągły średnik.
Linia 15. 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 16. int odczytanaCyfra znak równości otwórz nawias okrągły dane otwórz nawias kwadratowy i zamknij nawias kwadratowy prawy ukośnik wspolczynnikCyfry zamknij nawias okrągły procent 10 średnik.
Linia 17. tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy plus plus średnik.
Linia 18. zamknij nawias klamrowy.
Linia 20. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny 2 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. 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 22. zamknij nawias klamrowy.
Linia 24. 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 25. int odczytanaCyfra znak równości otwórz nawias okrągły dane otwórz nawias kwadratowy i zamknij nawias kwadratowy prawy ukośnik wspolczynnikCyfry zamknij nawias okrągły procent 10 średnik.
Linia 26. int indeksTablicyWynikowej znak równości tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy minus 1 średnik.
Linia 27. temp otwórz nawias kwadratowy indeksTablicyWynikowej zamknij nawias kwadratowy znak równości dane otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 28. tablicaZliczenCyfr otwórz nawias kwadratowy odczytanaCyfra zamknij nawias kwadratowy minus minus średnik.
Linia 29. zamknij nawias klamrowy.
Linia 31. 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 32. dane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości temp otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 33. zamknij nawias klamrowy.
Linia 35. zamknij nawias klamrowy.
Linia 37. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 38. int sumaA znak równości 0 średnik.
Linia 39. int sumaB znak równości 0 średnik.
Linia 40. int roznica średnik.
Linia 41. for otwórz nawias okrągły int numerCyfry znak równości 0 średnik numerCyfry otwórz nawias ostrokątny liczbaCyfr średnik numerCyfry plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 42. sortowaniePrzezZliczanie otwórz nawias okrągły numerCyfry zamknij nawias okrągły średnik.
Linia 43. zamknij nawias klamrowy.
Linia 44. for otwórz nawias okrągły int b znak równości 0 średnik b otwórz nawias ostrokątny liczbaElementow średnik b plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 45. sumaB plus znak równości dane otwórz nawias kwadratowy b zamknij nawias kwadratowy średnik.
Linia 46. zamknij nawias klamrowy.
Linia 47. for otwórz nawias okrągły int a znak równości 1 średnik a otwórz nawias ostrokątny liczbaElementow średnik a plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 48. sumaA plus znak równości dane otwórz nawias kwadratowy a zamknij nawias kwadratowy średnik.
Linia 49. zamknij nawias klamrowy.
Linia 50. roznica znak równości sumaA minus sumaB średnik.
Linia 51. cout otwórz nawias ostrokątny otwórz nawias ostrokątny roznica średnik.
Linia 53. return 0 średnik.
Linia 54. zamknij nawias klamrowy.