![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| RobertEn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 29.3.2015 Репутация: нет Всего: нет |
...благодаря которой мы вводим количество элементов
Как это правильно сделать? Вообще у нас есть список, в котором мы делаем перезагрузку операций: + – объединить списки (list+list); -- – удалить элемент из начала (--list); = = – проверка на равенство. SPISOK.CPP ------------------------------------------------------------------------ #include <conio.h> #include <iostream.h> #include "SPISOK1.H" List::~List()//деструктор { while (Head!=0)//пока по адресу не пусто { element *temp=Head->Next;//временная переменная для хранения адреса следующего элемента delete Head;//освобождаем адрес, обозначающий начало Head=temp;//меняем адрес на следующий } } void List::Input(int N)//здесь должна быть функция добавления количества элементов, что тут написать? { }; void List::Input(int x)//функция добавления элементов в список { element *temp=new element;//при каждом вызове выделяется память temp->x=x;//записываем x в элемент структуры element temp->Next=Head; Head=temp; } void List::Print()//функция отображения списка на экране { element *temp=Head; while (temp!=0) { cout<<temp->x<<" "; temp=temp->Next; } } int List::operator == (const List &list2)//перегрузка операции присваивания { if (N!=list2.N)//сравниваем размеры списков объектов { cout<<endl<<"spisok 1 "<<N; cout<<endl<<"spisok 2 "<<list2.N; cout<<endl<<"V spiskah raznoe kolichestvo elementov"; return 0; } else { for (int i=0;i<N;i++) { if (x[i]!=list2.x[i]) { cout<<"Znacheniya spiskov ne ravni"; return 0; } } } return 1; } const List& List::operator=(const List &list2)//перегрузка оператора присваивания { delete [] x; N=list2.N; x=new int [N]; for (int i=0;i<N;i++) { x[i]=list2.x[i]; } return *this; } List& List::operator +(List &list2)//перегрузка оператора сложения списков { for (int i=0;i<N;i++) {x[i]=list2.x[i]+x[i];} return *this; } void List::operator--()//перегрузка оператора удаления элемента из списка { element *temp=Head,*r; int i=0; if (N==0) { Head=temp->Next; delete [] temp; /* return Head;*/ } while(temp) { if (i==N-1) { r=temp->Next; if® { temp->Next=r->Next; delete [] r; } else temp->Next=0; } temp=temp->Next; i++; } /*return Head; */ } -------------------------------------------------------------------------- SPISOK1.H -------------------------------------------------------------------------- #ifndef SPISOK1_H #define SPISOK1_H struct element { int x; element *Next; }; class List { int *x; int N; element *Head; public: List() {Head=0;} ~List(); void Input(int x); void Input(int N); void Print(); int List:perator == (const List &); const List& operator=(const List&); List& operator +(List &); void operator--(); }; #endif ------------------------------------------------------------------- SPISOK2.CPP ------------------------------------------------------------------- #include <conio.h> #include "SPISOK1.H" #include <iostream.h> void main() { int x,N; clrscr(); List lst; cout<<"N = ";cin>>N; Ist.Input(N); for (int i=0;i<N;i++) { cout<<i+1<<". x = "; cin>>x; lst.Input(x); } lst.Print(); List lst2; cout<<endl<<"N = ";cin>>N; Ist2.Input(N); for (i=0;i<N;i++) { cout<<i+1<<". x = "; cin>>x; lst2.Input(x); } lst2.Print(); if(lst==lst2) { cout<<endl<<"Spisok 1 raven spisku 2\n"; } else { lst=lst2; cout<<endl<<"Spisok 1 posle kopirovaniya: "; lst.Print(); } getch(); } Это сообщение отредактировал(а) RobertEn - 29.3.2015, 19:03 |
|||
|
||||
| rudolfninja |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
В цикле от 0 до N вызывать метод Input(int x); =) Что-то я, как обычно, не понял, что надо делать =) Вообще, если надо добавить сразу несколько элементов, то вызываешь в цикле от 0 до N вызывать метод Input(int x);, где х - какое-то значение по умолчанию. Например, 0. А можно вообще по-модному сделать: с переменным числом аргументов:
Использоваться это потом будет так:
После этого в список будет добавлено три новых элемента со значениями 3, 14 и 15 Это сообщение отредактировал(а) rudolfninja - 30.3.2015, 11:42 |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |