Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BublickEnemy
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 15
#1

Возврат значения С++ - C++

17.02.2013, 11:15. Просмотров 718. Ответов 4
Метки нет (Все метки)

Hi people!
Вот такое задание:
1) Реализовать заданную динамическую структуру данных, с которой можно работать через перегруженные операции.
2) Для демонстрации работы программы необходимо реализовать меню, позволяющее вызывать операции реализованной структуры данных. На экране должна отображаться вся последовательность введенных элементов, над которыми производятся действия.

Создайте класс, реализующий двунаправленную очередь. В интерфейс класса должны входить перегруженные операции:
1) добавить элемент в конец очереди (+);
2) добавить элемент в начало очереди (<<);
3) извлечь элемент из начала очереди (>>);
4) извлечь элемент из конца очереди (-).

Имеется код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <Windows.h>
using namespace std;
class Element{
    int data;
    Element *next,*beg, *end, *prev,*p;
    public:
    int create_list(int a);
    Element& operator +(int a);
    Element& operator <<(int a);
    Element& operator >>(int a);
    Element& operator -(int a);
    int show_all();
};
Element El;
 
int Element::create_list(int a){
p = new Element;
p->data = a;
p->next = NULL;
p->prev = NULL;
beg=p;
end=p;
}
 
Element& Element::operator +(int a){
Element *q = new Element;
q->data=a;
q->next= NULL;
q->prev=end;
end->next=q;
end=q;
}
 
Element& Element::operator <<(int a){
Element *q = new Element;
q->data=a;
q->prev= NULL;
q->next=beg;
beg->prev=q;
beg=q;
}
 
Element& Element::operator -(int a){
if (beg==end) {beg= NULL; end= NULL;}
else{
Element *k=end;
k=k->prev;
k->next= NULL;
end=k;
}
}
 
Element& Element::operator >>(int k){
if (beg==end) {beg= NULL; end= NULL;}
else{
Element *k=beg;
k=k->next;
k->prev= NULL;
beg=k;
}
}
 
int Element::show_all(){
p=beg;
if (p==NULL) {
return 0;
}
else{
cout<<p->data<<" ";
while (p->next!=NULL){
    p=p->next;
    cout<<p->data<<" ";
}
cout<<endl;
}
}
 
 
 
int main(){
int a;
int i=0;
int q=1;
while (q!=0){
        system("cls");
    El.show_all();
    cout<<"1.+"<<endl;
    cout<<"2.<<"<<endl;
    cout<<"3.>>"<<endl;
    cout<<"4.-"<<endl;
    cout<<"0.Exit"<<endl;
    cin>>q;
    switch(q)
        {   case 1:{
                if (i==0){cout<<"Enter element"<<endl;
                                 cin>>a; El.create_list(a); i=1;}
                                 else{cout<<"Enter element"<<endl;cin>>a; El+a;i++;}
                                 break; }
            case 2:{if (i==0){cout<<"Enter 1st element"<<endl;
                                 cin>>a; El.create_list(a); i=1;}
                                 else{cout<<"Enter element"<<endl;cin>>a; El<<a;i++;}
                                 break; }
            case 3:{if (i==0){cout<<"No data"<<endl;getch();}
                                else {El>>0;i--;}break; }
            case 4:{if (i==0){cout<<"No data"<<endl;getch();}
                                else {El-0;i--;}break;  }
        }
}
}
Выдает ошибки:
visual studio 2008\projects\5_6\5_6\5_6.cpp(26) : error C4716: Element::create_list: должна возвращать значение
visual studio 2008\projects\5_6\5_6\5_6.cpp(35) : error C4716: Element::operator+: должна возвращать значение
visual studio 2008\projects\5_6\5_6\5_6.cpp(44) : error C4716: Element::operator<<: должна возвращать значение
visual studio 2008\projects\5_6\5_6\5_6.cpp(54) : error C4716: Element::operator-: должна возвращать значение
visual studio 2008\projects\5_6\5_6\5_6.cpp(64) : error C4716: Element::operator>>: должна возвращать значение

Прошу помощи, как исправить проблему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 11:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возврат значения С++ (C++):

Повторный возврат рандомного значения ,без изменения значения - C++
Добрый день. Пишу простую консольную игру Кости. Есть 4-е функции прорисовки костей (2-е на кости игрока и 2-е на кости ПК). Каждая...

Возврат значения по ссылке - C++
Долго гуглил, но что-то так и не понял. Почему слева от знака = может использоваться только функция, возвращающая ссылку?

Возврат значения из функции - C++
Добрый вечер. Вопрос следующий , как возвратить из функции create последнее значение ЛС , чтоб в дальнейшем использовать в main. ...

Возврат значения функции - C++
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в...

Возврат значения из operator= - C++
Товарищи идет ли разрушение пир такой вот штуке, вызывается ли тут деструктор? Тексты надо переписывать в сообщение!

Возврат значения из полиморфной функции - C++
Доброго времени суток всем. Ребят не знаю как правильно сформулировать свой вопрос. Суть вот в чем: В базовом классе Cell определена...

