Menu
Coddy logo textTech

Сортировка списка

Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 7 из 65.

Когда вам нужно упорядочить элементы в списке, Dart предоставляет метод sort(), который располагает элементы в порядке возрастания. Этот метод особенно полезен для расположения имен в алфавитном порядке или чисел от меньшего к большему.

Метод sort() изменяет исходный список напрямую, а не создает новый отсортированный список. Когда вы вызываете sort() для списка, он переупорядочивает существующие элементы на месте.

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]

Метод sort() работает автоматически для распространенных типов данных, таких как строки и числа. Для строк он выполняет сортировку по алфавиту, а для чисел — от меньшего к большему. Это делает его простым инструментом для организации ваших данных всякий раз, когда вам нужны элементы в предсказуемом порядке.

challenge icon

Задание

Легко

Создайте программу, которая управляет системой меню ресторана, организуя блюда по различным категориям. Ваша программа должна:

  1. Прочитать строковый ввод, представляющий название ресторана
  2. Прочитать несколько строковых вводов, представляющих названия блюд (ввод закончится, когда вы получите пустую строку)
  3. Использовать метод sort() для упорядочивания блюд в алфавитном порядке
  4. Вывести организованное меню в точном формате, показанном ниже

Например, если название ресторана — "Bella Vista", а блюда — "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", ваша программа должна вывести:

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

Если название ресторана — "Quick Bites", а блюда — "Burger", "Pizza", "Sandwich", ваша программа должна вывести:

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

Если название ресторана — "Cafe Corner" и предоставлено только одно блюдо "Coffee", ваша программа должна вывести:

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

Ваша программа должна использовать метод sort() для алфавитной сортировки блюд. Помните, что sort() изменяет исходный список на месте, поэтому вам нужно будет создать копию исходного списка перед сортировкой, если вы хотите отобразить как оригинальную, так и отсортированную версии.

Шпаргалка

Метод sort() упорядочивает элементы списка по возрастанию и изменяет исходный список напрямую:

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]

Для строк sort() упорядочивает элементы по алфавиту. Для чисел он сортирует от меньшего к большему. Поскольку sort() изменяет исходный список на месте, сначала создайте копию, если вам нужно сохранить исходный порядок.

Попробуйте сами

import 'dart:io';

void main() {
  // Прочитать название ресторана
  String? restaurantName = stdin.readLineSync();
  
  // Читать названия блюд до пустой строки
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: Напишите свой код ниже
  // Создать копию исходного списка и отсортировать ее
  // Рассчитать общее количество блюд
  // Вывести результат в требуемом формате
  
  // Вывод результатов
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком