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

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
77Bender77
 Аватар для 77Bender77
18 / 18 / 0
Регистрация: 16.12.2010
Сообщений: 145
18.10.2011, 21:30     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. #1
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table[n], а вот сам метод:
C++
1
2
3
4
5
6
7
8
    int copyTable(int a, int b)
    {
        int i,j;
        bd table[n];
        for (a-=1; a<b; a++)
            table[a]=table[j];
        return 0;
    }
суть метода состоит в том, чтобы заменять элементы bd от а до b элементом table[j].
вызов метода происходит что-то типа:
C++
1
table[j].copyTable(1,2);
так вот я не понимаю как сопоставить эти table[j], тоесть чтобы при вызове метода таким способом он понимал, что заменять нужно на тот элемент, из-под которого вызывали (если можна так выразиться).

в идеале задание звучит так:
Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
если кто подскажет как сделать через присваивание буду весьма благодарен

Добавлено через 21 час 35 минут
никто не знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2011, 21:30     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
Посмотрите здесь:

пример базы данных на с/с++ с использование структур C++
C++ С++ базы данных
Базы данных C++
Подобие базы данных C++
C++ Базы данных на си
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.10.2011, 21:37     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. #2
Цитата Сообщение от 77Bender77 Посмотреть сообщение
заменять элементы bd от а до b элементом table[j].
как можно заменять элементы bd? bd - класс, а не объект!!!

Цитата Сообщение от 77Bender77 Посмотреть сообщение
так вот я не понимаю как сопоставить эти table[j], тоесть чтобы при вызове метода таким способом он понимал, что заменять нужно на тот элемент, из-под которого вызывали (если можна так выразиться).
ничерта не ясно что вы хотите сделать
77Bender77
 Аватар для 77Bender77
18 / 18 / 0
Регистрация: 16.12.2010
Сообщений: 145
18.10.2011, 22:31  [ТС]     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. #3
Цитата Сообщение от Jupiter Посмотреть сообщение
как можно заменять элементы bd? bd - класс, а не объект!!!
элемент=объект, если так понятней

Цитата Сообщение от Jupiter Посмотреть сообщение
ничерта не ясно что вы хотите сделать
есть например такой вот метод в классе bd, который заменяет элементы bd (table[0], table[1] и т.д., которые в методы описаны как table[а]) на какойто другой элемент table[j] (который в методе так и описан):
C++
1
2
3
4
5
6
7
8
int copyTable(int a, int b)
        {
                int i,j;
                bd table[n];
                for (a-=1; a<b; a++)
                        table[a]=table[j];
                return 0;
        }
я вызываю этот метод например так:
C++
1
table[j].copyTable(1,2);
и эти table[j] в описании метода и вызове метода соответствовать должны. вот я не понимаю как описать в методе это соответствие!
тоесть если бы я вызывал метод так:
C++
1
tableТ.copyTable(1,2);
то уже этот tableТ (который, кстати, тоже является объектом класса bd) соответствовал table[j] в методе

Добавлено через 8 минут
вот мне помогли на другом форуме, только без комментов. может кто разберется?

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
    #include <iostream>
     
    struct StructT;
     
    struct Proxy
    {
        StructT & ref;
        int i;
        int j;
        Proxy(StructT & arg, int a, int b): ref(arg), i(a), j(b)
        {}
     
        StructT & operator= (double arg)
        {
            std::cout << "Proxy (" << i << ", " << j << ")::" << "operator=(" << arg << ")\n";
            return ref;
        }
    };
     
    struct StructT
    {
        Proxy operator()(int i, int j)
        {
            std::cout << "operator()(" << i << ", " << j << ")\n";
            return Proxy(*this, i, j);
        }
    };
     
    int main()
    {
        StructT bd;
        bd(3,5) = .5;
        return 0;
    }
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
18.10.2011, 23:53     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. #4
Может так?
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
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
 
class Field {
 public:
  Field(const std::string &value) : value_(value) {}
  std::string getValue() const { return value_; }
  void setValue(const std::string &value) { value_ = value; }
 private:
  std::string value_;
};
 
class Record {
 public:
  Record() {}
  void add(const Field &field) { fields_.push_back(field); }
  Field &operator[](size_t i) {
    return fields_[i];
  }
  size_t size() const { return fields_.size(); }
 private:
  std::vector<Field> fields_;
};
 
class MyRecord : public Record {
 public:
  MyRecord(const std::string &value) {
    add(value);
  }
};
 
template <class IteratorBegin, class IteratorEnd>
class RecordsRange {
 public:
  RecordsRange(IteratorBegin begin, IteratorEnd end)
    : begin_(begin), end_(end) {}
  Record operator=(const Record &record) {
    IteratorBegin  i = begin_;
    while (i != end_)
      *i++ = record;
    return record;
  }
 private:
  IteratorBegin begin_;
  IteratorEnd end_;
};
 
class Table {
 public:
  typedef RecordsRange<std::vector<Record>::iterator, std::vector<Record>::iterator>
    RangeOfRecords;
  void add(const Record &record) {
    data_.push_back(record);
  }
  RangeOfRecords operator()(size_t begin, size_t end) {
    return RangeOfRecords(data_.begin() + begin, data_.begin() + end);    
  }
  Record &operator[](size_t i) {
    return data_[i];
  }
  size_t size() const { return data_.size(); }
 private:
  std::vector<Record> data_;
};
 
int main(int argc, char *argv[]) {
  Table table;
  table.add(MyRecord("One"));
  table.add(MyRecord("Two"));
  table.add(MyRecord("Three"));
  table.add(MyRecord("Four"));
  table(1, 3) = MyRecord("Dumb");
  
  for (size_t i = 0; i < table.size(); ++i) {
    std::cout << table[i][0].getValue() << std::endl;
  }
}
77Bender77
 Аватар для 77Bender77
18 / 18 / 0
Регистрация: 16.12.2010
Сообщений: 145
26.10.2011, 19:13  [ТС]     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. #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
class Abc
{
public:
string a1;
string a2;
friend Abc & operator () (int i, int j);
friend Abc & operator = (Abc & obj1, Abc & obj2);
};
 
Abc & operator () (int i, int j) 
    {
        return (i, j);
    }
 
Abc & operator = (Abc & obj1, Abc & obj2)
    {
    for (i-=1; i<j; i++)
         {
       obj1[i].a1=obj2.a1;
           obj1[i].a2=obj2.a2;
         }
           return obj1[i];
    }
 
int main ()
{
Abc bd[10];
Abc s;
 
bd (3,5) = s;
 
return 0;
}
это мои очередные попытки осуществить задание. далеко от "правды" ?
bd[i] соответствует obj1[i], s соответствует obj2
Yandex
Объявления
26.10.2011, 19:13     Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
Ответ Создать тему
Опции темы

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