4
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.02.2013, 13:18 #2
Цитата Сообщение от BublickEnemy Посмотреть сообщение
Выдает ошибки:
Странно. А код сами писали?
1
Karuselia
24 / 10 / 1
Регистрация: 21.05.2012
Сообщений: 37
17.02.2013, 13:23 #3
А можно глупый вопрос?
Почему нет return? Указано, что функция create_list возвращает int, функция Element& operator возвращает указатель на элемент, а return в функциях нету...
1
zss
Модератор
Эксперт С++
6517 / 6079 / 2001
Регистрация: 18.12.2011
Сообщений: 15,808
Завершенные тесты: 1
17.02.2013, 14:08 #4
Наверное, имелось ввиду что-то вроде этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <Windows.h>
using namespace std;
class Element
{
    int data;
    Element *next,*beg, *end, *prev,*p;
public:
    void create_list(int a);
    Element& operator +(int a);
    Element& operator <<(int a);
    Element& operator >>(Element* k);
    Element& operator -(int a);
    void show_all();
};
Element El;
 
void Element::create_list(int a){
p = new Element;
p->data = a;
p->next = NULL;
p->prev = NULL;
beg=p;
end=p;
}
 
Element& Element::operator +(int a)
{
    Element *q = new Element;
    q->data=a;
    q->next= NULL;
    q->prev=end;
    end->next=q;
    end=q;
    return *q;
}
 
Element& Element::operator <<(int a)
{
    Element *q = new Element;
    q->data=a;
    q->prev= NULL;
    q->next=beg;
    beg->prev=q;
    beg=q;
    return *q;
}
 
Element& Element::operator -(int a)
{
    Element *k=NULL;
    if (beg==end) {beg= NULL; end= NULL;}
    else
    {
        k=end;
        k=k->prev;
        k->next= NULL;
        end=k;
    }
    return *k;
}
 
Element& Element::operator >>(Element* k)
{
    if (beg==end) {beg= NULL; end= NULL;}
    else
    {
        k=beg;
        k=k->next;
        k->prev= NULL;
        beg=k;
    }
    return *k;
}
 
void Element::show_all()
{
    p=beg;
    if (p!=NULL)
    {
        cout<<p->data<<" ";
        while (p->next!=NULL)
        {
            p=p->next;
            cout<<p->data<<" ";
        }
        cout<<endl;
    }
}
 
 
 
int main()
{
int a;
int i=0;
int q=1;
while (q!=0){
        system("cls");
    El.show_all();
    cout<<"1.+"<<endl;
    cout<<"2.<<"<<endl;
    cout<<"3.>>"<<endl;
    cout<<"4.-"<<endl;
    cout<<"0.Exit"<<endl;
    cin>>q;
    switch(q)
        {   case 1:{
                if (i==0){cout<<"Enter element"<<endl;
                                 cin>>a; El.create_list(a); i=1;}
                                 else{cout<<"Enter element"<<endl;cin>>a; El+a;i++;}
                                 break; }
            case 2:{if (i==0){cout<<"Enter 1st element"<<endl;
                                 cin>>a; El.create_list(a); i=1;}
                                 else{cout<<"Enter element"<<endl;cin>>a; El<<a;i++;}
                                 break; }
            case 3:{if (i==0){cout<<"No data"<<endl;getch();}
                                else {El>>0;i--;}break; }
            case 4:{if (i==0){cout<<"No data"<<endl;getch();}
                                else {El-0;i--;}break;  }
        }
}
}
Однако, обратите особенное внимание на operator>>
В коде написано что-то совсем не аналогичное operator<<
1
BublickEnemy
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 15
17.02.2013, 15:36  [ТС] #5
Цитата Сообщение от go Посмотреть сообщение
Странно. А код сами писали?
переделывал похожий код


Цитата Сообщение от Karuselia Посмотреть сообщение
А можно глупый вопрос?
Почему нет return? Указано, что функция create_list возвращает int, функция Element& operator возвращает указатель на элемент, а return в функциях нету...
я return прописывал, только не то возвращал, не указатель на элемент


Цитата Сообщение от zss Посмотреть сообщение
Наверное, имелось ввиду что-то вроде этого
да, спасибо


Цитата Сообщение от zss Посмотреть сообщение
Однако, обратите особенное внимание на operator>>
В коде написано что-то совсем не аналогичное operator<<
окей
0
17.02.2013, 15:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 15:36
Привет! Вот еще темы с ответами:

Возврат значения объектом класса - C++
Может ли экземпляр класса возвращать значение своего поля без обращения к полю напрямую например class MyClass { int val = 5;...

Возврат значения массива в void - C++
Помогите плз, не могу сделать вывод значения отсортированного массива из функции в void, прога из массива слов ищет слова с нечётным...

Неправильный возврат значения функции - C++
При компиляции если значение меньше или равно 100 программа прекращает работу а если значение выше 100 то работает нормально. ...

Возврат значения нажатой клавиши - C++
Подскажите ассемблеровскую вставку для С++. Чтобы возвращалось значение нажатой клавиши


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru