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

Как работать с функциями , используя классы ? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Каким оператором удалить строку String^ созданную gcnew? http://www.cyberforum.ru/cpp-beginners/thread682445.html
Здравствуйте. Подскажите чем удалить строку String^ созданную с помощью gcnew? Оператор delete видимо не подходит. String^ str = gcnew String(pv->name_bus); delete str; Заранее благодарен всем отозвавшимся.
C++ Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива Нужна помощи. Можно ли дать подобие самой элементарной задачи: Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Желательно с описанием. Заранее спасибо ;) Добавлено через 1 час 52 минуты up up up! http://www.cyberforum.ru/cpp-beginners/thread682441.html
Задача голландского флага C++
Если тема создавалась ранее,извиняйте. Но никак не могу разобраться, почему не работает! Кто-нибудь , помогите пожалуйста. #pragma once #include<iostream> #include<cmath> using namespace std; #define M_PI 3.1415926535897932384626433832795 #ifndef POP #define POP
массив char в файл C++
Надеюсь, последний глупый вопрос на сегодня: как записать в файл массив char длиной 1024 символа в файл вместо его содержимого
C++ Заполнить двумерный массив случайным образом и отсортировать в нём полученные значения http://www.cyberforum.ru/cpp-beginners/thread682426.html
Разработать программу, которая запоминает в двумерном массиве, имеющем 5 строк и 8 столбцов, числа от –5 до 5, получаемые случайным образом, а затем располагает их в порядке возрастания в строке. Поменять в отсортированном массиве все отрицательные элементы на их абсолютную величину.
C++ Составить функцию перестановки каждой пары элементов массива Нужно улучшить код программы что бы он работал кок можно оптимальней и самое главное как можно БЫСТРО Вот код который нужно улучшить,основная задача что бы программа работала как можно быстрее. Нужно очень срочно,на завтра. #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; подробнее

Показать сообщение отдельно
Casper-SC
3482 / 1701 / 175
Регистрация: 27.03.2010
Сообщений: 4,852
Записей в блоге: 1
28.10.2012, 14:41     Как работать с функциями , используя классы ?
Всё, исправил. Вот:

Stack.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once
 
namespace System
{
    namespace Collections
    {
        class Stack
        {
        private:
            static const int START_STACK_SIZE = 6;
            char * _stack; //содержит стэк
            int _currentPosition; //индекс вершины стека
            int _length;
        public:
            Stack(void);
            Stack(unsigned int startSize);
            ~Stack(void);
            void Push(char ch); //помещает в стек символ
            char Pop();         //выталкивает из стека символ
            int GetSize();
        };
    }
}


Stack.cpp
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
#include "StdAfx.h"
#include "Stack.h"
 
using namespace std;
using namespace System::Collections;
 
Stack::Stack(void)
{
    _currentPosition = 0;
    _stack = new char[START_STACK_SIZE];
    _length = START_STACK_SIZE;
}
 
Stack::Stack(unsigned int startSize)
{
    _currentPosition = 0;
    _stack = new char[startSize];
    _length = startSize;
}
 
Stack::~Stack(void)
{
    delete _stack;
}
 
void Stack::Push(char ch)
{
    if (_currentPosition == _length)
    {
        _length = _length * 2;
        char * tempArr = new char[_length];
        for (int i = 0; i < _length; i++)
            tempArr[i] = _stack[i];
        delete _stack;
        _stack = tempArr;
    }
 
    _stack[_currentPosition++] = ch;
}
 
char Stack::Pop()
{
    if (_currentPosition == 0)
        return 0;
 
    return _stack[--_currentPosition];
}
 
int Stack::GetSize()
{
    return _currentPosition;
}


Не по теме:

Цитата Сообщение от soon Посмотреть сообщение
Што за бардак в C# творится?!
Что-то я думаю, что я не то вообще сказал . Там просто нельзя по другому, кроме как классами писать. Я имел ввиду, что я думал, что в файле Stack.cpp всё его содержимое относится к классу Stack

В С# было бы примерно так:


С# код
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
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Заполняем стек:");
            Stack stackOne = new Stack(8);
            stackOne.Push('-');
            stackOne.Push('т');
            Console.WriteLine("Размер стека после добавления двух элементов: {0}", stackOne.GetSize());
            stackOne.Push('е');
            stackOne.Push('в');
            stackOne.Push('и');
            stackOne.Push('р');
            stackOne.Push('П');
            stackOne.Push('-');
            Console.WriteLine("Размер стека после заполнения: {0}", stackOne.GetSize());
            Console.WriteLine("Выводим содержимое стека:");
            for (int i = 0; i < 8; i++)
                Console.WriteLine("символ из stackOne: {0}", stackOne.Pop());
 
            Console.ReadKey();
        }
    }
}
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
namespace ConsoleApplication1
{
    public class Stack
    {
        private const int START_STACK_SIZE = 6;
        private char[] _stack; //содержит стэк
        private int _currentPosition; //индекс вершины стека
        private uint _length;
 
        public Stack()
        {
            _currentPosition = 0;
            _stack = new char[START_STACK_SIZE];
            _length = START_STACK_SIZE;
        }
 
        public Stack(uint startSize)
        {
            _currentPosition = 0;
            _stack = new char[startSize];
            _length = startSize;
        }
 
        public void Push(char ch)
        {
            if (_currentPosition == _length)
            {
                _length = _length * 2;
                char[] tempArr = new char[_length];
                for (int i = 0; i < _length; i++)
                    tempArr[i] = _stack[i];
                _stack = tempArr;
            }
 
            _stack[_currentPosition++] = ch;
        }
 
        public char Pop()
        {
            if (_currentPosition == 0)
                return ' ';
 
            return _stack[--_currentPosition];
        }
 
        public uint GetSize()
        {
            return _length;
        }
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru