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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 981
от 30.01.2008, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 479, Экспертов: 59
В номере:Вопросов: 10, Ответов: 15

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 119927: Здравствуйте, коллеги! Приведите пример организации массива из элементов типа CheckBox и выполнения с ними какого-либо действия, например реакции на установку флажка в одном из них. Просто запутался и хочу понять принцип. С обычными массивами все...
Вопрос № 120008: Здравствуйте уважаемые эксперты помогите решить пажалуста Matrix49. Дана матрица размера M ґ N. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке. ...
Вопрос № 120009: Здравствуйте уважаемые эксперты помогите решить пажалуста Matrix62. Дана матрица размера M ґ N и целое число K (1<= K <=N). Удалить столбец матрицы с номером K. ...
Вопрос № 120011: Здравствуйте уважаемые эксперты помогите решить пажалуста Matrix77. Дана матрица размера M ґ N. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность. ...
Вопрос № 120012: Здравствуйте уважаемые эксперты помогите решить пажалуста Matrix87. Дана квадратная матрица A порядка M. Найти максимальный элемент для каждой ее диагонали, параллельной побочной (начиная с одноэлементной диагонали A1,1). ...
Вопрос № 120013: Здравствуйте уважаемые эксперты помогите решить пажалуста Matrix90. Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие на побочной диагонали и ниже нее. Условный оператор не использовать. ...
Вопрос № 120041: Здравствуйте, можете помочь с решением задачи на с++. Вот условие Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 10 на 1...
Вопрос № 120052: Привет. Не подскажете как под WIN32 можно работать со спикером? (Есть С++Builder 6, Visual Studio NET) Раньше был Borland C++ 5 (Старый, еще под DOS мона было писать), так вот там были функции 'sound()' И 'nosound()', а как енто сдел...
Вопрос № 120055: Здравствуйте! Подскажите как сделать доступной переменную из одной фукции в другой функции? есть две фукнции: 1) void __fastcall TForm1::Button2Click(TObject *Sender) { float pdk[3][21]={{4,15,26,37,43,58,2,19,25,34,46,51,20,2...
Вопрос № 120082: Здраствуйте уважаемые эксперты.Нужна Ваша помощь.В компе есть один *.log файл. Со временем в этот *.log файл приходит (новые) логи .В среде этих логов моей программе нужно толко одно слова PIC000.pcx (Это имя картинки , и их всего 241 шт.)....

Вопрос № 119.927
Здравствуйте, коллеги!
Приведите пример организации массива из элементов типа CheckBox и выполнения с ними какого-либо действия, например реакции на установку флажка в одном из них. Просто запутался и хочу понять принцип. С обычными массивами все просто, а вот с массивами таких объектов мне не совсем понятно как работать. На всякий случай, среда разработки Borland C++ Builder 6.0.
Заранее всем спасибо!


-----
∙ Отредактировал: Зенченко Константин Николаевич (Профессионал)
∙ Дата редактирования: 24.01.2008, 14:54
Отправлен: 24.01.2008, 11:41
Вопрос задал: NAP (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Сандров Алекс
Здравствуйте, NAP!

Если не вязяться на среду разработки, то любой элемент окна или диалога - тоже окно.

То есть надо забабахать массив из окон, например 5 штук:

HWND ahWnd[5];
(причём в этом случае, у нас могут это быть и чекбоксы и едитбоксы и всё что угодно)

Далее, чтобы создать сам чекбокс, надо позвать функцию CreateWindow (или CreateWindowEx) c именем класса "BUTTON" и стилем BS_CHECKBOX.

В Билдере всё проще(как и в MFC), там есть классы CButton (CCheckBox поди тоже есть)
Вот надо массив их сделать, а потом вызывать методы Create:

Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

В приложении код для Win32API.

Приложение:

Ответ отправил: Сандров Алекс (статус: 2-ой класс)
Ответ отправлен: 24.01.2008, 12:07

Отвечает: Xeladen
Здравствуйте, NAP!
Если честно, я давно не писал в BCB но это возможно сработает:
TCheckBox chbx[5];
chbx[0] = new TCheckBox;
chbx[0].x=0;
chbx[0].y=9;
chbx[0].Caption = "testing";
chbx[0].Show();
//и т.д.
Ответ отправил: Xeladen (статус: 1-ый класс)
Ответ отправлен: 24.01.2008, 14:36

Отвечает: Архипов Александр Леонидович
Здравствуйте, NAP!
В приолжении мой вариант решения подобной задачи. Но, при подобном подходе при больших количествах объектов комп может тормозить... если он конечно слабоват - это из-за памяти.

Приложение:

Ответ отправил: Архипов Александр Леонидович (статус: Студент)
Ответ отправлен: 25.01.2008, 05:36


Вопрос № 120.008
Здравствуйте уважаемые эксперты помогите решить пажалуста
Matrix49. Дана матрица размера M ґ N. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке.

Отправлен: 24.01.2008, 20:13
Вопрос задал: Razum89 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Razum89!
Вот мой вариант решения данной задачи:

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 24.01.2008, 20:28


Вопрос № 120.009
Здравствуйте уважаемые эксперты помогите решить пажалуста
Matrix62. Дана матрица размера M ґ N и целое число K (1<= K <=N). Удалить столбец матрицы с номером K.

Отправлен: 24.01.2008, 20:14
Вопрос задал: Razum89 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Razum89!
Вот программка, которая удаляет заданный столбец матрицы:

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 24.01.2008, 20:22
Оценка за ответ: 5


Вопрос № 120.011
Здравствуйте уважаемые эксперты помогите решить пажалуста
Matrix77. Дана матрица размера M ґ N. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.

Отправлен: 24.01.2008, 20:16
Вопрос задал: Razum89 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Razum89!
Вот вам программа, пожалуйста.

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 25.01.2008, 12:41
Оценка за ответ: 5


Вопрос № 120.012
Здравствуйте уважаемые эксперты помогите решить пажалуста
Matrix87. Дана квадратная матрица A порядка M. Найти максимальный элемент для каждой ее диагонали, параллельной побочной (начиная с одноэлементной диагонали A1,1).

Отправлен: 24.01.2008, 20:17
Вопрос задал: Razum89 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Razum89!
Не самое оптимальное решение задачи, тем не менее, рабочее:

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 24.01.2008, 21:23
Оценка за ответ: 5


Вопрос № 120.013
Здравствуйте уважаемые эксперты помогите решить пажалуста
Matrix90. Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие на побочной диагонали и ниже нее. Условный оператор не использовать.

Отправлен: 24.01.2008, 20:18
Вопрос задал: Razum89 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Razum89!
Вот пожалуйста.
Если мне не изменяет память, кто-то у меня уже спрашивал эту программу...

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 24.01.2008, 22:32
Оценка за ответ: 5


Вопрос № 120.041
Здравствуйте, можете помочь с решением задачи на с++.
Вот условие
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 10 на 10.
Найти сумму модулей элементов, расположенных выше главной диагонали.
Отправлен: 25.01.2008, 00:20
Вопрос задал: Томилов Станислав Степанович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Попов А.С.
Здравствуйте, Томилов Станислав Степанович!

#include <cstdlib>
#include <iomanip>
#include <math.h>
#include <iostream>
#define N 10
using namespace std;

int main(int argc, char *argv[])
{
int a[N][N];
bool t,b,l,r;
int sum=0;
int num=0;
srand(time(NULL));

for(int i=0; i<N; ++i){
for(int j=0; j<N; ++j){
a[i][j]=rand()%100-50;
cout<<setw(4)<<a[i][j];}
cout<<endl;}

for(int i=0; i<N; ++i)
{
for(int j=0; j<N; ++j){
t=b=l=r=false;

if( i<j ) sum+=fabs((float) a[i][j]); // элементы выше глав. диагонали

if(i==0) t=true;
else if(a[i][j] < a[i-1][j]) t=true; //сравнение с элем. сверху

if(i==N-1) b=true;
else if(a[i][j] < a[i+1][j]) b=true; //сравнение с элем. снизу

if(j==0) l=true;
else if(a[i][j] < a[i][j-1]) l=true; //сравнение с элем. слева

if(j==N-1) r=true;
else if(a[i][j] < a[i][j+1]) r=true; //сравнение с элем. справа

if( t && b && l && r){ cout<<endl<<"element a["<<i<<"]["<<j<<"]=="<<a[i][j]
<<" is local min";
num++;} // кол-во локальн. миним.
}
}

cout<<endl<<"Total: "<<num<<" elements";
cout<<endl<<"Summa: "<<sum;
cout<<endl;
system("PAUSE");
return 0;
}

Ответ отправил: Попов А.С. (статус: 7-ой класс)
Ответ отправлен: 25.01.2008, 12:01


Вопрос № 120.052
Привет.
Не подскажете как под WIN32 можно работать со спикером?
(Есть С++Builder 6, Visual Studio NET)
Раньше был Borland C++ 5 (Старый, еще под DOS мона было писать),
так вот там были функции 'sound()' И 'nosound()', а как енто сделать на
вышеперечисленных средах(Какие функции использовать, и в каком "include" их прототип)?
Кстати в Borland C++5 в свойствах проекта хоть и писал DOS Standart
приложение, а прога все-равно работала под Windows XP !??

Как прогу в приложении скомпилить под WIN32?

Приложение:

Отправлен: 25.01.2008, 04:20
Вопрос задал: DEVILL (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Попов А.С.
Здравствуйте, DEVILL!
Попробуйте winapi функцию BOOL WINAPI Beep(DWORD H, DWORD K)
где H-частота(герцы) K-длительность(мс)
ps не забудьте подключить shellapi.h
Ответ отправил: Попов А.С. (статус: 7-ой класс)
Ответ отправлен: 25.01.2008, 11:16


Вопрос № 120.055
Здравствуйте!
Подскажите как сделать доступной переменную из одной фукции в другой функции?
есть две фукнции:
1)
void __fastcall TForm1::Button2Click(TObject *Sender)
{
float pdk[3][21]={{4,15,26,37,43,58,2,19,25,34,46,51,20,27,35,45,54,29,32,49,40},{5,16,21,38,41,59,3,20,27,35,44,56,26,36,47,55,28,33,46,30,50},{6,17,21,31,42,60,4,22,39,45,51,28,36,48,57,27,37,47,56,29,34}};

}
2)
struct raschet_gist *gist (int r, int Numm) {
int i,j;
float dmax=pdk[0][0];
float dmin=pdk[0][0];
float num,w;
for (i=0; i<Numm; i++) {
if (pdk[r][i]>dmax) {dmax=pdk[r][i];}
if (pdk[r][i]<dmin) {dmin=pdk[r][i];}
}
rezult_gist.dmin=dmin;
....
return &rezult_gist;
}
соотвесвтвенно вторая фукнция ругается, что не знает что такое:pdk[r][i]
Данную величину pdk[r][i] мы получаем в первой функции...а как сделать ее видимой во второй функции?
Отправлен: 25.01.2008, 07:16
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Сандров Алекс
Здравствуйте, Mart!

1. Объявить её вне функции, как глобальную.
2. Cделать переменной в классе TForm1

class TForm1
{
...
float pdk[3][21]; // правда заполнять её придётся в конструкторе TForm1

1. Тогда её будет видно по всюду (в рамках модуля; для выноса её в другие модули нужно объявить её как extern в хэдере, но это не совсем красивый способ)
2. Передавать указатель на TForm1 в функции и там через него достучаться до переменной (она должна быть public)

struct raschet_gist *gist (int r, int Numm, TForm1 *pMyForm)
{
...
float dmax=pMyForm->pdk[0][0];
...
}
Ответ отправил: Сандров Алекс (статус: 2-ой класс)
Ответ отправлен: 25.01.2008, 07:26

Отвечает: Dr_Andrew
Здравствуйте, Mart!
Вы объявили массив в обработчике события нажатия на кнопку. Это приводит к тому, что объявленный массив уничтожается при завершении работы функции-обработчика. Для того, чтобы этого не происходило, необходимо объявить массив в зоне видимости, доступной для всех компонентов формы. Наиболее быстрый, но грубый подход - объявить массив глобально. Более правильный вариант - объявить массив в качестве открытого (public) члена класса TForm1в заголовочном файле формы.
Ответ отправил: Dr_Andrew (статус: 5-ый класс)
Ответ отправлен: 25.01.2008, 07:36

Отвечает: Архипов Александр Леонидович
Здравствуйте, Mart!
Всё дело в том, что переменная, объявленная в блоке {} видна и действует пока выполняется этот блок. Я вижу несколько вариантов решения данной проблемы. Вот несколько:
1. Можно объявить глобальную переменную:
float pdk[3][21];
void __fastcall TForm1::Button2Click(TObject *Sender)
{
pdk[3][21]={{4,15,26,37,43,58,2,19,25,34,46,51,20,27,35,45,54,29,32,49,40},{5,16,21,38,41,59,3,20,27,35,44,56,26,36,47,55,28,33,46,30,50},{6,17,21,31,42,60,4,22,39,45,51,28,36,48,57,27,37,47,56,29,34}};
}
Тогда этот массив будет виден везде, а присваиваться значения будут только по клику 2 кнопки.

2.
Можно объявить этот массив как extern в пределах блока:
extern float pdk[3][21]=...
тогда этот массив будет виден всегда и везде, пока работает вся программа. Причём, не только в этом модуле, но и в других модулях (конечно, если они у Вас есть)...
Ответ отправил: Архипов Александр Леонидович (статус: Студент)
Ответ отправлен: 25.01.2008, 07:41


Вопрос № 120.082
Здраствуйте уважаемые эксперты.Нужна Ваша помощь.В компе есть
один *.log файл. Со временем в этот *.log файл приходит (новые) логи .В среде этих логов моей программе нужно толко
одно слова PIC000.pcx (Это имя картинки , и их всего 241 шт.). Мне надо написать такую программу
чтобы это программа смогла читат этот *.log файл ,определил имя файла картинки (PIC000.pcx или PIC241.pcx или...),
зависима от имени *.pcx файла воспроизвел ему подобную *.mpg файл. Вопрос:
1.Можно ли в "Borland C++ Builder 6" написать обработчик событый для *.log файла - (OnChange -при изменении *.log файла)?
Если да то обясните пожалуйста как, если нет то у меня есть второй вопрос. :)
2.Можно этот *.log Файл открыт в компоненте RichEdit, и исползоват событию OnChange компонента RichEdit.
Но мне надо чтобы при каждом изменении оригинала (файла *.log) изменился RichEdit->Lines автоматический.
Не знаю как делать :(

Помогите пожалуйста. За ранее благодарен.
Отправлен: 25.01.2008, 10:19
Вопрос задал: Зейналов Сабир (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сандров Алекс
Здравствуйте, Зейналов Сабир!

Я в своё время делал проверку "свежести" файла через таймер, то есть заводил
SetTimer(hWnd, uiEvent, uiPeriod, NULL);

и по WM_TIMER читал файлы через FindFirstFile и FindNextFile
у этих двух есть параметр-структура
LPWIN32_FIND_DATA
который содержит поле ftLastWriteTime;
по этому полю можно понять, когда последний раз файл перезаписывали.

При открытии файла в ричедите синхронизации между ричедитом и файлом нету (может в новых версиях и есть)

Есть ещё вариант, через драйвера следить за изменением файлов. Сам не пробовал, проект с исходниками есть на www.sysinternals.com (FileMon)

Ответ отправил: Сандров Алекс (статус: 2-ой класс)
Ответ отправлен: 25.01.2008, 12:41
Оценка за ответ: 4
Комментарий оценки:
Спасибо тебе Алекс за ответ.

Отвечает: kool
Здравствуйте, Зейналов Сабир!
Нужно создать отдельный поток для ожидания изменений файла
и использовать для отслеживания этих изменений ф-цию
FindFirstChangeNotification и сопутствующие ей (WaitForSingleObject,
FindCloseChangeNotification ....).
Удачи!

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


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


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

В избранное