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

Понимание для чего вообще нужны указатели? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема с pow http://www.cyberforum.ru/cpp-beginners/thread382561.html
#include <iostream> #include <conio.h> #include <math.h> using namespace std; class Triangle { public: int a,b,c;
C++ Считать массив строк из файла Например есть файл in.txt, с него нужно считать массив строк в мемо, а в другом мемо записать эти же строки в ascii кодах, например: в файле: abc bcd def в первом мемо должно отобразиться то же самое что и в файле, а во втором их коды: 97 98 99 98 99 100 100 101 102 как реализировать такую функцию? заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread382557.html
глобал в библиотеке, не отображается в дебагере C++
Использую студию 2010, профешинал. Есть в статик библиотеке глобальная переменная, внутри этой библиотеке в дебагере ее поля вопросиками показываются, а хотя извлекается оттуда все нормально. Но очень мешает отлаживать. Мб кто встречал такие проблемы и знает решение. P.S. глобальная переменная является структурой.
C++ Очередь, С++
здраствуейте, помогите реализовать алгортитм :pardon: С++ , буду признателен =) Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда находится в первом элементе массива; при изъятии одного элемента из очереди, все остальные элементы перемещаются на одну позицию ближе к началу массива. После обработки всей заданной входной...
C++ Табуляция http://www.cyberforum.ru/cpp-beginners/thread382529.html
ПРивет всем передо мной стоит следующая задачка: Требуется вычислить значения yi заданной функции для ряда значений аргументов xi, i=1,…,N, при этом вычис-лив с точностью ε > 0 значения функций ряда согласно разложениям в степенные ряды. f=4/sin x + (ex – sin x)/cos x. Написал кой-чего, но работать не хочет. Помогите, а? #include <stdio.h> #include <conio.h> #include <math.h> double eps =...
C++ Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на ... Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на 2 и 4, но не делятся на 6. Записать эти числа в текстовый файл g, а все остальные числа – в текстовый файл h. подробнее

Показать сообщение отдельно
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
15.11.2011, 06:52     Понимание для чего вообще нужны указатели?
Пожалуй приведу пример решения одной задачи, где я использовал указатели. Может быть существует другой способ решения, который я не знал.
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
class OData
{
public:
 
    // ...
 
    //
    // Все следующее нужно переопределять для различных типов графика
    //
 
    // для определения "нужна ли данная или нет"
    virtual bool isRequiredData()=0;
 
    // события. возникающие при чтении таблицы
    virtual void onDataBegin()=0;
    virtual void onDataFinish()=0;
    virtual void onTimeChanged()=0;
 
    // запоминаем то, что нужно
    virtual void postFoundData(const char* value)=0;
 
    // ввод параметров критерии
    // ВНИМАНИЕ: количество параметров проверяется до вызова
    virtual void input(double*)=0;
};
 
class ODataTime: public OData
{
protected:
    // параметры критерий
    double x, y, z;
 
public:
    ODataTime(std::string& _dataFilename, std::string& _ylabel, unsigned int _valueColumn, unsigned int _commandNumber):
      OData(_dataFilename, _ylabel, _valueColumn, _commandNumber) {};
 
    // для определения "нужна ли данная или нет"
    bool isRequiredData();
 
    // события. возникающие при чтении таблицы
    void onDataBegin();
    void onDataFinish();
    void onTimeChanged();
 
    // запоминаем то, что нужно
    void postFoundData(const char* value);
 
    // ввод параметров критерии
    void input(double*);
};
 
class ODataRho: public OData
{
protected:
    // параметры критерий
    // начало отрезка
    double x1, y1, z1;
 
    // конец отрезка
    double x2, y2, z2;
 
    // нужное время
    double t1;
 
    // то что собрали
    // массив пар [расстояние, величина]
    std::vector< std::pair<double, const char*> > aRhoValue;
 
    // допольнительные функции
    double rho(double, double, double);
 
    // для определения принадлежности отрезку
    bool isBelongToInterval();
 
public:
 
    ODataRho(std::string& _dataFilename, std::string& _ylabel, unsigned int _valueColumn, unsigned int _commandNumber):
      OData(_dataFilename, _ylabel, _valueColumn, _commandNumber) {};
 
    // для определения "нужна ли данная или нет"
    bool isRequiredData();
 
    // события. возникающие при чтении таблицы
    void onDataBegin();
    void onDataFinish();
    void onTimeChanged();
 
    // запоминаем то, что нужно
    void postFoundData(const char* value);
 
    // ввод параметров критерии
    void input(double*);
};
C++
1
2
3
4
5
6
7
8
9
namespace global
{
    //...
 
    static IData* idata; // входные данные
    static std::vector< OData* > odatas; // выходные
 
    // ...
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// обработка данных, полученой из строки
for (unsigned int j=0; j<odatas.size(); j++)
{
    odata = odatas[j];
 
    // если полученые данные из узла - то что нужно
    if (odata->isRequiredData()==true)
    {
        odata->foundRequiredData = true;
 
        r = idata->readValue(odata->valueColumn, value);
        if (r==false)
            return -1;
 
        // то записываем их
        odata->postFoundData(value);
 
    }
}
В векторе odatas содержатся указатели на объекты класса ODataTime и ODataRho. Реализация функции isRequiredData у каждого своя со своими "параметрами критерий". Проверяемые данные находятся в idata из пространства global.
 
Текущее время: 12:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru