Нужно отсортировать список так, чтобы
hammer 2 nail 100 saw 3 saw 4 hammer 7 nail 1000 nail 250
Нужно отсортировать список так, чтобы значения, соответствующие одному предмету, складывались, и напечатать получившийся список вместе с итоговым значением:
hammer 9 nail 1350 saw 7 ------------------- total 1366
Вначале напишем функцию, которая читает входные строки и заносит предметы с их количеством в таблицу. Ключом в этой таблице является первое слово строки:
template<class K, class V> void readlines(Map<K,V>&key) { K word; while (cin >> word) { V val = 0; if (cin >> val) key[word] +=val; else return; } }
Теперь можно написать простую программу, вызывающую функцию readlines() и печатающую получившуюся таблицу:
main() { Map<String,int> tbl("nil",0); readlines(tbl);
int total = 0; for (Mapiter<String,int> p(tbl); p; ++p) { int val = p.value(); total +=val; cout << p.key() << '\t' << val << '\n'; }
cout << "--------------------\n"; cout << "total\t" << total << '\n'; }
Содержание Назад Вперед