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

НЕправильно работает пара ф-ций - C++

Восстановить пароль Регистрация
 
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
23.03.2011, 22:58     НЕправильно работает пара ф-ций #1
сделал стэк, дэк и очередь, дэк не хочет добавлять, говорит, уже полный. мож я где лохонулся? помогите устранить ошибку
не пугайтесь большого быдлокода, пожалуйста
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
//очередь и дек в хед файле queve
Stack queve[SSize];
 
bool IsFullQ()
{
    if(head==SSize-1) return 1;
    return 0;
}
 
bool IsEmptyQ()
{
    if (head==0) return 1;
    return 0;
}
 
Stack pushQ(Stack queve[SSize])
{
    if(head==SSize-1) {cout<<"FULL"; Sleep(800);return queve[SSize];}
    else
        {
                    cout<<"Input Y`r string: ";
                    cin>>queve[head].s;
                    queve[head].n=strlen(queve[head].s);            
                    head++; 
                    return queve[SSize];
        }
}
 
void popQ(Stack queve[SSize])
{
    int i=0;
    if (head==0) {cout<<"EMPTY";Sleep(500);return;};                                
    system ("CLS");
    cout<<queve[0].n<<"  "<<queve[0].s;
    head--;
    while(i!=head)
        {
            queve[i]=queve[i+1];
            i++;
        }
    Sleep(1000);
    return;
}
//-------------------------------------------------------------------------
 
 
 
 
 
 
//-------------------------------------------------------------------
Stack deq[SSize];
 
bool IsFullD()
{
    if(righ==SSize-1) return 1;
    return 0;
}
 
bool IsEmptyD()
{
    if (righ==0) return 1;
    return 0;
}
Stack pushR(Stack deq[SSize])
{
    if(IsFullD) {cout<<"FULL"; Sleep(800);return deq[SSize];}
    else
        {
                    cout<<"Input Y`r string: ";
                    cin>>deq[righ].s;
                    deq[righ].n=strlen(deq[righ].s);
                    righ++; 
                    return deq[SSize];
        }
}
void popL(Stack deq[SSize])
{
    int i=0;
    if (righ==0) {cout<<"EMPTY";Sleep(500);return;};                                
    system ("CLS");
    cout<<deq[0].n<<"  "<<deq[0].s;
    righ--;
    while(i!=righ)
        {
            deq[i]=deq[i+1];
            i++;
        }
    Sleep(1000);
    return;
}
void popR(Stack deq[SSize])
{
    if (IsEmptyD) {cout<<"EMPTY";Sleep(500);return;};                               
    system ("CLS");
    cout<<deq[righ-1].n<<"  "<<deq[righ-1].s;
    righ--;
    Sleep(1000);
    return;
}
 
Stack pushL(Stack deq[SSize])
{
    if(IsFullD) {cout<<"FULL"; Sleep(800);return deq[SSize];}
    else
        {
                    int i=righ;
                    while(i)
                        {
                            deq[i]=deq[i-1];
                            i--;
                        }
                    cout<<"Input Y`r string: ";
                    cin>>deq[0].s;
                    deq[0].n=strlen(deq[0].s);
                    righ++; 
                    return deq[SSize];
        }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//head.h 
#include <iostream>
#include <Windows.h>
using namespace std;
 
const int MaxSize=36;
const int SSize=9;
int top=0;
int tail=0;
int head=0;
int righ=0;
 
struct Stack 
{
    int n;
    char s[MaxSize];
};
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
//исходный
#include "stdafx.h"
#include "c:\Users\Василий\documents\visual studio 2010\Projects\EVM2\Stak.h"
#include "C:\Users\Василий\Documents\Visual Studio 2010\Projects\EVM22\Queve.h"
#include <iostream>
using namespace std;
void main();
 
void deque_menu()
{
    {while(1)
    {
        system("CLS");
        cout<<"1. PushR\n2. PopR\n\n\n11.PushL\n12. PushR\n3. Is full?\n4. Is empty?\n5. Clear deque\n6. Return to main menu\n0. Exit";
        int sw;
        cin>>sw;
        switch(sw)
        {
            case 1:pushR(deq);break;
            case 2:popR(deq);break;
            case 11:pushL(deq);break;
            case 12:pushR(deq);break;
            case 3:{
                        if(righ=SSize-1) {cout<<"FULL"; Sleep(500);}
                        else{cout<<"NOT FULL"; Sleep(500);}
                   };break;
            case 4:{
                        if(IsEmptyD){cout<<"EMPTY";Sleep(500);}
                        else{cout<<"NOT EMPTY";Sleep(500);}
                   };break;
            case 5:righ=0;break;
            case 6:main();break;
            case 0:return;break;
        }
    }
    return;
}
 
 
}
 
void stak_menu()
{while(1)
    {
        system("CLS");
        cout<<"1. Push\n2. Pop\n3. Is full?\n4. Is empty?\n5. Clear stak\n6. Return to main menu\n0.";
        int sw;
        cin>>sw;
        switch(sw)
        {
            case 1:pushS(stak);break;
            case 2:popS(stak);break;
            case 3:{
                        if(top==SSize) {cout<<"FULL"; Sleep(500);}
                        else{cout<<"NOT FULL"; Sleep(500);}
                   };break;
            case 4:{
                        if(top==0){cout<<"EMPTY";Sleep(500);}
                        else{cout<<"NOT EMPTY";Sleep(500);}
                   };break;
            case 5:top=0;break;
            case 6:main();break;
            case 0:return;break;
        }
    }
    return;
}
void queve_menu()
{
    while(1)
    {
        system("CLS");
        cout<<"1. Push\n2. Pop\n3. Is full?\n4. Is empty?\n5. Clear queve\n6. Return to main menu\n0.Exit";
        int sw;
        cin>>sw;
        switch(sw)
        {
            case 1:pushQ(queve);break;
            case 2:popQ(queve);break;
            case 3:{
                        if(tail==SSize) {cout<<"FULL"; Sleep(500);}
                        else{cout<<"NOT FULL"; Sleep(500);}
                   };break;
            case 4:{
                        if(tail==0){cout<<"EMPTY";Sleep(500);}
                        else{cout<<"NOT EMPTY";Sleep(500);}
                   };break;
            case 5:tail=0;break;
            case 6:main();break;
            case 0:return;break;
        }
    }
    return;
}
 
void main()
{
    int sw;
    cout<<"Menu\n1. Stak\n2. Queve\n3. Deque\n4. Exit\n     ";
    cin>>sw;
    switch(sw)
    {
        case 1: stak_menu();break;
        case 2: queve_menu();break;
        case 3: deque_menu();break;
        case 0: return; break;
    }
}
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
//stak.h
#include "C:\Users\Василий\Documents\Visual Studio 2010\Projects\EVM22\Head.h"
Stack stak[SSize];
 
bool IsFullS(int top)
{
    if(top==SSize) return 1;
    return 0;
}
 
bool IsEmptyS()
{
    if (top==0) return 1;
    return 0;
}
 
Stack pushS(Stack stak[SSize])
{
    if(top==SSize) {cout<<"FULL"; Sleep(800);return stak[SSize];}
    else{
            cout<<"Input Y`r string: ";
            cin>>stak[top].s;
            stak[top].n=strlen(stak[top].s);            
            top+=1;                             
            return stak[SSize];
        }
    return stak[SSize];
}
void popS(Stack stak[SSize])
{
    if (IsEmptyS()) {cout<<"EMPTY";Sleep(500);return;};
    top-=1;                                     
    system ("CLS");
    cout<<stak[top].n<<"  "<<stak[top].s;
    Sleep(1000);
    return;
}
Добавлено через 1 час 58 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
void popR(Stack deq[SSize])
{
        if (IsEmptyD) {cout<<"EMPTY";Sleep(500);return;};                                                               
        system ("CLS");
 
 
 
bool IsFullD()
{
        if(righ==SSize-1) return 1;
        return 0;
}
заменил это условием из IsFull
C++
1
2
3
4
void popR(Stack deq[SSize])
{
    if (righ==0) {cout<<"EMPTY";Sleep(500);return;};                                
    system ("CLS");
и то же с IsFull
и заработало. я тронулся? или глюк? не могу въехать...

Добавлено через 13 минут

Не по теме:

(ЗАРАБОТАЛО - ЭТО ПОШЛО ПО ОБЕИМ ВЕТКАМ ИФА, А НЕ ТОЛЬКО ПО ПРАВДЕ. ДАЖЕ КОГДА МЕНЯЛ 1 НА 0 ВСЕ РАВНО РАБОТАЛА ТОЛЬКО ПРАВДА)

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 22:58     НЕправильно работает пара ф-ций
Посмотрите здесь:

Неправильно работает функция C++
C++ Прога работает неправильно
Не работает пара функций C++
C++ Неправильно работает функция
Проверьте задачку по циклам, неправильно работает. [думаю что неправильно] C++
Неправильно работает программа C++
C++ Неправильно работает ф-ия :(
C++ Программа работает неправильно

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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