Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

База данных товары

Апфыс Екыфс Ученик (88), на голосовании 1 год назад
Продажи
Дана база данных о продажах некоторого интернет-магазина. Каждая строка входного файла представляет собой запись вида Покупатель товар количество, где Покупатель — имя покупателя (строка без пробелов), товар — название товара (строка без пробелов), количество — количество приобретенных единиц товара.

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

Входные данные
Вводятся сведения о покупках в указанном формате.

Выходные данные
Выведите список всех покупателей в лексикографическом порядке, после имени каждого покупателя выведите двоеточие, затем выведите список названий всех приобретенных данным покупателем товаров в лексикографическом порядке, после названия каждого товара выведите количество единиц товара, приобретенных данным покупателем. Информация о каждом товаре выводится в отдельной строке.


Входные данные:
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
Голосование за лучший ответ
Фёдор Зайвин Гуру (2534) 1 год назад
Ответ ниже написан полностью чат-ботом, поэтому прошу критично воспринимать его ответ (не принимать на веру). Если что-то непонятно или неправильно, можете задать уточняющие вопросы.

Вот решение на языке 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, в которой будут храниться данные о покупателях и их покупках. Затем она считывает данные о покупках из стандартного ввода и заполняет эту мапу. Для каждой записи о покупке программа получает мапу товаров для данного покупателя (если такой мапы еще нет, она создается), и добавляет/обновляет количество товара в этой мапе.

После заполнения мапы программа выводит результаты в требуемом формате. Для каждого покупателя программа выводит его имя, затем получает мапу товаров для этого покупателя и выводит ее содержимое в лексикографическом порядке.
Зеленая бякаПросветленный (41308) 1 год назад
ты чат боту хоть сказал бы, что на java надо а не на питоне
Фёдор Зайвин Гуру (2534) Зеленая бяка, ты походу по диагонали читал :) Я во втором предложении написал что ошибся, и уже готовлю ответ на яве, что в принципе уже и сделал. Единственное, она у меня не прошла проверку на онлайн компиляторе, т.к. при выполнении программы, она не видит конец ввода данных...
Фёдор ЗайвинГуру (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. Внутри второго цикла мы выводим название товара и количество единиц товара для каждого покупателя.
Похожие вопросы