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

Стек, перегрузки, псевдопеременные - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразовать цифру, введённую с консоли в строку, содержащую числительное, соответствующее этой цифре. Результат вывести на консоль http://www.cyberforum.ru/cpp-beginners/thread695935.html
Преобразовать цифру, введённую с консоли в строку, содержащую числительное, соответствующее этой цифре. Результат вывести на консоль.
C++ Подскажите как доделать программу (хранение данных о сканерах) Помогите довести до ума программу, буду оч благодарен! ************************** Для хранения данных о планшетных сканерах описать структуру вида: struct sc_inf { char model; //наименование модели int price; //цена double x_size; //горизонтальный размер области сканирования double y_size; //вертикальный размер области сканирования int optr; ... http://www.cyberforum.ru/cpp-beginners/thread695933.html
C++ Си является подмножеством С++?
Занимаюсь переводом книги по плюсам. "Created by Bjarne Stroustrup, C++ is a direct descendant of the C language. In fact, C++ retains almost all of C as a subset. However, C++ offers better ways to do things and some brand-new capabilities, too." "Язык программирования С++, созданный Бьерном Страуструпом, является прямым потомком языка Си. Фактически С++ включает в себя практически весь...
C++ Вывод двумерного массива
Решил попрактиковаться в работе с вложенными циклами, напоролся на проблему, которую понятия не имею как решить. Вот код: #include <iostream> using namespace std; int main() { float matrix= { {1,0.33,0.33}, {2,1,0.66}, {3,4,1}
C++ Очень нужен совет строки http://www.cyberforum.ru/cpp-beginners/thread695906.html
вывести слова в которых непарное количество гласных мой вариант со счётчиком не работает .... Помогите пожалуйста... #include <stdio.h>
C++ Строки. Обработка строк Здравствуйте))) помогите с написанием вот такой программы) Дана последовательность символов S1, …, SN. Группы символов, разделенные пробелом (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Найти количество слов, у которых первый и последний символы совпадают между собой. подробнее

Показать сообщение отдельно
Eugenelife
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 9
13.11.2012, 15:05     Стек, перегрузки, псевдопеременные
Нужно сделать перегрузки операторов в классе стек, я совершенно запутался и получился полнейший бред. Оно работало глюченно когда я задавал размер стека, но я переделал конструктор и перестало работать вобще. Еще в задании есть такая строчка: Использование псевдопеременных для стека должно быть выполнено таким образом, во-первых і-му элементу в стеке может быть присвоенно некоторое значение, во-вторых например при s(i,j)=s2; //где s, s2 – стеки, в стеке s начиная с i-го символа j-го элемента заменить стек на s2. Как добраться до этого j-го элемента? нужно уберать все что перед ним?
Вот что у меня есть на данный момент
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
#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;
 
class Stack
{
private:
    int size;
    int tos;
    char* a;
public:
    
    Stack() {tos=0; size=0; a=new char[size]; }
    Stack(const Stack &);
    ~Stack() { delete [] a; }
    void push(char s);
    char pop();
    friend ostream& operator<<(ostream &, Stack &);
    friend istream& operator>>(istream &s, Stack &);
    //void calcuc();
};
 
Stack::Stack(const Stack &x):size(x.size),a(new char[size]) {a=x.a;};
 
void Stack::push(char s)
{ 
    a[tos]=s;
    tos++;
}
char Stack::pop()
{   tos--;
    return a[tos];
}
ostream &operator<<(ostream &s, Stack &p)
{
 
    for (int i=0;i< (p.size);i++) s<<p.pop()<<"\n";
    return s;
}
istream &operator>>(istream &s, Stack &p)
{ char k;
s>>k;
for (int i=0; i<(p.size-1); i++) {while (k!='=') {s >> k; p.push(k);}
}
return s;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
Stack s1;
cin>>s1;
cout<<s1;
 
getch();
 
    return 0;
}
Помогите пожалуйста)

Добавлено через 1 час 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
// LABA2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;
 
class Stack
{
private:
    
    char* a;
public:
    int size;
    int tos;
    Stack() {tos=0; size=0; a=new char[size]; }
    Stack(const int s);
    ~Stack() { delete [] a; }
    void push(char s);
    char pop();
    friend ostream& operator<<(ostream &, Stack &);
    friend istream& operator>>(istream &s, Stack &);
    //void calcuc();
};
 
Stack::Stack(const int s){tos=0; size=s; a=new char[size];}
 
void Stack::push(char s)
{ 
    a[tos]=s;
    tos++;
}
char Stack::pop()
{   tos--;
    return a[tos];
}
ostream &operator<<(ostream &s, Stack &p)
{
 
    for (int i=0;i< (p.size);i++) s<<p.pop()<<"\n";
    return s;
}
istream &operator>>(istream &s, Stack &p)
{ char k,a,b;
for (int i=0; i<(p.size-1); i++) {s >> k;
switch(k){
case '+':
                a = p.pop();
                b = p.pop();
                printf("%d\n", a+b);
                p.push(a+b);
                p.tos--;
                break;
case '-':
                a = p.pop();
                b = p.pop();
                p.push(b-a);
                p.tos--;
                break;
case '*':
                a = p.pop();
                b = p.pop();
                p.push(b*a);
                p.tos--;
                break;
case '/':
                a = p.pop();
                b = p.pop();
                if(a==0) {
                    printf("Деление на 0.\n"); 
                    break;
                }
                p.push(b/a);
                p.tos--;
                break;
default:
                
                p.push(k);}
 
}while (k!='=');
return s;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
Stack s1(10);
cin>>s1;
cout<<s1;
 
getch();
 
    return 0;
}
Добавлено через 14 часов 20 минут
Еще подкорректировал
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
#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;
 
class Stack
{
private:
    
    char* a;
public:
    int size;
    int tos;
    Stack() {tos=0; size=0; a=new char[size]; }
    Stack(const int s);
    ~Stack() { delete [] a; }
    void push(char s);
    char pop();
    friend ostream& operator<<(ostream &, Stack &);
    friend istream& operator>>(istream &s, Stack &);
};
 
Stack::Stack(const int s){tos=0; size=s; a=new char[size];
for (int i = 0; i < size; i++) {a[i]=0;} }
 
void Stack::push(char s)
{ 
    a[tos]=s;
    tos++;
    
}
char Stack::pop()
{   tos--;
    return a[tos];
}
ostream &operator<<(ostream &s, Stack &p)
{
 
    for (int i=0;i< (p.size);i++) s<<p.pop()<<"\n";
    return s;
}
istream &operator>>(istream &s, Stack &p)
{ char k;
int a,b;
for (int i=0; i<(p.size); i++) {s >> k;
switch(k){
case '+':
                a = p.pop();
                b = p.pop();
                p.push(a+b);
                break;
case '-':
                a = p.pop();
                b = p.pop();
                p.push(b-a);
        
                break;
case '*':
                a = p.pop();
                b = p.pop();
                p.push(b*a);
            
                break;
case '/':
                a = p.pop();
                b = p.pop();
                if(a==0) {
                    printf("Деление на 0.\n"); 
                    break;
                }
                p.push(b/a);
                
                break;
default:
                
    p.push(k);
    break;}
}//while (k!='=');
return s;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
Stack s1(5);
cin>>s1;
cout<<s1;
 
getch();
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru