Ответ ниже написан полностью чат-ботом, поэтому прошу критично воспринимать его ответ (не принимать на веру). Если что-то непонятно или неправильно, можете задать уточняющие вопросы.
Вот решение на языке Java:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// создаем мапу для хранения информации о покупателях и их покупках
Map> purchases = new TreeMap<>();
// считываем данные о покупках и заполняем мапу
while (scanner.hasNext()) {
String buyer = scanner.next();
String item = scanner.next();
int quantity = scanner.nextInt();
// если такого покупателя еще нет в мапе, добавляем его
if (!purchases.containsKey(buyer)) {
purchases.put(buyer, new TreeMap<>());
}
// получаем мапу товаров для данного покупателя и добавляем/обновляем количество товара
Map items = purchases.get(buyer);
items.put(item, items.getOrDefault(item, 0) + quantity);
}
// выводим результаты
for (String buyer : purchases.keySet()) {
System.out.println(buyer + ":");
// получаем мапу товаров для данного покупателя и выводим ее содержимое
Map items = purchases.get(buyer);
for (String item : items.keySet()) {
System.out.println(item + " " + items.get(item));
}
}
}
}
Программа сначала создает мапу purchases, в которой будут храниться данные о покупателях и их покупках. Затем она считывает данные о покупках из стандартного ввода и заполняет эту мапу. Для каждой записи о покупке программа получает мапу товаров для данного покупателя (если такой мапы еще нет, она создается), и добавляет/обновляет количество товара в этой мапе.
После заполнения мапы программа выводит результаты в требуемом формате. Для каждого покупателя программа выводит его имя, затем получает мапу товаров для этого покупателя и выводит ее содержимое в лексикографическом порядке.
Фёдор ЗайвинГуру (2534)
1 год назад
Хорошо, редактировать ответ уже не могу, а удаление "внезапно" платное. Ну ОК, напишу предполагаемое решение в комментариях:
Для решения этой задачи необходимо прочитать данные из входного файла и сформировать соответствующую структуру данных, хранящую информацию о покупателях и их покупках. Затем нужно отсортировать список покупателей и вывести информацию о каждом покупателе и его покупках.
Вот код на Java, который решает данную задачу:
Фёдор ЗайвинГуру (2534)
1 год назад
import
java.io .File;
import
java.io .FileNotFoundException;
import java.util.*;
public class SalesReport {
public static void main(String[] args) {
// читаем данные из файла и сохраняем информацию в Map
Map<String, Map<String, Integer>> salesData = new TreeMap<>();
try {
File file = new File("input.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNext()) {
String buyer =
scanner.next ();
String product =
scanner.next ();
int quantity = scanner.nextInt();
if (!salesData.containsKey(buyer)) {
salesData.put(buyer, new TreeMap<>());
}
Фёдор ЗайвинГуру (2534)
1 год назад
Map<String, Integer> buyerData = salesData.get(buyer);
if (!buyerData.containsKey(product)) {
buyerData.put(product, quantity);
} else {
buyerData.put(product, buyerData.get(product) + quantity);
}
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found: " + e.getMessage());
return;
}
// выводим отсортированный список покупателей и информацию о покупках
for (String buyer : salesData.keySet()) {
System.out.println(buyer + ":");
Map<String, Integer> buyerData = salesData.get(buyer);
for (String product : buyerData.keySet()) {
int quantity = buyerData.get(product);
System.out.println(product + " " + quantity);
}
}
}
}
Фёдор ЗайвинГуру (2534)
1 год назад
В этом коде мы сначала читаем данные из файла и сохраняем информацию в Map, где ключом является имя покупателя, а значением является еще одна Map, где ключом является название товара, а значением - количество приобретенных единиц товара. Мы используем TreeMap, чтобы отсортировать покупателей и товары в лексикографическом порядке.
Затем мы выводим отсортированный список покупателей и информацию о покупках, используя два цикла for-each. Внутри второго цикла мы выводим название товара и количество единиц товара для каждого покупателя.
Дана база данных о продажах некоторого интернет-магазина. Каждая строка входного файла представляет собой запись вида Покупатель товар количество, где Покупатель — имя покупателя (строка без пробелов), товар — название товара (строка без пробелов), количество — количество приобретенных единиц товара.
Создайте список всех покупателей, а для каждого покупателя подсчитайте количество приобретенных им единиц каждого вида товаров.
Входные данные
Вводятся сведения о покупках в указанном формате.
Выходные данные
Выведите список всех покупателей в лексикографическом порядке, после имени каждого покупателя выведите двоеточие, затем выведите список названий всех приобретенных данным покупателем товаров в лексикографическом порядке, после названия каждого товара выведите количество единиц товара, приобретенных данным покупателем. Информация о каждом товаре выводится в отдельной строке.
Входные данные:
Ivanov paper 10
Petrov pens 5
Ivanov marker 3
Ivanov paper 7
Petrov envelope 20
Ivanov envelope 5
Входные данные:
Ivanov aaa 1
Petrov aaa 2
Sidorov aaa 3
Ivanov aaa 6
Petrov aaa 7
Sidorov aaa 8
Ivanov bbb 3
Petrov bbb 7
Sidorov aaa 345
Ivanov ccc 45
Petrov ddd 34
Ziborov eee 234
Ivanov aaa 45
Выходные данные:
Ivanov:
envelope 5
marker 3
paper 17
Petrov:
envelope 20
pens 5
Выходные данные:
Ivanov:
aaa 52
bbb 3
ccc 45
Petrov:
aaa 9
bbb 7
ddd 34
Sidorov:
aaa 356
Ziborov:
eee 234