#c
Вопрос:
- Напишите классы связанных списков(один класс для узла и другой класс для списка), в которых хранятся элементы транзакции.
- Проверьте классы, распечатав элементы в связанном списке
- Покажите общую стоимость транзакции.
- Удалите элемент из связанного списка и покажите новый результат (общая цена транзакции).
Результат должен выглядеть следующим образом: Цена товаров BC
10 Пагода Гнут 110 г 3,49
11 Крекер с кремом Хуп Сенг 4,19
12 Йит Пох 2n1 Копи-о 7,28
13 Зелайф СН и Семена 5,24
14 Гэтсби С/ФО Влажный и твердый 16,99
15 ГБ Ж/Г И/Вмещает 150 г 6,49
Итого (включая GST) 43,68
#include lt;iostreamgt; using namespace std; // Node class class Node { public: double data; string item; Node* next; Node() {}; void setData(double aData) {data = aData; }; void setString(string aItem) {item = aItem;}; void setNext(Node* aNext) {next = aNext; }; double Data() {return data; }; string String() {return item;}; Node* Next() {return next; }; }; // List class class List { Node *head; public: List() { head = NULL; }; void addNode(double data, string item); void total(); void print(Node **head); }; //add a node to the list at tail void List::addNode(double n, string m) { Node *newNode = new Node(); newNode-gt;setData(n); newNode-gt;setString(m); newNode-gt;setNext(NULL); // Create a temp pointer Node *tmp = head; if ( tmp != NULL ) { // Nodes already present in the list while ( tmp-gt;Next() != NULL ) { tmp = tmp-gt;Next(); } // Point the last node to the new node tmp-gt;setNext(newNode); } else { // First node in the list head = newNode; } } void print(Node **head){ Node* a = *head; cout lt;lt; "========================================" lt;lt;endl; cout lt;lt; "BC Items Price" lt;lt;endl; cout lt;lt; "========================================" lt;lt;endl; while(a){ cout lt;lt; a -gt;data lt;lt; "tt"; cout lt;lt; a-gt;item lt;lt; endl; a = a-gt;next; } cout lt;lt; "========================================" lt;lt;endl; } void List::total(){ Node* cur = head; double sum=0; cout lt;lt; "Total (GST Incl.) "; while (cur){ sum = sum cur-gt;data; cur = cur-gt;next; } cout lt;lt; sum; cout lt;lt; "========================================" lt;lt;endl; } int main() { List list; list.addNode(3.49, "10 Pagoda Gnut 110g"); list.addNode(4.19, "11 Hup Seng Cream Cracker"); list.addNode(7.28, "12 Yit Poh 2n1 Kopi-O"); list.addNode(5.24, "13 Zoelife SN amp; Seed"); list.addNode(16.99, "14 Gatsby S/FO Wetamp;Hard"); list.addNode(6.49, "15 GB W/G U/Hold 150g"); list.print(amp;head); list.total(); return 0; }
когда я пытаюсь скомпилировать, ошибка выглядит так
[Ошибка] «голова» не была объявлена в этой области
Комментарии:
1. Пожалуйста, повторите свой вопрос и добавьте детали, чтобы прояснить проблему. Вопросы типа «это правильно?» являются бессмысленными и легко проверяемыми вами. Такие утверждения, как «не уверен в этом», не описывают проблему или не задают вопрос. И заключительная часть «показывает ошибку» — какую ошибку? Вы не описали результат, который вы получаете.
2. Так жаль. Я уже отредактировал некоторые части. Надеюсь, теперь это поможет.
Ответ №1:
Какие ошибки вы получаете, пожалуйста, предоставьте более подробную информацию. С первого взгляда:
Главный не знает головы
list.print(amp;head);
Main не знает данных
list.total(data);
Кроме того, вам не нужна эта функция для приема параметров, если ваша цель-просто распечатать итоговую сумму.
список недействительных::всего();
Для функции печати: вы должны принять List
в качестве параметра нет node
, потому что вы не можете получить доступ к head
— его члену списка.
печать пустоты(список и список const);
Комментарии:
1. Я попробовал список пустоты::total(); и это работает.
2. [Ошибка] «голова» не была объявлена в этой области
3. Как я и писал… Посмотрите на мое объяснение о вашей функции печати
4. Извини за это. Я сделал то же самое со списком.печать, и теперь он работает. Спасибо.