Zadanie z tworzenia algorytmów

Przypomnienie jak czytać z klawiatury w Java:

import java.util.Scanner;  // Import

// .... w metodzie main()
Scanner myObj = new Scanner(System.in);  // Stworzenie obiektu Scanner
    System.out.println("Wprowadź imię");

    String name = myObj.nextLine();  // Odczytaj z klawiatury
    System.out.println("Twoje imie: " + userName);  // Wypisz 

[Ocena 2: Dopuszczający] - Operacje We/Wy i prosta instrukcja warunkowa

Wymagania programistyczne: Deklaracja zmiennych, pobieranie danych z konsoli, rzutowanie typów, instrukcja if ... else, sformatowane wyświetlanie tekstu.

  1. Pobiera od użytkownika wysokość paczki w centymetrach (liczba zmiennoprzecinkowa).
  2. Sprawdza warunek gabarytu:
    • Jeśli wysokość ≤8.0 cm → program wyświetla: Wybrano Gabaryt A (Cena: 12.00 PLN).
    • W przeciwnym razie → program wyświetla: Wybrano Gabaryt B (Cena: 16.00 PLN).
  3. Program działa bezbłędnie dla pojedynczego przebiegu.

[Ocena 3: Dostateczny] - Warunki złożone, walidacja i operatory logiczne

Wymagania programistyczne: Instrukcja wielowariantowa (if - else if - else), operatory logiczne (&& / and, || / or), podstawowa walidacja wejścia.

Rozbuduj program z oceny 2:

  1. Program pobiera teraz dwie wartości: wysokość h [cm] oraz wagę w [kg].
  2. Walidacja danych: Jeśli waga lub wysokość jest mniejsza lub równa zero, program wyświetla komunikat o błędzie: Blad: Wymiary musza byc dodatnie! i kończy działanie.
  3. Sprawdzenie limitu wagi: jeśli w > 25.0 kg → program wyświetla: Odrzucono: Paczka przekracza limit wagi (max 25 kg).
  4. Jeśli waga jest poprawna, program kwalifikuje paczkę do 3 gabarytów:
    • h ≤ 8.0 cm → Gabaryt A - 12.00 PLN
    • 8.0 < h ≤ 19.0 cm → Gabaryt B - 16.00 PLN
    • 19.0 < h ≤ 41.0 cm → Gabaryt C - 20.00 PLN
    • h > 41.0 cm → Odrzucono: Zbyt wysoka paczka (max 41 cm).

[Ocena 4: Dobry] - Pętla sterująca, sumator, licznik i wartownik

Wymagania programistyczne: Pętla (while lub do-while), zmienne akumulujące (suma), liczniki (inkrementacja), kontrolowane przerywanie pętli (break lub warunek pętli).

Zmiana logiki: Program ma teraz symulować załadunek wielu paczek przez kuriera do skrytki zbiorczej:

  1. Skrytka ma maksymalną ładowność M = 100.0 kg.
  2. Program działa w pętli: prosi kuriera o podanie wagi kolejnej paczki.
  3. Wprowadzenie wagi 0 (wartownik) oznacza zakończenie załadunku przez kuriera.
  4. Przed dodaniem paczki program sprawdza, czy jej waga nie spowoduje przekroczenia limitu 100 kg:
    • Jeśli paczka się mieści: dolicza jej wagę do sumy, zwiększa licznik przyjętych paczek o 1 i wyświetla aktualny stan: Przyjeto paczke. Laczna waga: X kg / 100 kg.
    • Jeśli paczka spowodowałaby przekroczenie limitu: wyświetla komunikat Odrzucono: Przekroczono limit nosnosci! i nie dolicza jej.
  5. Po przerwaniu pętli program wyświetla podsumowanie:
    • Liczbę przyjętych paczek.
    • Łączną wagę przyjętych paczek.
    • Pozostałe wolne miejsce w kilogramach.

[Ocena 5: Bardzo dobry] - Modularyzacja (funkcje), tablice/listy i analityka danych

Wymagania programistyczne: Wydzielenie logiki do własnych funkcji/metod z parametrami i zwracaniem wartości, dynamiczne kolekcje (tablice / listy / wektory), wyszukiwanie wartości skrajnych (min/max), zabezpieczenie przed dzieleniem przez zero.

Przebuduj architekturę kodu:

  1. Modularyzacja:
    • Stwórz funkcję sprawdzającą, czy paczkę można dodać: bool czy_zemiesci(float aktualna_waga, float nowa_paczka, float max_limit).
    • Stwórz funkcję generującą raport końcowy.
  2. Kolekcje danych: Wszystkie zaakceptowane wagi paczek muszą być zapisywane do listy.
  3. Odporność na błędy (Walidacja ujemna): Wpisanie wagi ujemnej nie może wyłączać programu ani dodawać paczki - program ma wyświetlić ostrzeżenie i kontynuować pętlę (continue).
  4. Raport statystyczny: Na koniec załadunku program samodzielnie (za pomocą pętli przeszukującej tablicę, a nie gotowych funkcji bibliotecznych):
    • Wyznacza wagę najcięższej przyjętej paczki.
    • Wyznacza wagę najlżejszej przyjętej paczki.
    • Oblicza średnią wagę paczki (uwzględniając zabezpieczenie: co jeśli załadowano 0 paczek?).