Lista zadań z programowania (C/C++/JAVA)

W tym artykule chciałbym zaprezentować listę zadań z programowania. Głównie pod kątem nauczania C++ w szkole, ale pewnie w innych językach też się da to wykorzystać.

  1. Zabawy z pętlą
    1. Napisz program, który wypisuje liczby od 0 do podanego n gdzie n to liczba całkowita. Ma je wypisać jedną pod drugą.
    2. Napisz program, który wypisuje liczby od 0 do podanego n gdzie n to liczba całkowita. Ma je wypisać po przecinku (czyli 0,1, 2, 3, …, n).
    3. Napisz program, który wypisuje liczby od n do 0 gdzie n to liczba całkowita. Ma je wypisać po przecinku.
    4. Napisz program, który wypisuje liczby PARZYSTE od 0 do n  gdzie n to liczba całkowita. Ma je wypisać po przecinku.
    5. Napisz program, który wypisuje liczby z przedziału <a,b>, gdzie a i b podane jest przez użytkownika. Zwróć uwagę na to, że przedział jest obustronnie domknięty.
    6. Napisz program, który wypisuje liczby z przedziału (a,b), gdzie a i b podane jest przez użytkownika. Zwróć uwagę na to, że przedział jest obustronnie otwarty.
    7. Napisz program, który wypisuje liczby będące kolejnymi potęgami liczby 2 w przedziale od 2 do 2048. (2,4,8,16, 32, itp.)
  2. Program pyta o wprowadzenie dwóch liczb całkowitych i podaje następujące informacje:
    a) Pierwsza liczba: większa/mniejsza/równa zero
    b) Druga liczba: większa/mniejsza/równa zero
    c) Pierwsza liczba jest podzielna przez drugą 
    


    Liczba jest podzielna przez inną, jeśli reszta z dzielenia wynosi 0.
    Poszukaj więc jak się liczy resztę z dzielenia. (Należy też uwzględnić sytuację, gdy druga liczba jest = 0)

  3. Użytkownik podaje 10 liczb rzeczywistych, następnie program podaje następujące informacje:
    a) Ile jest liczb większych od zera / 
       Ile jest liczb mniejszych od zera
    b) Suma wszystkich liczb / średnia wszystkich liczb
    c) Maksymalna liczba / minimalna liczba
    

    W zadaniu nie korzystaj z typów tablicowych. Tylko z typu rzeczywistego i całkowitego.

  4. Użytkownik wprowadza liczbę i w wyniku otrzymuje jej silnię.Uwzględnić, że:SILNIA – iloczyn kolejnych liczb naturalnych 1 · 2 · … · n, oznaczany symbolem n!czyli że są to liczby naturalne (większe lub równe zero) oraz to, że 0! = 1;Nie pozwól też na obliczenia silni większej niż zakres zmiennej. Pamiętaj, że silnia bardzo szybko rośnie i np. 20! to już aż 2 432 902 008 176 640 000 więc szybko zakres zmiennej double zostanie przekroczony. Zaimplementuj obsługę błędu danych – nie pozwól na wpisanie liczby innej niż naturalna oraz zbyt dużej.
  5. Napisz program, który pyta użytkownika o rok urodzenia i płeć. Jeśli jest to mężczyzna i ma co najmniej 65 lat lub kobieta mająca co najmniej 60 lat, to informuje „Możesz iść na emeryturę”. Jeśli nie, to pojawia się komunikat „Musisz jeszcze pracować przez XX lat”, gdzie XX to odpowiednia wartość.
  6. Program pyta użytkownika o podstawę i wysokość trójkąta i oblicza jego pole (0,5×podstawa×wysokość). Program sprawdza czy wartości są dodatnie i dla innych odmawia liczenia.
  7. Napisz program, który przelicza temperatury pomiędzy Celsjuszem, Kelwinem i Fahrenheitem. Przykładowe działanie programu:
    1 - Celsjusze --> Kelwiny i Fahrenheity
    2 - Kelwiny --> Celsjusze i Fahrenheity
    3 - Fahrenheity --> Celsjusze i Kelwiny
    Co mam robić? 1
    Podaj temperaturę w celsjuszach: 20
    Podana temperatura to:  
    20.000000 celsjuszy, 
    293.150000 kelwinów oraz 
    68.000000 fahrenheitów.
    

    Aby dokonać przeliczeń, musisz wiedzieć, że
    Temperatura w kelwinach = Temperatura w stopniach Celsjusza + 273,15
    Temperatura w fahrenheitach  = 32 + (9.0/5.0) * Temperatura w stopniach Celsjusza

  8. Użytkownik wprowadza trzy liczby całkowite. Pierwsza to liczba do badania, a pozostałe dwie oznaczają przedział <a, b>. Program sprawdza czy pierwsza liczba mieści się w przedziale. Jeśli jest równa wartości brzegowej, ma to zostać zauważone. Program musi też sprawdzić czy liczby a i b tworzą przedział (czyli czy a jest mniejsze od b) i zgłosić błąd, jeśli tak nie jest. Przykład działania programu dla wadliwych liczb zakresu:
     Podaj liczbę do badania: 10
     Podaj początek przedziału: 5
     Podaj koniec przedziału: 4
    
     Liczby 5 i 4 nie tworzą przedziału!

    oraz dla poprawnych wartości:

     Podaj liczbę do badania: 10
     Podaj początek przedziału: 0
     Podaj koniec przedziału: 18
    
     10 mieści się w przedziale <0, 18>.

    i dla krawędzi:

     Podaj liczbę do badania: 10
     Podaj początek przedziału: 0
     Podaj koniec przedziału: 10
    
     10 leży na prawej krawędzi przedziału <0, 10>.
  9. Napisz program, który wczytuje Twoją masę (podaną w kg) i wzrost (podany w cm) i na tej podstawie wylicza i wypisuje BMI. Wzór na BMI znajdziesz ww Internecie. Jeśli wyliczona wartość jest mniejsza niż 18.5, program powinien wypisać komunikat: jestes za chudy. Jeśli wyliczona wartość jest większa niż 25, program powinien wypisać komunikat jestes za gruby.
  10. Napisz program, który pobierze od użytkownika dwie dodatnie liczby rzeczywiste charakteryzujące wymiary walca – promień podstawy oraz wysokość, a następnie wypisze na ekran wartość pola powierzchni walca i jego objętość. Należy sprawdzić, czy podane przez użytkownika liczby są większe od zera, a w przeciwnym wypadku wypisać odpowiedni komunikat o błędzie danych.
  11. Napisz program, który wczyta trzy liczby typu int a następnie sprawdzi czy stanowią one trójkę pitagorejską, to znaczy czy suma kwadratów dwóch mniejszych liczb jest równa kwadratowi liczby największej. Liczby 3, 4 oraz 5 stanowią taką trójkę. W przypadku podania trójki pitagorejskiej należy wyświetlić komunikat: Liczby stanowia trojke pitagorejska., w przeciwnym razie powinien być to komunikat: To nie jest trojka pitagorejska. Uwaga: W programie należy założyć, że użytkownik wpisze liczby w dowolnej kolejności, np. 5, 3, 4.
  12. Napisz program używający dwóch pętli for (jedna wewnątrz drugiej) do uzyskania poniższego wzoru zbudowanego z gwiazdek. Niech program pyta użytkownika ile linii ma się pojawiać.
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
  13. Zmodyfikuj program tak, aby rysował trójkąt odwrócony:
    ********
    *******
    ******
    *****
    ****
    **
    *
  14. Zmodyfikuj program tak, aby rysował trójkąt – odbicie lustrzane:
           *
          **
         ***
        ****
       *****
      ******
     *******
    ********
  15. Zmodyfikuj program tak, aby rysował trójkąt symetryczny:
        **
       ****
      ******
     ********
    **********
  16. Zmodyfikuj program tak, aby rysował wuklan :):
        
        * *
       ** **
      *** ***
     **** ****
    ***** *****
    
  17. Napisz program korzystający z tablic dwuwymiarowych, który wylosuje 2 tablice liczb dwucyfrowych <10-49> o rozmiarze 5×5, następnie wypisze te tablice na standardowym wyjściu jedna pod drugą, w formie wizualnie odpowiadającej rozkładowi 5×5.
  18. Do programu z zadania 12 dodaj fragment, który do trzeciej tablicy 5×5 wpisze sumę dwóch wylosowanych tablic stosując zasadę, że sumujemy odpowiadające sobie pola, czyli pole z 1 wiersza i 1 kolumny z tablicy A sumujemy z polem z 1 wiersza i 1 kolumny z tabeli B i wpisujemy do pola z 1 wiersza i pierwszej kolumny w tabeli C. Po zsumowaniu, wypisz zawartość powstałej tablicy na standardowe wyjście.
  19. Napisz program, który poprosi użytkownika o wczytanie z klawiatury liczb a i b, a następnie wyliczy w przedziale <a,b> ilość liczb podzielnych przez 3 lub 5.
  20. Napisz program, który oblicza sumę kolejnych potęg liczby 3 (30 + 31 + 32 + …) aż do momentu, gdy suma ta przekroczy zadaną wartość smax, którą program powinien odczytać z klawiatury. W wyniku program ma wypisywać sumę oraz potęgę do której dotarł.
  21. Napisz program który wczyta z klawiatury trzy liczby dodanie i sprawdzi czy można z tych liczb zbudować trójkąt. Jeżeli tak to odpowie na pytanie czy powstały trójkąt jest trójkątem prostokątnym
  22. Napisz program który oblicza wartości miejsc zerowych w równaniu kwadratowym y=ax2 +bx+c w zależności od wartości delty lub wypisuje komunikat BRAK MIEJSCA ZEROWEGO. Wartości współczynników a, b i c należy wczytać z klawiatury.
  23. Napisz program, który liczy sumę cyfr w podanej przez użytkownika liczbie. Liczba ma być wczytywana do programu jako liczba całkowita (int).
    Przykład: 1234 → 1+2+3+4 Wynik: 10
    Przykład: 782321 → 7+8+2+3+2+1 Wynik: 23
  24. Napisz program, który pyta użytkownika o bok kwadratu, a następnie rysuje taki „kwadrat” ze znaków #. Na przykład dla liczby 10:
    ##########
    #        #
    #        #
    #        #
    #        #
    #        #
    #        #
    #        #
    #        #
    ##########

    Oczywiście wizualnie nie jest to kwadrat, z uwagi na budowę systemu fontów. Ma on jednak 10 wierszy i 10 kolumn.

  25. Zmodyfikuj program tak, aby rysował dodatkowo przekątną (przetestuj dla parzystych i nieparzystych wartości!):
    ##########
    ##       #
    # #      #
    #  #     #
    #   #    #
    #    #   #
    #     #  #
    #      # #
    #       ##
    ##########
  26. Zmodyfikuj program tak, aby rysował dodatkowo drugą przekątną (przetestuj dla parzystych i nieparzystych wartości!):
    ##########
    ##      ##
    # #    # #
    #  #  #  #
    #   ##   #
    #   ##   #
    #  #  #  #
    # #    # #
    ##      ##
    ##########
  27. Napisz program, który wczytuje zdanie od użytkownika i wypisuje je od końca.
    Podaj zdanie: Kaczka biega po placu
    To ja odpowiem tak: ucalp op ageib akzcaK
    
  28. Napisz program, który wczytuje zdanie od użytkownika i wypisuje każdy wyraz od końca.
    Podaj zdanie: Kaczka biega po placu
    To ja odpowiem tak: akzcaK ageib op ucalp   
    
  29. Zmodyfikuj poprzedni program tak, aby znaki interpunkcyjne pozostawiał na swoim miejscu.
    Podaj zdanie: Kaczka? Biega po placu!
    To ja odpowiem tak: akzcaK? ageiB op ucalp!   
    
  30. Napisz program wyznaczający relatywistyczny wzrost masy obiektu poruszającego się z prędkością v (niekoniecznie v  c), pobieranej z klawiatury. Przetestuj program dla kilku reprezentatywnych wartości testowych.
  31. Funkcję cos można przedstawić w postaci szeregu:
    Napisz program obliczający wartość funkcji cos dla argumentu x wczytywanego z klawiatury. Obliczanie powinno odbywać się poprzez sumowanie szeregu. Sumowanie powinno zakończyć się gdy kolejny wyraz sumy ma moduł mniejszy
    niż wybrana precyzja obliczeń.
  32. Napisz program rozkładający daną liczbę naturalną na czynniki pierwsze w następujący sposób. Sprawdzamy, czy liczba dzieli się przez 2. Jeżeli tak, to stwierdzamy, że dwójka występuje w jej rozkładzie na czynniki pierwsze, a samą liczbę dzielimy przez 2. Czynność tę powtarzamy, aż liczba przestanie być podzielna przez 2. Następnie powtarzamy tę samą procedurę badając podzielność przez 3, 4, itd., aż rozważana liczba stanie się równa 1.
  33. Napisz program obliczający wartość innych funkcji (np. sin, exp, ln) metodą sumowania odpowiedniego szeregu. Sumowanie powinno zakończyć się po zsumowaniu liczby wyrazów wczytanej przez użytkownika. Zbadaj, ile wyrazów szeregu należy sumować, aby uzyskać dokładność wyniku na poziomie 1%.
  34. Napisz program symulujący serię rzutów kostką sześcienną. Niech program prosi o podanie liczby rzutów a następnie wypisze rezultat losowania. Przykładowa sesja mogłaby wyglądać następująco: Podaj liczbe rzutow: 8 Wylosowano: 4 2 2 6 1 3 4 1
  35. Napisz program symulujący rzut monetą. Uruchom go wiele razy (tzn. wiele losowań w pętli). Czy uzyskane wyniki wyglądają Twoim zdaniem na losowe?
  36. Dominantą zbioru danych w statystyce nazywamy taką wartość, która występuje w nim najczęściej. Napisz kod, który przetwarza tablicę danych sondażowych, aby ustalić ich dominantę. Odpowiedź na pytanie sondażowe polegała na podawaniu liczby z zakresu od 1 do 10. W sytuacji gdy istnieje wiele dominant, można wybrać dowolną z nich. Program powinien wczytywać odpowiedzi na pytanie ankietowe do momentu, w którym użytkownik wprowadzi wartość 0.
  37. Napisz program znajdujący położenie drugiego co do wielkości elementu tablicy. Program powinien wypełniać tablicę o zadanej długości losowymi liczbami rzeczywistymi z przedziału od 0 do 1, a następnie wypisywać elementy tablicy wraz z indeksami oraz znaleziony indeks i wartość elementu drugiego co do wartości.
  38. Napisz program używający szyfru podstawieniowego, w którym wszystkie wiadomości składają się z wielkich liter i znaków interpunkcyjnych. Pierwotna wiadomość jest zwana tekstem jawnym, zaś szyfrogram tworzy się poprzez podmianę każdej z liter na inną. Utwórz w programie tablicę typu const składającą się z 26 elementów char służących do szyfrowania. Program powinien odczytywać tekst jawny i wyprowadzać odpowiadający mu szyfrogram.
  39. Zmodyfikuj powyższy program w taki sposób, by konwertował szyfrogram z powrotem na tekst jawny w celu zweryfikowania kodowania i dekodowania.
  40. Aby jeszcze bardziej utrudnić problem szyfru podstawieniowego, zmodyfikuj program w taki sposób, by zamiast wykorzystywać wbudowaną tablicy wartości const, generował w sposób losowy wzorzec szyfrowania. W praktyce oznacza to umieszczenie losowych znaków w każdym elemencie tablicy. Pamiętaj, że dana litera nie może być substytutem samej siebie. Nie możesz także użyć tej samej litery dwukrotnie.
  41. Napisz funkcję, która otrzymuje tablicę liczb całkowitych oraz wartość poszukiwaną i zwraca liczbę wystąpień tej wartości w podanej tablicy.

Author: Przemysław Adam Śmiejek

Chrześcijanin, żeglarz, edukator, youtuber, inspektor ochrony danych. W latach 1999-2019 nauczyciel w zabrskich szkołach.