Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 877
от 15.10.2007, 06:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 483, Экспертов: 70
В номере:Вопросов: 6, Ответов: 18


Вопрос № 104780: Здравствуйте. Не подскажите как связать OpenSSL и Borland 6.0 C++? Скачал в интернете библиотеки для Builder 5 (для 6-о не нашел), скопировал в папку lib, так при вызове функции выдается ошибка [Linker Error] Unresolved external '_SSL_load_error_...
Вопрос № 104833: Здраствуйте! как лучше создать n- мерный динамический масив?? Пытался что-то на подобе: int **a; a=new int[3][3]; Не получаеться!...
Вопрос № 104842: Как из Dll можно узнать имя вызывающего exe...
Вопрос № 104861: здраствуйте у меня возник вопрос как обозначить число которое может быть любым в данном куске кода мне надо чтобы а равнялось нулю а б могло быть любым числом заранее спасибо...
Вопрос № 104866: здраствуйте! ни как не могу понять с чем я ошибся так как с анлийским у меня проблемы не могу понять что пишет мне компилятор помогите исправить ошибки...
Вопрос № 104872: Здравствуйте! У меня такая проблема: пишу код на Borland C++ Builder 6.0, вывожу данные типа double в Memo. Как можно ограничить число знаков после запятой заданным значением?...

Вопрос № 104.780
Здравствуйте.
Не подскажите как связать OpenSSL и Borland 6.0 C++? Скачал в интернете библиотеки для Builder 5 (для 6-о не нашел), скопировал в папку lib, так при вызове функции выдается ошибка [Linker Error] Unresolved external '_SSL_load_error_strings' referenced from C:PROGRAM FILESBORLANDCBUILDER6PROJECTSUNIT1.OBJ (вызов функции для примера). Насколько я понял, нужно самому создавать их из того, что лежит на официальном сайте, но как не имею понятия.
Спасибо.
Отправлен: 09.10.2007, 07:38
Вопрос задал: Иван Т. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Иван Т.!
Нужно скачать еще и файлы *.dll
И все *.lib включить в проект.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.10.2007, 11:33


Вопрос № 104.833
Здраствуйте! как лучше создать n- мерный динамический масив??
Пытался что-то на подобе:
int **a;
a=new int[3][3];
Не получаеться!
Отправлен: 09.10.2007, 14:02
Вопрос задал: CruelHity (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: estiGi
Здравствуйте, CruelHity!

int ** arr = new int * [n1];
for (int i = 0; i < n1; i++)
{
arr [i] = new int [n2];
}

.....

for (int i = 0; i < n1; i++)
{
delete [] arr [i];
}
delete [] arr;
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 09.10.2007, 14:09
Оценка за ответ: 5
Комментарий оценки:
и вам спасибо!

Отвечает: V1s0r
Здравствуйте, CruelHity!

В приложении.
А вообще пользуйтесь вектором.

Приложение:

Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 09.10.2007, 14:12
Оценка за ответ: 5
Комментарий оценки:
B даже удаление вставили!! ну что спасибо 5))))

Отвечает: Aristos
Здравствуйте, CruelHity!

При создании n-мерного динамического массива каждая размерность (кроме первой) хранит массив указателей на массивы меньшей размерности.
В случае двумерного массива имеем:

int **a;
a=new int*[3]; // выделяем память под массив указателей на массивы размерности 1
for (int i = 0; i < 3; ++i)
a[i] = new int[3]; // создаем массив размерности 1, в котором будут храниться элементы

a[0][2] = 5; // обращние к элементу

Очистка памяти выполняется в обратном порядке:
for (int i = 0; i < 3; ++i)
delete[] a[i];
delete[] a;
---------
нет ничего невозможного
Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 09.10.2007, 14:16
Оценка за ответ: 5

Отвечает: Mihail Yarlykov
Здравствуйте, CruelHity!
Опишу необходимые действия при создании и работе с двумерным динамическим массивом:
1.Создать массив указателей на элементы выбранного типа.
2.Выделить память под каждый из этих элементов.
3.Использование такого массива ни чем не итличается от обычного статического.
4.Удалить выделеную память в порядке обратном созданию.

