Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
BublickEnemy
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 15
17.02.2013, 11:15     Возврат значения С++ #1
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>>: должна возвращать значение

Прошу помощи, как исправить проблему
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.02.2013, 13:18     Возврат значения С++ #2
Цитата Сообщение от BublickEnemy Посмотреть сообщение
Выдает ошибки:
Странно. А код сами писали?
Karuselia
 Аватар для Karuselia
24 / 10 / 1
Регистрация: 21.05.2012
Сообщений: 37
17.02.2013, 13:23     Возврат значения С++ #3
А можно глупый вопрос?
Почему нет return? Указано, что функция create_list возвращает int, функция Element& operator возвращает указатель на элемент, а return в функциях нету...
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 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<<
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<<
окей
Yandex
Объявления
17.02.2013, 15:36     Возврат значения С++
Ответ Создать тему
Опции темы

Текущее время: 09:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru