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

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


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

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

Выпуск № 733
от 08.05.2007, 17:05

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


Вопрос № 85117: добрый день. ктонибуть сталкивался с преобразованием прямоугольной матрицы в треугольную? возможно есть алгоритм или готовая функция или программа? спасибо. ..
Вопрос № 85145: Здраствуите! У меня такой вопрос: Как узнать если процес сушествует ... который был создан при помощи следущий строкой: HINSTANCE a=ShellExecute(this->Handle,"open", "ffmpeg.exe",NULL, NULL,SW_SHOWNORMAL); дел...
Вопрос № 85173: Здравствуйте, ЭКСПЕРТЫ! Помогите, пожалуйста, понять почему эта маленькая программка не работает! Печатает адреса вместо значений....
Вопрос № 85214: Здраствуйте, уважаемые эксперты. Программирую на Microsoft Visual C++ 6.0 перешел недавно с Borland Builder 6.0 У меня возник вопрос, в Borland Builder 6.0 можно было выставить настройки так что все необходимые библиотеки включались в *.е...
Вопрос № 85238: Доброго всем времени суток! По неопытности и незнанию столкнулся с такой проблемой: если длина считываемой из текстового файла в ANSI-кодировке строка в массив Num типа char, которая далее копируется в NumCpy составляет 10 и менее символов, то все ра...
Вопрос № 85252: Подсчитать количество четных элементов по столбцам и строкам. Ответ должен выводиться например в 1 строке столько э лементов, в первой столбце столько элементов и так для всех столбцоыв и строк. Овет должен как выводитьс на экран так и записывать...

Вопрос № 85.117
добрый день. ктонибуть сталкивался с преобразованием прямоугольной матрицы в треугольную? возможно есть алгоритм или готовая функция или программа? спасибо.
Отправлен: 02.05.2007, 17:54
Вопрос задал: Biggle (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Biggle!
Да вроде метод Гауса подходит.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 02.05.2007, 19:49

Отвечает: Терсков Сергей
Здравствуйте, Biggle!
Для данного преобразования используется метод Гаусса.

Математический пример:

http://www.mathelp.net/MA5.htm

Программный пример:

http://www.alexeypetrov.narod.ru/C/gauss_about.html
Ответ отправил: Терсков Сергей (статус: 8-ой класс)
Ответ отправлен: 03.05.2007, 02:26

Отвечает: Boompro
Здравствуйте, Biggle!

Посмотрите здесь
http://alglib.sources.ru/matrixops/general/2hessenberg.php
Ответ отправил: Boompro (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 10:55


Вопрос № 85.145
Здраствуите!
У меня такой вопрос:
Как узнать если процес сушествует ... который был создан при помощи следущий строкой:
HINSTANCE a=ShellExecute(this->Handle,"open", "ffmpeg.exe",NULL, NULL,SW_SHOWNORMAL);

дело в том что я запускаю кодек из программы и мне нужно знать если кодек закончел конвертирование.

П.С.: ffmpeg.exe это консольная программа.

И, как найти HWND имея HINSTANCE...

За ранее Спасибо!
Отправлен: 02.05.2007, 21:20
Вопрос задал: spider (статус: 6-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Gremlin
Здравствуйте, spider!
Используй функции ShellExecuteEx, и WaitForSingleObject. Первая - для запуска процесса, вторая - для ожидания его завершения. Второй нужно передать в качестве первого параметра SHELLEXECUTEINFO::hProcess, а второй INFINITE, т.е. ждать пока не завершится.

Вместо ShellExecuteEx, можно использовать более простой вариант - CreateProcess
Ответ отправил: Gremlin (статус: 2-ой класс)
Ответ отправлен: 03.05.2007, 00:49
Оценка за ответ: 5
Комментарий оценки:
spasibo... no akoshka budet otvechat' na soobshenie windows poka budet jdati zavershenie procesa??

Отвечает: kool
Здравствуйте, spider!
Можно попробывать поискать процесс, кот.
выполняет функции твоего кодека. Для этого
можно исполоьзовать ф-ции Process32First и Process32Next.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 03.05.2007, 20:43

Отвечает: Ilkras
Здравствуйте, spider!
можно воспользоваться ShellExecuteEx, и WaitForSingleObject, как вам советовал Gremlin, мо вместо того чтобы ждать окончания процесса передайте вторым параметром ноль. функция вернет немедленно результат, который вы будете анализировать. Варианты: WAIT_TIMEOUT - процесс работает, WAIT_ABANDONED - процесс закончился и его handle is invalid.
Ответ отправил: Ilkras (статус: 8-ой класс)
Ответ отправлен: 04.05.2007, 09:05
Оценка за ответ: 4
Комментарий оценки:
spasibo za dopolnenie )


Вопрос № 85.173
Здравствуйте, ЭКСПЕРТЫ!
Помогите, пожалуйста, понять почему эта маленькая программка не работает!
Печатает адреса вместо значений.

Приложение:

Отправлен: 02.05.2007, 23:50
Вопрос задала: Arisham (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Allex
Здравствуйте, Arisham!

1. В структуре Students есть массив неопределенной длины: int ocen[]
Заменить на int ocen[N]

2. Данные из файла читаются в бинарном виде, уж очень неуудобно отлаживать. К тому же, часть данных является указателем на следующую структуру - из файла его корректно прочитать невозможно. К счастью, это поле (next) не используется.

3. Students *t1=new (Students);
созданный объект не используется - безусловно затирается
t1=begin;

Самое интересное, что после исправления указанных ошибок прочитанные данные печатаются корректно. :)
Ответ отправил: Allex (статус: 9-ый класс)
Ответ отправлен: 03.05.2007, 00:31
Оценка за ответ: 5
Комментарий оценки:
Спасибочки! Ценные замечания!

Отвечает: kool
Здравствуйте, Arisham!
Возможно п.ч.
int ocen[]; нужно написать int ocen[N];
Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 03.05.2007, 20:43

Отвечает: Ilkras
Здравствуйте, Arisham!
В определении структуры у массива не задана размерность. Соответсвенно выделяется место для пойнтера и при заполнении массива вы пишете за границу выделенной памяти. Трудно предположить что вы читаете - проще починить:int ocen[5];
Ответ отправил: Ilkras (статус: 8-ой класс)
Ответ отправлен: 04.05.2007, 08:53
Оценка за ответ: 4


Вопрос № 85.214
Здраствуйте, уважаемые эксперты.
Программирую на Microsoft Visual C++ 6.0 перешел недавно с Borland Builder 6.0
У меня возник вопрос, в Borland Builder 6.0 можно было выставить настройки так
что все необходимые библиотеки включались в *.ехе файл конечно размер становился очень
большим, но зато практически ничего не надо было таскать вместе с программой и она работала спокойно
на любом компе, а вот как настроить тоже самое в VC++ - чтобы все необходимое включалось в exe файл?
Если это не возможно, то тогда подскажите какие файлы надо таскать со своей программой
если на компе на котором будет работать программа не установлен VC++?
Зарание большое спасибо за ответ. И поздравляю вас с праздниками!!!
Отправлен: 03.05.2007, 10:50
Вопрос задал: Никитченко Роман Юрьивич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Boompro
Здравствуйте, Никитченко Роман Юрьивич!

Ну в настройках проекта при линковке можно указать. Так же при создании проекта или опять же в настройках проект поменять с Shared library на Static тогда основные библиотеки будут прилинкованы.
Ответ отправил: Boompro (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 11:04


Вопрос № 85.238
Доброго всем времени суток! По неопытности и незнанию столкнулся с такой проблемой: если длина считываемой из текстового файла в ANSI-кодировке строка в массив Num типа char, которая далее копируется в NumCpy составляет 10 и менее символов, то все работает нормально, но как только ее длинна превышает 10 символов, что мне собственно и надо, происходи ошибка записи по некоторому адресу при вуполнении строки fn1=fopen(FName,"w").Почему это происходит и как это исправить? Заранее благодарен за любую попытку помощи.

void __fastcall TForm1::Button4Click(TObject *Sender)
{

AnsiString Path=Edit2->Text,PathNum=Edit3->Text,StrDate="Time",Buff2;
char Buff1[128],Num[20];
int j,n;
FILE *fn1,*fn2,*fn3;
TSearchRec SR ;

fn3=fopen(PathNum.c_str(),"r");

n=0;
FindFirst("*.txt",faDirectory,SR);
do
{
n++;
}while(!FindNext(SR));
FindClose(SR);

ProgressBar1->Max=n;
ProgressBar1->Min=0;
ProgressBar1->Visible=true;
ProgressBar1->Smooth=true;
do{
fgets(Num,20,fn3);
if(Num[strlen(Num)-1]==' '){Num[strlen(Num)-1]=0;}

char *FName= new char [strlen(Num)+40];
char *NumCpy=new char [strlen(Num)+1];

strcpy(NumCpy,Num);

strcpy(FName,"D:\distrib\research_SMS\");
strcat(FName,strcat(NumCpy,".txt"));
fn1=fopen(FName,"w");

FindFirst("*.txt",faAnyFile,SR);
do{

fn2=fopen((SR.Name).c_str(),"r");
do{
fgets(Buff1,128,fn2);
if(Buff1[strlen(Buff1)-1]==' ')Buff1[strlen(Buff1)-1]=0;
if(strstr(Buff1,StrDate.c_str())){Buff2=Buff1;}
if(strstr(Buff1,Num))
{
fprintf(fn1,"%s %s",Buff1,Buff2);
fprintf(fn1," ");
}

}while(!feof(fn2));
fclose(fn2);
ProgressBar1->StepBy(j);

}while(!FindNext(SR));
fclose(fn1);
FindClose(SR);
delete [] FName;
delete [] NumCpy;
}while(!feof(fn3));
fclose(fn3);
}
Отправлен: 03.05.2007, 12:22
Вопрос задал: Козлов Николай Валерьевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Козлов Николай Валерьевич!
В этой строке
strcat(FName,strcat(NumCpy,".txt"));
ошика. т.к. под FName, NumCpy выделено
ровно памяти столько сколько нужно,
strcat пытается сделать запись в невыделенную память.
Делай так см. прил.
Удачи!

Приложение:

---------
I am.

Ответ отправил: kool (статус: Студент)
Ответ отправлен: 03.05.2007, 21:08


Вопрос № 85.252
Подсчитать количество четных элементов по столбцам и строкам. Ответ должен выводиться например в 1 строке столько э
лементов, в первой столбце столько элементов и так для всех столбцоыв и строк. Овет должен как выводитьс на экран так и записыватьсяв текстовый файл. матрица должна формироваться генератором случайных чисел.
Отправлен: 03.05.2007, 13:34
Вопрос задал: Maratka (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lomer
Здравствуйте, Maratka!
См. приложение, там все ясно.
Чтобы добавить запись в файл, добавьте в начало исходника
FILE *file=fopen("result.txt","w+");
после чего печать идет стандартной функцией fprintf. Это то же, что и printf, только перед параметрами указывается FILE* .

Приложение:

Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 03.05.2007, 14:35

Отвечает: Sergijj
Здравствуйте, Maratka!

Код в приложении.

Успехов!

P.S.: Странно. Вы не поняли как работать с матрицами с прошлых вопросов?

Приложение:

---------
Стучитесь! И Вас откопают...

Ответ отправил: Sergijj (статус: 10-ый класс)
Ответ отправлен: 03.05.2007, 16:20

Отвечает: Sov
Здравствуйте, Maratka!
Вроде бы должно работать.
Удачи

Приложение:

Ответ отправил: Sov (статус: 2-ой класс)
Ответ отправлен: 03.05.2007, 21:42


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 (beta) от 02.05.2007
Яндекс Rambler's Top100

В избранное