Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: nobody2
Дата сообщения: 15.03.2005 10:31

Цитата:
while(!_kbhit())
{
Sleep(300);
}

Не портируемо.
Автор: WiseAlex
Дата сообщения: 15.03.2005 10:56
IXaosI

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

а что cin>>str; не подходит?
Автор: mihas83
Дата сообщения: 15.03.2005 12:19
WiseAlex

Цитата:
а что cin>>str; не подходит?

Так это фактически то же, что и getchar()...
Автор: Karlsberg
Дата сообщения: 15.03.2005 12:20
nobody2

Цитата:
Не портируемо.

А нужно было портируемое? Ну предложи свой портируемый вариант...
Автор: Duke Shadow
Дата сообщения: 15.03.2005 13:08
getch() работает - причём без эха на экран.
Автор: Karlsberg
Дата сообщения: 15.03.2005 13:27
Да, getchar() с Enter-ом работает замечательно. Правда, только с ним.
Автор: IXaosI
Дата сообщения: 15.03.2005 19:02
Karlsberg

Цитата:
getchar() с Enter-ом работает замечательно.

Спасибо, этим обойдемся..
А какя разница между char и char*
Автор: gl0be
Дата сообщения: 15.03.2005 23:38
char* pC; - это указатель(адрес) на переменную типа char .
char c; - это сама переменная.


pС= &c; берем адрес переменной
*pС = 'r'; разименовываем и присваиваем переменной с (т.к. в pС адрес с) значение 'r';

Почитай Керниган,Ричи "Язык программирования С".Везде в инете есть.там все очень подробно описано.
Автор: mihas83
Дата сообщения: 16.03.2005 06:48
gl0be

Цитата:
Почитай Керниган,Ричи "Язык программирования С".Везде в инете есть.там все очень подробно описано.

IXaosI, без этого дальше нельзя ни шагу.
Очень принципиальнэ вещи.
Автор: IXaosI
Дата сообщения: 16.03.2005 22:17
gl0be
mihas83
Народ я боагодарен, просто у меня манера наперед забегать, я постепенно учусь, а некоторые коды программы надо зарание...
Спасибо вам...
Автор: KADABRA
Дата сообщения: 17.03.2005 18:01
Кто может объяснить, почему в С++ не работает динамическое создание двухмерных массивов:
int ** pArr = new int[x][y];
?
Автор: LuckyELF
Дата сообщения: 17.03.2005 18:13
потому что так нельзя, зато можно так

float **InitMatrix( int sizey, int sizex )
{
float **pMatrix = NULL;
pMatrix = new float* [sizey];
if ( !pMatrix ) return NULL;
for( int x=0; x < sizex; x++ )
pMatrix[x] = new float [sizex];

printf( "Matrix create [%d,%d].\n", sizey, sizex );
return pMatrix;
}

void DoneMatrix( float **pMatrix, int sizey )
{
if ( !pMatrix ) return;
for( int x=0; x < sizey; x++ )
delete [] pMatrix[x];
delete [] pMatrix;
printf( "Matrix destroy.\n" );
}

void ShowMatrix( float **pMatrix, int sizey, int sizex )
{
int y, x;
for( y=0; y < sizey; y++ )
{
for( x=0; x < sizex; x++ )
printf( "%3.1f ", pMatrix[y][x] );
printf( "\n" );
}
}
Автор: distance
Дата сообщения: 18.03.2005 01:48
KADABRA
во-первых, только одна размерность может быть не константной в данном случае
во-вторых, у тебя неправильный кастинг типов
int** - это массив указателей, в котором в памяти последовательно расположены адреса других блоков памяти.
а тебе нужно выделить массив, состоящий из y массивов по x элементов каждый


Код:
int n = ...; // переменная размерность
int (*array)[20] = new[n][20]; // массив из 20 векторов размером n
array[0][0] = 1;
delete[] array;
Автор: KADABRA
Дата сообщения: 18.03.2005 15:02
LuckyELF
distance
Спасибо.
Цитата:
потому что так нельзя


Цитата:
во-первых, только одна размерность может быть не константной в данном случае

Но я так и не понял ПОЧЕМУ?
Автор: Duke Shadow
Дата сообщения: 18.03.2005 15:24
KADABRA

Цитата:
Но я так и не понял ПОЧЕМУ?

Ограничение такое. Общий смысл таков: нельзя создать массив из элементов, чья размерность заранее неизвестна. В С++ многомерный массив рассматривается как массив массивов, т.е. "вторая" и последующие размерности задают, фактически, размер элемента для массива "первой" размерности. Написать компилятор для эффективного решения данной задачи, имхо, очень трудно, поэтому задача переложена на программиста, тем более, что в конкретной ситуации ему виднее.

distance
Ну кто же так на "плюсах" пишет? Какой, нафик, malloc? new нужно пользовать.

Короче, варианта два:
Вариант 1

Код:
unsigned int N=<значение>;
unsigned int M=<значение>;
<тип> *array = new <тип>[N*M];
//Обращение к элементу массива выглядит так
array[i*M+j]=<что-то_подходящего_типа>;
//где i - индекс строки, j - индекс столбца
//Не забываем освобождать память
delete [] array;
Автор: KADABRA
Дата сообщения: 18.03.2005 16:30
Duke Shadow
Как обойти я знал, но ни как не мог понять почему?
Цитата:
Общий смысл таков: нельзя создать массив из элементов, чья размерность заранее неизвестна. В С++ многомерный массив рассматривается как массив массивов, т.е. "вторая" и последующие размерности задают, фактически, размер элемента для массива "первой" размерности. Написать компилятор для эффективного решения данной задачи, имхо, очень трудно, поэтому задача переложена на программиста, тем более, что в конкретной ситуации ему виднее.

Спасибо.
Автор: levtolstoy
Дата сообщения: 19.03.2005 08:17
У меня вопрос по Visual C++ 7.0 : в нём опредилили CString как typedef на template (ATL) , а в Visual C++ 6.0 CString был просто класс. У меня есть много кода, использующего CString (например как параметр для функции) и откомпилированного на Visual C++ 6.0.
Когда я вызываю этот код из Visual C++ 7.0 , то получаю ошибку
Linking:
TestConsole1.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall CTestMsg::HelloWorld(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >)" (__imp_?HelloWorld@CTestMsg@@QAEXV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z) referenced in function _main

Я пытаюсь вызвать функцию void CTestMsg::HelloWorld(CString str) и передаю ей CString
Может кто знает как решить эту проблему ?
Спасибо.

Автор: WiseAlex
Дата сообщения: 21.03.2005 11:16
levtolstoy
поставил использовать mfc? скорее всего какая-то библиотека не подключена на уровне linker'a
Автор: Goul
Дата сообщения: 10.04.2005 06:27
levtolstoy
Ты компилируешь клиента, использующего функцию HelloWorld, определённую в динамически подключаемой библиотеке. Об этом можно судить по спецификатору dllimport. Убедись, что подлинковываешь .lib от этой библиотеки.
Поскольку в версии 7 CString это шаблонный класс, могут возникнуть сложности с передачей объектов этого класса в качестве параметров, так как шаблон кто-то должен инстанцировать, то есть завести экземпляр шаблонного класса (известно, например, что шаблонный класс невозможно загнать в dll). Хотя этот вариант выглядит маловероятным.
В данном случае можно предположить ещё, например, такой вариант: библиотека скомпилирована с Unicode, а клиент - без.
Автор: 6epcepk
Дата сообщения: 18.05.2005 21:03
Добрый день.

У меня следующая проблема: Программа делалась на ноутбуке под Borland C++, на коем отлично работает. Но при попытке запустить на десткопном компьютере, она вылетает. В DOS Shell написано следующее:



Я так понял, что проблемы с графикой, только вот где ...

Собственно сама программа: http://rapidshare.de/files/1834794/LaB5.rar.html

Заранее спасибо.
Автор: distance
Дата сообщения: 19.05.2005 01:22
6epcepk
судя по сообщению, программа использует борладновую библиотеку графики BGI (borland graphics interface), а запускается без драйвра онной. попробуй положить в каталог к проге файлы *.bgi (все, которые найдешь на ноуте)
Автор: 6epcepk
Дата сообщения: 19.05.2005 07:41
distance
Переложил в папку с программой файлы из директории ./BGI/:
ATT
EGAVGA
HERC
IBM8514
PC3270
(все с расширением .BGI).

Но, к сожалению, результат то же ):
Автор: bormant
Дата сообщения: 19.05.2005 08:01
Поменяй
initgraph(&dr,&mod,"C:\\TC\\bgi\\");
на
initgraph(&dr,&mod,"");

и все заведется, он у тебя egavga.bgi ищет в c:\tc\bgi, о чем ты его сам и просил...
Автор: 6epcepk
Дата сообщения: 19.05.2005 20:58
bormant
Преогромнейшое спасибо! Я про эту строчку совершенно позабыл (:

Не доскажете где можно надыбать исходников разных прикольных графических фишек. Просто мне на курсови надо побольше всего навешать чтобы он круче смотрелся (:
Автор: Bol970
Дата сообщения: 23.05.2005 10:09
Знатоки С++ помогите перевести с паскаля на С++ следующие строки

Код: type
TTypeShape = (tsError, tsPolygon, tsCircle, tsRectange);
Автор: WiseAlex
Дата сообщения: 23.05.2005 10:48
Bol970
enum TTypeShape {tsError, tsPolygon, tsCircle, tsRectange};
Автор: Bol970
Дата сообщения: 23.05.2005 12:41
WiseAlex
Сенкью вэри мэни.
Автор: BukaP
Дата сообщения: 18.03.2006 10:13
В Visual C++ ставлю поле IDC_EDIT. Создаю для него переменную m_edit типа float. Задаю ей ограничения 0f ... 1.1f. Во время работы программы вводим числа в не диапозона после попытки извлечь значения или UpdateData, выводится окно диалога информирубщее о выходе из заданного диапозоны. Интересует, как можно перехватить его и обработать ошибкую.
Автор: inner
Дата сообщения: 18.03.2006 22:51
в CBuilder6 дошел то момента, когда в проекте перестает работать CodeCompletion.
Т.е. проект компилируется/линкуется без ошибок. Но во время вызова CodeCompletion обнаруживается странная ошибка:
[C++ Error] epc.cpp(1): Unable to invoke Code Completion due to errors in source code
В самой первой строке. Там где просто стандартная комментированная разделительная строка. Строк кода чуть больше 3000. В чем может быть дело?
Автор: inner
Дата сообщения: 19.03.2006 17:06
Как убрать CodeGuard из проекта?

Отключаю CodeGuard в проекте, получаю при линковке:
[Linker Error] Unresolved external '_CG_DESC' referenced from C:\WORK\!BACHELOR\APPLICATION\PGSQL_EPC\EPC_PRJ.OBJ

Включаю CodeGuard - все билдится нормально.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.