Смотрите пример в приложении:

Приложение:

---------
Нет ничего невозможного!

Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 14:47
Оценка за ответ: 5

Отвечает: kool
Здравствуйте, CruelHity!
Нужно так
int (*a)[3];
a=new int[3][3];
Удачи!

---------
I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.10.2007, 16:34
Оценка за ответ: 4
Комментарий оценки:
Да тоже интеересно! но это не совсем то что мне надо! Это вроде получаеться не совсем динамический массив! а так можно было подобно создать int a[3][3] и все! Ну все равно интересно что работает! спс!!

Отвечает: Гальцов Андрей Михаилович
Здравствуйте, CruelHity!

Правильно так: int **a;
a=new int[3*3];

---------
Да здравтствует С++!!!...;)
Ответ отправил: Гальцов Андрей Михаилович (статус: 4-ый класс)
Ответ отправлен: 09.10.2007, 21:27
Оценка за ответ: 2
Комментарий оценки:
Это способ не рабоает!!
работает так
int *a;
a=new int[3*3];
но этот не очень.Хоть и получаеться один массив можно работать как с двух мерным массивом но очень не удобно! приходиться не которые вычисления проводить!По смотрите первые ответы они на мой взгляд самые удобные!Но рад буду и увидить и другие!


Вопрос № 104.842
Как из Dll можно узнать имя вызывающего exe
Отправлен: 09.10.2007, 15:32
Вопрос задала: Vasilina (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: mega
Здравствуйте, Vasilina!

char szExeName[1024];
GetModuleFileName(GetModuleHandle(NULL),szExeName,sizeof(szExeName));

комментировать вроде бы нечего
Ответ отправил: mega (статус: 3-ий класс)
Ответ отправлен: 09.10.2007, 15:47

Отвечает: Aristos
Здравствуйте, Vasilina!

Вам поможет WinAPI-функция GetModuleBaseName() объявленная следующим образом:
DWORD GetModuleBaseName(HANDLE hProcess, HMODULE hModule, LPTSTR lpBaseName, DWORD nSize);

Если передать в первых 2х аргументах NULL, то функция вернет имя файла, использованного при создании процесса, т.е. искомый exe. Например, вот таким образом:

TCHAR szProcessName[MAX_PATH];
GetModuleBaseName(NULL, NULL, szProcessName, MAX_PATH);
---------
нет ничего невозможного
Ответ отправил: Aristos (статус: 7-ой класс)
Ответ отправлен: 09.10.2007, 15:50

Отвечает: Mihail Yarlykov
Здравствуйте, Vasilina!

Для этой задачи существует функция GetModuleFileName.
Привожу пример функции из dll, в которой она применяется:

Приложение:

---------
Нет ничего невозможного!

Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 15:53

Отвечает: Новак Александр Васильевич
Здравствуйте, Vasilina!
А также можно воспользоваться функцией GetCommandLine(), она возвратит имя файла с параметрами, а потом разобрать строку и выделить, то что надо
---------
ПОЛЬЗУЙТЕСЯ НАШИМИ ПРОГРАММАМИ, ПОДДЕРЖИТЕ РОССИЙСКИХ ПРОГРАММИСТОВ ИНАЧЕ МЫ ВЫМРЕМ КАК МОМОНТЫ. ;-)
Ответ отправил: Новак Александр Васильевич (статус: 2-ой класс)
Ответ отправлен: 10.10.2007, 20:35


Вопрос № 104.861
здраствуйте у меня возник вопрос как обозначить число которое может быть любым
в данном куске кода мне надо чтобы а равнялось нулю а б могло быть любым числом
заранее спасибо

Приложение:

Отправлен: 09.10.2007, 17:45
Вопрос задал: Наговицын Артём Дмитриевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mihail Yarlykov
Здравствуйте, Наговицын Артём Дмитриевич!

Во первых у вас ошибочно стоят знаки - ; после условных операторов if.

Насколько я понял вопрос относится к участку: "else if (a==0 && b==)".
Если b любое то его не зачем учитывать, т.е. просто не писать: "else if (a==0)".

Но можно записать и так: "else if (a==0 && b >= 0 && b < 0 )".
---------
Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 18:37
Оценка за ответ: 5
Комментарий оценки:
большое спасибо очень помогло

Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Наговицын Артём Дмитриевич!

Ну вопервых, при объявлении пременной (например int b), ей уже записывается ноль или мусор какойто(смотря в какой среде Вы пишите)...поэтому эту поверку можно опустить...но если Вам очень нужна эта проверка то проверте это число от -бесконечности до +бесконечности...и еще - убирите все ";" после else и if...

Приложение:

---------
Да здравтствует С++!!!...;)

Ответ отправил: Гальцов Андрей Михаилович (статус: 4-ый класс)
Ответ отправлен: 09.10.2007, 21:37


Вопрос № 104.866
здраствуйте!
ни как не могу понять с чем я ошибся
так как с анлийским у меня проблемы не могу понять что пишет мне компилятор
помогите исправить ошибки

Приложение:

Отправлен: 09.10.2007, 18:44
Вопрос задал: Наговицын Артём Дмитриевич (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Mihail Yarlykov
Здравствуйте, Наговицын Артём Дмитриевич!

В приложении привожу исправленую программу:

Приложение:

---------
Нет ничего невозможного!

Ответ отправил: Mihail Yarlykov (статус: 1-ый класс)
Ответ отправлен: 09.10.2007, 19:06
Оценка за ответ: 1
Комментарий оценки:
было 3 ошибки стало 120

Отвечает: kool
Здравствуйте, Наговицын Артём Дмитриевич!
В строке
"else if (a==0 && b >= 0 && b < 0 )"
убрать кавычки.
Зесь if (a<0 && b<0);
и здесь if (a<0 && b==7 || b==8);
убрать точку с запятой
Здесь так
int ret = fclose (in);
Удачи!

---------
I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.10.2007, 19:54

Отвечает: Maxim V.G.
Здравствуйте, Наговицын Артём Дмитриевич!
Borland 5.02 выдал следующие ошибки:
Statment missing ; - понимать нехватает символа " ; "
Misplaced else - понимать - неправильно построена конструкция проверки условия
if () else
Undefined symbol - символ не определён - в Вашем случае забыли обявить тип переменной ret!

Я посоветую повнимательнее относиться к синтаксису прогрммы и проверять опечатки!
Исправленный вариант в приложении.

Приложение:

---------
Жить вредно - от неё умирают

Ответ отправил: Maxim V.G. (статус: 5-ый класс)
Ответ отправлен: 09.10.2007, 20:58

Отвечает: Гальцов Андрей Михаилович
Здравствуйте, Наговицын Артём Дмитриевич!

Вроде исправил...там были ошибки с else if...как я посмотрел там будет нормально написать просто if потому что идёт строгое условие...и еще вы забыли объявить переменную ret...fclose возвращает 0 если всё успешно, соответственно я и проверку переделал ret...

Приложение:

---------
Да здравтствует С++!!!...;)

Ответ отправил: Гальцов Андрей Михаилович (статус: 4-ый класс)
Ответ отправлен: 09.10.2007, 21:51


Вопрос № 104.872
Здравствуйте! У меня такая проблема: пишу код на Borland C++ Builder 6.0, вывожу данные типа double в Memo. Как можно ограничить число знаков после запятой заданным значением?
Отправлен: 09.10.2007, 19:27
Вопрос задала: Start[er] (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Start[er]!

double x = 125.569056988;
String s = FloatToStrF(x,ffNumber,15,2);
---------
s = 125,57

String s = FloatToStrF(x,ffNumber,15,4);
---------
s = 125,5691


Посмотрите справку по этой функции. (Это только для C++Builder/Delphi)
---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Практикант)
Ответ отправлен: 09.10.2007, 19:48
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо! Вы мне очень помогли!!!))


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.61.0 от 14.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное