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

5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню - C++

Восстановить пароль Регистрация
 
DRUNY195
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 247
29.05.2013, 18:40     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #1
Реализовать представление очереди. Работу со структурами организовать в виде текстового меню.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 18:40     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню
Посмотрите здесь:

Организовать работу с файлом при помощи меню C++
Реализовать представление очереди. C++
Очереди. Каким образом считать две очереди из одного текстового файла? C++
Представление кода в виде функции C++
C++ Реализовать представление стека. Работу со структурами организовать в виде текстового меню.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DRUNY195
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 247
03.06.2013, 21:12  [ТС]     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #2
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
#include <conio.h>
#include <iostream>
#include <locale.h>
 
struct QUEUE //структура очередь
{
    int info;
    QUEUE *next;
}
 
int EmptyQ(QUEUE *first) //проверка пустоты очереди
{
    if ((first)==NULL)
    return 1;
    else
    return 0;
}
 
void AddQ(QUEUE *last) //добавление элемента
{
    QUEUE *tmp = new QUEUE;
    tmp->info=rand()%100;
    tmp->next=NULL;
    (last)->next=tmp;
    last=tmp;
}
 
void DelQ(QUEUE *first, QUEUE *last) //удаление из очереди
{
    QUEUE *tmp=first->next;
    if(first->next==NULL)
    last=first;
    delete tmp;
}
 
void ShowQ(QUEUE *first) //просмотр очереди
{
    QUEUE *tmp=first->next;
    while(tmp!=NULL)
    {
        printf("%d ", tmp->info);
        tmp=tmp->next;
    }
}
 
void ClearQ(QUEUE *first, QUEUE *last) //очистка очереди
{
    QUEUE *tmp;
    while(first->next!=NULL)
    {
        tmp=first->next;
        first->next = first->tmp;
        delete tmp;
    }
    last=first;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    QUEUE *first, *last;
    int n;
    char d;
    do
    {
        printf("1. Добавление элементов в конец очереди \n");
        printf("2. Удаление элемента из начала очереди \n");
        printf("3. Вывод элементов \n");
        printf("0. Выход \n");
        printf("Выбранное действие: ");
        scanf("%s", &d);
        switch(d)
        {
            case '1':
            AddQ(&last);
            printf("\nЭлемент добавлен в конец очереди \n");
            break;
 
            case '2':
            if (EmptyQ(first)==1)
            printf("\nОчередь пустая \n");
            else
            {
                DelQ(first,&last);
                printf("\nЭлемент удален из очереди \n");
            }
            break;
 
            case '3':
            if (EmptyQ(first)==1)
            printf("\nОчередь пустая \n");
            else
            {
                printf("\nЭлементы очереди: ");
                ShowQ(first);
                printf("\n");
            }
            break;
 
            case '0':
            ClearQ(first,&last);
            break;
            default: printf("\nОшибка!\n"); break;
        }while(d!='0');
    _getch();
}
Реализация очереди
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
03.06.2013, 21:15     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #3
Цитата Сообщение от DRUNY195 Посмотреть сообщение
посмотрите что тут не так
в чем выражается это "не так"?
DRUNY195
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 247
03.06.2013, 21:16  [ТС]     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #4
Вот выдает ошибки:
Код
Ошибка	10	error C1075: конец файла обнаружен ранее, чем левая фигурная скобка "{" в "c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp(60)"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	108	1	Лаба 5(очередь)
Ошибка	4	error C2039: tmp: не является членом "QUEUE"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	53	1	Лаба 5(очередь)
Ошибка	2	error C2440: return: невозможно преобразовать "int" в "QUEUE"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	15	1	Лаба 5(очередь)
Ошибка	3	error C2440: return: невозможно преобразовать "int" в "QUEUE"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	17	1	Лаба 5(очередь)
Ошибка	1	error C2628: недопустимый "QUEUE" с последующим "int" (возможно, отсутствует ";")	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	12	1	Лаба 5(очередь)
Ошибка	5	error C2664: AddQ: невозможно преобразовать параметр 1 из "QUEUE **" в "QUEUE *"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	76	1	Лаба 5(очередь)
Ошибка	9	error C2664: ClearQ: невозможно преобразовать параметр 2 из "QUEUE **" в "QUEUE *"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	102	1	Лаба 5(очередь)
Ошибка	7	error C2664: DelQ: невозможно преобразовать параметр 2 из "QUEUE **" в "QUEUE *"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	85	1	Лаба 5(очередь)
Ошибка	6	error C2676: бинарный "==": "QUEUE" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	81	1	Лаба 5(очередь)
Ошибка	8	error C2676: бинарный "==": "QUEUE" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	91	1	Лаба 5(очередь)
	11	IntelliSense: class "QUEUE" не содержит члена "tmp"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	53	30	Лаба 5(очередь)
	12	IntelliSense: аргумент типа "QUEUE **" несовместим с параметром типа "QUEUE *"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	76	18	Лаба 5(очередь)
	13	IntelliSense: аргумент типа "QUEUE **" несовместим с параметром типа "QUEUE *"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	85	28	Лаба 5(очередь)
	14	IntelliSense: аргумент типа "QUEUE **" несовместим с параметром типа "QUEUE *"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	102	26	Лаба 5(очередь)
	15	IntelliSense: требуется "while"	c:\users\андрей\documents\visual studio 2010\projects\лаба 5(очередь)\лаба 5(очередь)\123.cpp	107	1	Лаба 5(очередь)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
03.06.2013, 21:25     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #5
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
#include <conio.h>
#include <iostream>
#include <locale.h>
 
struct QUEUE //структура очередь
{
    int info;
    QUEUE *next;
};//Точка с запятой после структур и классов
 
int EmptyQ(QUEUE *first) //проверка пустоты очереди
{
    if ((first)==NULL)
    return 1;
    else
    return 0;
}
 
void AddQ(QUEUE ** last) //добавление элемента (ПЕРЕДЕЛАЛ ПОД ДВОЙНОЙ УКАЗАТЕЛЬ)
{
    QUEUE *tmp = new QUEUE;
    tmp->info=rand()%100;
    tmp->next=NULL;
    (*last)->next=tmp;
    *last=tmp;
}
 
void DelQ(QUEUE *first, QUEUE ** last) //удаление из очереди (ПЕРЕДЕЛАЛ ПОД ДВОЙНОЙ УКАЗАТЕЛЬ)
{
    QUEUE *tmp=first->next;
    if(first->next==NULL)
    *last=first;
    delete tmp;
}
 
void ShowQ(QUEUE *first) //просмотр очереди
{
    QUEUE *tmp=first->next;
    while(tmp!=NULL)
    {
        printf("%d ", tmp->info);
        tmp=tmp->next;
    }
}
 
void ClearQ(QUEUE *first, QUEUE ** last) //очистка очереди (ПЕРЕДЕЛАЛ ПОД ДВОЙНОЙ УКАЗАТЕЛЬ)
{
    QUEUE *tmp;
    while(first->next!=NULL)
    {
        tmp=first->next;
        first->next = tmp;//first->tmp;//В структуре QUEUE только два члена данных: info и next. Никакого tmp нет. Возможно вы имели ввиду локальную переменную tmp
        delete tmp;
    }
   * last=first;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    QUEUE *first, *last;
    int n;
    char d;
    do
    {
        printf("1. Добавление элементов в конец очереди \n");
        printf("2. Удаление элемента из начала очереди \n");
        printf("3. Вывод элементов \n");
        printf("0. Выход \n");
        printf("Выбранное действие: ");
        scanf("%s", &d);
        switch(d)
        {
            case '1':
            AddQ(&last);
            printf("\nЭлемент добавлен в конец очереди \n");
            break;
 
            case '2':
            if (EmptyQ(first)==1)
            printf("\nОчередь пустая \n");
            else
            {
                DelQ(first,&last);
                printf("\nЭлемент удален из очереди \n");
            }
            break;
 
            case '3':
            if (EmptyQ(first)==1)
            printf("\nОчередь пустая \n");
            else
            {
                printf("\nЭлементы очереди: ");
                ShowQ(first);
                printf("\n");
            }
            break;
 
            case '0':
            ClearQ(first,&last);
            break;
            default: printf("\nОшибка!\n"); break;
          }//switch СКОБКУ ЗАБЫЛИ
       }while(d!='0');
    _getch();
}
Ошибки компиляции поправил, НО у Вас last нигде не инициализируется, поэтому падение программы
DRUNY195
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 247
03.06.2013, 21:56  [ТС]     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #6
АААА, СПАСИБО БОЛЬШОЕ, чет забыл поставить двойной указатель)))

Добавлено через 11 минут
Что-то тут не так, теперь во время того, как я выбираю какое нибудь значение меня выносит из проги

Добавлено через 40 секунд
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
#include <conio.h>
#include <iostream>
#include <locale.h>
 using namespace std;
struct QUEUE //структура очередь
{
    int info;
    QUEUE *next;
};
 
int EmptyQ(QUEUE *first) //проверка пустоты очереди
{
    if ((first)==NULL)
    return 1;
    else
    return 0;
}
 
void AddQ(QUEUE ** last) //добавление элемента 
{
    QUEUE *tmp = new QUEUE;
    tmp->info=rand()%100;
    tmp->next=NULL;
    (*last)->next=tmp;
    *last=tmp;
}
 
void DelQ(QUEUE *first, QUEUE ** last) //удаление из очереди 
{
    QUEUE *tmp=first->next;
    if(first->next==NULL)
    *last=first;
    delete tmp;
}
 
void ShowQ(QUEUE *first) //просмотр очереди
{
    QUEUE *tmp=first->next;
    while(tmp!=NULL)
    {
        cin>>tmp->info;
        tmp=tmp->next;
    }
}
 
void ClearQ(QUEUE *first, QUEUE ** last) //очистка очереди 
{
    QUEUE *tmp;
    while(first->next!=NULL)
    {
        tmp=first->next;
        first->next = tmp;
        delete tmp;
    }
   * last=first;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    QUEUE *first, *last;
    int n;
    char d;
    do
    {
        cout<<"1. Добавление элементов в конец очереди \n";
        cout<<"2. Удаление элемента из начала очереди \n";
        cout<<"3. Вывод элементов \n";
        cout<<"0. Выход \n";
        cout<<"Выбранное действие: ";
        cin>> d;
        switch(d)
        {
            case '1':
            AddQ(&last);
            cout<<"\nЭлемент добавлен в конец очереди \n";
            break;
 
            case '2':
            if (EmptyQ(first)==1)
            cout<<"\nОчередь пустая \n";
            else
            {
                DelQ(first,&last);
                cout<<"\nЭлемент удален из очереди \n";
            }
            break;
 
            case '3':
            if (EmptyQ(first)==1)
            cout<<"\nОчередь пустая \n";
            else
            {
               cout<<"\nЭлементы очереди: ";
                ShowQ(first);
                cout<<"\n";
            }
            break;
 
            case '0':
            ClearQ(first,&last);
            break;
            default: cout<<"\nОшибка!\n"; break;
          }
       }while(d!='0');
    _getch();
}
Вот если че под с++

Добавлено через 16 минут
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
#include <conio.h>
#include <iostream>
#include <locale.h>
 using namespace std;
struct QUEUE //структура очередь
{
    int info;
    QUEUE *next;
};
 
int EmptyQ(QUEUE *first) //проверка пустоты очереди
{
    if ((first)==NULL)
    return 1;
    else
    return 0;
}
 
void AddQ(QUEUE ** last) //добавление элемента 
{
    QUEUE *tmp = new QUEUE;
    tmp->info=rand()%100;
    tmp->next=NULL;
    (*last)->next=tmp;
    *last=tmp;
}
 
void DelQ(QUEUE *first, QUEUE ** last) //удаление из очереди 
{
    QUEUE *tmp=first->next;
    if(first->next==NULL)
    *last=first;
    delete tmp;
}
 
void ShowQ(QUEUE *first) //просмотр очереди
{
    QUEUE *tmp=first->next;
    while(tmp!=NULL)
    {
        cin>>tmp->info;
        tmp=tmp->next;
    }
}
 
void ClearQ(QUEUE *first, QUEUE ** last) //очистка очереди 
{
    QUEUE *tmp;
    while(first->next!=NULL)
    {
        tmp=first->next;
        first->next = tmp;
        delete tmp;
    }
   * last=first;
}
 
int main()
{
    setlocale(0, "rus");
    QUEUE *first, *last;
    int n;
    char d;
    do
    {
        cout<<"1. Добавление элементов в конец очереди \n"<<endl;
        cout<<"2. Удаление элемента из начала очереди \n"<<endl;
        cout<<"3. Вывод элементов \n"<<endl;
        cout<<"0. Выход \n"<<endl;
        cout<<"Выбранное действие: "<<endl;
        cin>> d;
        switch(d)
        {
            case 1:
            AddQ(&last);
            cout<<"\nЭлемент добавлен в конец очереди \n"<<endl;
            break;
 
            case 2:
            if (EmptyQ(first)==1)
            cout<<"\nОчередь пустая \n";
            else
            {
                DelQ(first,&last);
                cout<<"\nЭлемент удален из очереди \n"<<endl;
            }
            break;
 
            case 3:
            if (EmptyQ(first)==1)
            cout<<"\nОчередь пустая \n"<<endl;
            else
            {
               cout<<"\nЭлементы очереди: "<<endl;
                ShowQ(first);
                cout<<"\n";
            }
            break;
 
            case 0:
            ClearQ(first,&last);
            break;
            default: cout<<"\nОшибка!\n"<<endl; break;
          }
       }while(d!=0);
    _getch();
}
Вот кейсы изменил, при любом выборе выдает Ошибка!т.е кидает сразу на нулевой кейс, что не так?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
04.06.2013, 07:48     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #7
Цитата Сообщение от DRUNY195 Посмотреть сообщение
Что-то тут не так, теперь во время того, как я выбираю какое нибудь значение меня выносит из проги
вот
Цитата Сообщение от Croessmah Посмотреть сообщение
у Вас last нигде не инициализируется, поэтому падение программы
к first это тоже относится
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2014, 22:20     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню
Еще ссылки по теме:

C++ 5.1. Реализовать представление стека. Работу со структурами организовать в виде текстового меню
Реализовать класс MyQueue, позволяющий хранить данные любого типа в виде очереди C++
Представление числа в 16-ричном виде C++

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

Или воспользуйтесь поиском по форуму:
tyreu
Заблокирован
16.12.2014, 22:20     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню #8
Croessmah, я так и не понял, как определить first. Помогите, пожалуйста
Yandex
Объявления
16.12.2014, 22:20     5.2 Реализовать представление очереди. Работу со структурами организовать в виде текстового меню
Ответ Создать тему
Опции темы

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