IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

5 страниц V « < 2 3 4 5 >  
Closed Topic Открыть новую тему 
> Ряд вопрсов по C++.
сообщение
Сообщение #61


Гость






Простого встроенного - нет. Есть эмуляторы BGI: Borland BGI Graphics emulation , есть OpenGL + GLUT, есть WinAPI...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #62


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Спасибо за ссылку, всё работает).


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #63


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Хм.. Я добавил graphics.h и winbgim.h и в ...\mingw\include.
А libbgi.a в ...\mingw\lib.


#include <graphics.h>

int main() {
int graphdriver = VGA ;
int graphmode = VGAHI;

initgraph (&graphdriver, &graphmode, "");

//line (500,350,200,300);
//closegraph();
return 0;
}




При попытке скомпилировать это получаю следующие :
D:\msys\1.0\mingw\bin>c++ asd.cpp
C:\DOCUME~1\ROCKET~1\LOCALS~1\Temp/cc8udaaa.o:asd.cpp:(.text+0x14c): undefined r
eference to `initgraph'
collect2: ld returned 1 exit status

В чём моя ошибка ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #64


Гость






Цитата
Я добавил graphics.h и winbgim.h и в ...\mingw\include.
А libbgi.a в ...\mingw\lib.
Ну, скопировать-то ты скопировал файлы. А добавить к проекту библиотеки не забыл? Добавляешь libbgi.a, она тянет за собой еще 5 бмблиотек: libgdi32.a, libole32.a, libolepro32.a, libuuid.32.a и libcomdlg32.a

Вот когда все это добавишь, программа откомпилируется и слинкуется. Работоспособность не проверял.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #65


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Нескромный и глупый вопрос, где можно взять эти библиотеки?
Заранее спасибо.

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #66


Гость






А что, в папке \lib у тебя их нет? Значит, у тебя "неправильный мед" (С), в смысле, неполная установка MinGW... В моей есть все выше перечисленное.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #67


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Эти библиотеки и в правду есть, но что то я страшно туплю: как их добавить в проект ?
Те. как я понимаю, мне надо знать какие у них заглавочные файлы или ...?

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #68


Гость






Ты чем компилируешь? Из командной строки? Значит, в эту самую строку при вызове линкера добавь
-llibbgi -llibgdi32 -llibole32 -llibolepro32 -llibuuid -llibcomdlg32
, чтобы линкер мог слинковать твой проект со всеми этими библиотеками...

Я пользуюсь Code::Blocks, там все добавляется через меню Project -> Build Options -> Linker Settings -> Add

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #69


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Код

D:\msys\1.0\mingw\bin>g++ asd.cpp  -llibbgi -llibgdi32 -llibole32 -llibolepro32
-llibuuid -llibcomdlg32
..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibbgi
collect2: ld returned 1 exit status

libbgi - лежит в ...\mingw\lib.
Хм... Где моя ошибка?

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #70


Гость






Очень похоже на то, что у тебя PATH не содержит пути к MinGW. Тогда что-то типа:
Код
D:\msys\1.0\mingw\bin>g++ -o main asd.cpp "D:\msys\1.0\mingw\lib\libbgi.a" "D:\msys\1.0\mingw\lib\libgdi32.a" "D:\msys\1.0\mingw\lib\libole32.a" "D:\msys\1.0\mingw\lib\libolepro32.a" "D:\msys\1.0\mingw\lib\libuuid.a" "D:\msys\1.0\mingw\lib\libcomdlg32.a"
должно сработать.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #71


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


А можно дописать пути path к mingw ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #72


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Всё я скачал code::blocks добавил библиотеки и всё стало воистину хорошо.
Что то я вчера тормозил, ещё раз спасибо volovo )


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #73


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Можно ли и как перегрузить операцию индексирования (в матрице)[][] ? Мне нужен обьвление функции.
Заранее спасибо.


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #74


Гость






Описание матрицы приведи, чтоб было понятно, чего именно ты хочешь... В общем случае - используй proxy-классы.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #75


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +




template<class T>
class matrix {
private :
vector<T>* data ;
int len, wid ;
public :
matrix (int l, int w);
matrix (const matrix& rhs);

int getLen () const {return len ;};
int getWid () const {return wid ;};

T& ind (int index1, int index2) ; // <-----------
const T& ind (const int& index1, const int& index2) const; //<--------------Заменить на оператор индексации

};



Я представляю матрицу через вектор. Мне так, допустим, хочется ). Как надо сделать ?

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #76


Гость






Ну, раз хочется... smile.gif

Вот так, к примеру:

template <class T>
class matrix {

private:
class proxy {
vector<T> *p_data;
int p_x;

public:
void init(vector<T>* ptr) {
p_data = ptr;
}
proxy& operator() (int x) {
p_x = x;
return *this;
}
T& operator [] (int y) {
return p_data[p_x][y];
}

};

protected:
int len, wid;

vector<T> *data;
mutable proxy pproxy; // <--- не забудь

public :
// собственно, вот и индексация...
proxy& operator[] (int x) {
return pproxy(x);
}

matrix (int l, int w) {
// здесь инициализация data

pproxy.init(data); // <--- !!!
}

// дальше - все твои определения, что и было...
// только правильно выдели память под vector-ы, reserve не забудь
};


// вызывать вот так:
int main() {
matrix<int> mx(5, 5);

mx[1][2] = 3;
mx[3][1] = 7;

cout << mx[1][2] << endl;
cout << mx[3][1] << endl;

return 0;
}


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #77


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Спасибо... Просто, я решил змейку сделать на С++, заодно набить руку шаблонами, классами и прочими интерессными вещами.


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #78


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


1 вопрос: как в с++ заменить следующую конструкцию


if keypressed then
begin
key := readkey ;
case ord(key) of
1 :
2 :
...



заранее спасибо.




--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #79


Гость






И что эта конструкция делает на Паскале? Какие кнопки отлавливает?

В общем виде - вот так:
    int key;
if(kbhit()) {
switch(key = getch()) {
case '1': // нажата '1'
// обрабатываем
break;
case '2':
// обрабатываем
break;
}
}

 К началу страницы 
+ Ответить 
сообщение
Сообщение #80


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Хм... А если я хочу отловить нажатие курсорных клавиш ?

Добавлено через 15 мин.
И ещё 1 вопрос .
Как сделать задержку (delay()-pas) ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

5 страниц V « < 2 3 4 5 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 11:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name