Menu
Coddy logo textTech

Sortowanie listy

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 7 z 65.

Gdy musisz uporządkować elementy na liście, Dart udostępnia metodę sort(), która układa elementy w kolejności rosnącej. Ta metoda jest szczególnie przydatna do sortowania imion w kolejności alfabetycznej lub liczb od najmniejszej do największej.

Metoda sort() modyfikuje oryginalną listę bezpośrednio, zamiast tworzyć nową, posortowaną listę. Gdy wywołujesz metodę sort() na liście, przestawia ona istniejące elementy w miejscu.

List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names);  // ['Alice', 'Bob', 'Charlie']

List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores);  // [78, 85, 92, 96]

Metoda sort() działa automatycznie w przypadku popularnych typów danych, takich jak ciągi znaków i liczby. Ciągi znaków sortuje alfabetycznie, a liczby od najmniejszej do największej. Dzięki temu jest to proste narzędzie do porządkowania danych, gdy potrzebujesz elementów w przewidywalnej kolejności.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który zarządza menu restauracji, porządkując dania w różnych kategoriach. Twój program powinien:

  1. Odczytać dane wejściowe w postaci ciągu znaków reprezentującego nazwę restauracji
  2. Odczytać wiele ciągów znaków reprezentujących nazwy dań (wprowadzanie danych zakończy się po otrzymaniu pustego ciągu znaków)
  3. Użyć metody sort(), aby uporządkować dania alfabetycznie
  4. Wypisać uporządkowane menu w dokładnym formacie pokazanym poniżej

Na przykład, jeśli nazwą restauracji jest "Bella Vista", a daniami są "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", program powinien wypisać:

Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabetically

Jeśli nazwą restauracji jest "Quick Bites", a daniami są "Burger", "Pizza", "Sandwich", program powinien wypisać:

Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabetically

Jeśli nazwą restauracji jest "Cafe Corner" i podano tylko jedno danie "Coffee", program powinien wypisać:

Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabetically

Twój program musi używać metody sort(), aby uporządkować dania alfabetycznie. Pamiętaj, że sort() modyfikuje oryginalną tablicę w miejscu, więc jeśli chcesz wyświetlić zarówno oryginalną, jak i posortowaną wersję, przed sortowaniem musisz utworzyć kopię oryginalnej tablicy.

Spróbuj swoich sił

import 'dart:io';

void main() {
  // Wczytaj nazwę restauracji
  String? restaurantName = stdin.readLineSync();
  
  // Wczytuj nazwy dań aż do pustego ciągu znaków
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: Napisz swój kod poniżej
  // Utwórz kopię oryginalnej listy i ją posortuj
  // Oblicz łączną liczbę dań
  // Wypisz dane w wymaganym formacie
  
  // Wyświetl wyniki
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online