Вопрос № 107365: Здраствуйте! У меня такой вопрос о паралельном программирование(так как сылки на такой вопрос я не нашел решил спросить здесь):
Мне сказали что паралельное программирование возможно только в ОС Unix, а windows не предназначена для этого(я лично с...Вопрос № 107378: Здраствуйте уважаемые экспериты!
У меня в программе содержится Процедура извлечения ресурсов из ехе'шника, после компиляции всей программы у меня выдфется такая ошибка [Linker ERROR]Unresolved external "WinMain" referenced from C:\Pr...Вопрос № 107385: Добрый день. Я новичек. Нужна помощь. Есть форма 1, в которой 2 кнопки, как сделать так, чтобы при нажатии 1-й кнопки осуществлялся преход к форме 2, причем формы 1 видно бы не было и также с помощью кнопки назад на форме 2 можно было бы
перейти обра...Вопрос № 107390: Добрый вечер уважаемые эксперты.Прошу у вас помощи в решении задачки.
Найти минимум функции x(в квадрате)+e(в степени -X) методом дихотомии....Вопрос № 107396: Драсьте уважвемые эксперты!
Помогите с кодом програмулины.
Дан двумерный массив. Необходимо развернуть его на или 90 градусов по часовой стрелке.
Заранее благодарен за ответ, Саша....Вопрос № 107403: Уважаемые эксперты, помогите пожалуйста решить!
Нужно составить программу, которая содержит информацию о сотрудниках. Сведения:
-фамилия;
-стаж работы;
-пол;
-год рождения;
-адрес;
Программа должна обеспечить:
-поиск и...Вопрос № 107426: Я сидел с часу до 6 пытаяся понять, как переменную из одного класса засунуть в другой. Помогите пожалуйста.
.Вопрос № 107433: надо сделать программку в MFC AppWizard(exe).там ее над сделать большую ну мне хотяб для примера...2 акошка Edit text и кнопка и чтоб при нажатии на кнопку число из 1 окошка умножалость на 2 и выводилось во 2 акошке.
Вот мне хотяб узнать как...
Вопрос № 107.365
Здраствуйте! У меня такой вопрос о паралельном программирование(так как сылки на такой вопрос я не нашел решил спросить здесь):
Мне сказали что паралельное программирование возможно только в ОС Unix, а windows не предназначена для этого(я лично счетаю это бредом), правда ли это?
Если нет то подскажите где можно взять инфо о паралельном програмирование на виндовс и что для этого надо? И вообще лучше побольше инфо о паралельном прог.
Спасибо!
Отправлен: 30.10.2007, 13:13
Вопрос задал: CruelHity (статус: 3-ий класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: SiRuS
Здравствуйте, CruelHity!
Почитайте про библиотеку MPICH. Она кроссплатформенная и довольно удобная. Речь идёт именно о распаралеливание задачь на несколько процессоров.
Приложение:
Ответ отправил: SiRuS (статус: 3-ий класс)
Ответ отправлен: 30.10.2007, 15:22 Оценка за ответ: 5 Комментарий оценки: Да про mpi у меня тоже есть такие книги на англ! Хотелось конечно бы на русском! но на этом сайте я тоже нашел для себя коечто интересное спс!
Я нашед что MPICH2 может работать по win32?
Отвечает: Гальцов Андрей Михаилович
Здравствуйте, CruelHity!
Всё о пареллельном программировании - http://www.intuit.ru/department/se/parallprog/
--------- Свобода слова это не стрась в комментах!...
Ответ отправил: Гальцов Андрей Михаилович (статус: Студент)
Ответ отправлен: 30.10.2007, 17:03 Оценка за ответ: 5 Комментарий оценки: Спасибо! Хоть как открыл первую лекцию и увидел пролог, то сказать что я был сильно удивлен это не сказать ничего)))))) но потом чуть пролистал в вперед и увидел там много интересной инфо. И за это спасибо!!!
Правда с ней разбираться и разбираться,(((
СПАСИБО еще раз!!
Очень здорово про параллельное программирование писал Джеффри РИХТЕР в книжке
"Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows". Особенно мне понравилось: "CreateThread - это Windows-функция, создающая поток. Но никогда не вызывайте ее, если Вы пишете код на С/С++. Вместо нее Вы должны использо вать функцию...". А далее очень-очень подробно объясняется, в чем проблема с майкросовтовской CreateThread и чем параллельное программирование в Win9* отличается от WinNT.
Ответ отправил: Зелик Колабухин (статус: 3-ий класс)
Ответ отправлен: 31.10.2007, 13:00 Оценка за ответ: 4 Комментарий оценки: Спасибо конечно! но Джеффри РИХТЕР как мне кажеться описывает многозадачное(многопоточное) програмирования а не параллельное!
Вопрос № 107.378
Здраствуйте уважаемые экспериты!
У меня в программе содержится Процедура извлечения ресурсов из ехе'шника, после компиляции всей программы у меня выдфется такая ошибка [Linker ERROR]Unresolved external "WinMain" referenced from C:\Program Files\Borland\CBUILDER6\LIB\COW32.OBj , подскажите пожайлуста может у меня чтото в синтаксисе не правильно, или процедуру не правильно описал, или её надо было включить в void main(){Моя процедура ....} ?
Отвечает: Mihail Yarlykov
Здравствуйте, Сваленский Дмитрий Александрович!
Вы создаёте приложение Win32, а оно должно иметь функцию WinMain в качестве точки входа. Вы же применяете старую функцию main.
Прототип функции:
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
Заменяем функцию void main() на:
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,
LPSTR lpcmdline, int ncmdshow){ ..... }
--------- Нет ничего невозможного!
Ответ отправил: Mihail Yarlykov (статус: 4-ый класс)
Ответ отправлен: 30.10.2007, 17:49 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за ответ, именно в этом и заключалась моя ошибка!!!
Вопрос № 107.385
Добрый день. Я новичек. Нужна помощь. Есть форма 1, в которой 2 кнопки, как сделать так, чтобы при нажатии 1-й кнопки осуществлялся преход к форме 2, причем формы 1 видно бы не было и также с помощью кнопки назад на форме 2 можно было бы перейти обратно к форме 1, ну и по аналогии такая же схема и ко 2-й кнопке на форме 1. Заранее спасибо.
Отправлен: 30.10.2007, 15:39
Вопрос задал: Isaev Den (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архипов Александр Леонидович
Здравствуйте, Isaev Den!
Перед открытием формы методом Show, надо скрыть текущую форму методом Hide.
Например:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Hide();
Form2->Show();
}
Приложение:
Ответ отправил: Архипов Александр Леонидович (статус: 7-ой класс)
Ответ отправлен: 31.10.2007, 09:29 Оценка за ответ: 5 Комментарий оценки: Большое спасибо. Обязательно сегодня попробую так сделать.
Отвечает: Чернов С.В.
Здравствуйте, Isaev Den!
Предыдущий ответчик прав!
Только заметьте, что вы при открытой Form2 вы спокойно можете получить доступ к Form1, чтобы избежать этого вместо Show пишите ShowModal, тогда пока вы не закроете Form2 вы не сможете получить доступ к Form1.
Тогда форму вы вызываете так Form2->ShowModal(); После выполнения действий в коде кнопки "Назад" пишете Form2->Close();
Ответ отправил: Чернов С.В. (статус: 1-ый класс)
Ответ отправлен: 31.10.2007, 10:05 Оценка за ответ: 5 Комментарий оценки: Спасибо. Обязательно учту этот немаловажный момент при написании программы.
Вопрос № 107.390
Добрый вечер уважаемые эксперты.Прошу у вас помощи в решении задачки.
Найти минимум функции x(в квадрате)+e(в степени -X) методом дихотомии.
Отправлен: 30.10.2007, 16:59
Вопрос задал: Pimp (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: V1s0r
Здравствуйте, Pimp!
http://subscribe.ru/archive/science.exact.math/200307/10003600.html
да и вообще google.ru нашёл пару тысяч ссылок
Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 30.10.2007, 17:11
Вопрос № 107.396
Драсьте уважвемые эксперты!
Помогите с кодом програмулины.
Дан двумерный массив. Необходимо развернуть его на или 90 градусов по часовой стрелке.
Заранее благодарен за ответ, Саша.
Отвечает: Воробьёв Алексей Викторович
Здравствуйте, Ivanischev Alexander Konstantinovich!
Если Вы внимательно посмотрите, то при повороте массива размера n на 90 по часовой происходит циклическая перестановка элементов:
[y][x] -> [x][n-1-y] -> [n-1-y][n-1-x] -> [n-1-x][y] -> [y][x]
Т.е. нам нужно просто реализовать эту перестановку для верхней левой четверти массива.
Трудность возникает при нечётных n. Тогда одна координата должна меняться до (n+1)/2, а вторая до (n-1)/2. Будем менять до (n+1)/2 координату x.
Используя то, как в С реализовано целочисленное деление мы должны ввести предел (n+1)/2 для х и n/2 для y. Итого,
for(int y = 0; y < n/2; ++y)
{
for(int x = 0; x < (n+1)/2; ++x)
{
int tmp = array[y][x];
array[y][x] = array[n-1-x][y];
array[n-1-x][y] = array[n-1-y][n-1-x];
array[n-1-y][n-1-x] = array[x][n-1-y];
array[x][n-1-y] = tmp;
}
}
Отвечает: CruelHity
Здравствуйте, Ivanischev Alexander Konstantinovich!
Вот еще один вариант со вторым массивом!
См приложения! Будут вопросы спрашивайте))))
Удачи!
Приложение:
Ответ отправил: CruelHity (статус: 3-ий класс)
Ответ отправлен: 30.10.2007, 19:03
Отвечает: Архипов Александр Леонидович
Здравствуйте, Ivanischev Alexander Konstantinovich!
Если есть массив x[n][m] и его надо привести к y[m][n] с поворотом первого на 90 градусов по часовой, то делается это в двух вложенных циклах
for (int i=0; i<m; i++)
for (int k=0; k<n; k++)
y[k][i] = x[i][k]
Уважаемые эксперты, помогите пожалуйста решить!
Нужно составить программу, которая содержит информацию о сотрудниках. Сведения:
-фамилия;
-стаж работы;
-пол;
-год рождения;
-адрес;
Программа должна обеспечить:
-поиск и распечатку данных о сотрудниках со стажем работы не менее 5 лет;
-изменение данных о сотрудника;
-удаление элементов (заданных);
-сортировку данных;
-вывод всего списка.
struct TData
{
char Surname [20];
unsigned int Staj;
int Pol;
int Year;
int Adres;
};
struct TRep
{
TData Data;
TRep * Next;
};
TRep * First = NULL;
unsigned int Staj = 5;
TRep * Find (char * Surname)
{
TRep * Current = First;
do
{
if (strcmp (Current->Data.Surname, Surname) == 0) return Current;
Current = Current->Next;
}
while (Current != First);
return NULL;
}
TRep * Prev (TRep * Elem)
{
TRep * Current = First;
while (Current->Next != Elem)
Current = Current->Next;
return Current;
}
void Show ()
{
char Surname [20];
cout<<"Enter a surname of a worker for finding: "; cin>>Surname;
TRep * Current = Find (Surname);
if (Current)
{
cout<<"
Surname of a worker: "<<Current->Data.Surname;
cout<<"
Staj of work: "<<Current->Data.Staj;
cout<<"
Pol of a worker: "<<Current->Data.Pol;
cout<<"
";
}
else cout<<"
Element not found.
";
}
void Del ()
{
char Surname [20];
cout<<"Enter a surname of a worker for finding: "; cin>>Surname;
TRep * Current = Find (Surname);
if (Current)
{
TRep * Previus = Prev (Current);
if (First == First->Next) First = NULL;
Previus->Next = Current->Next;
if (Current == First) First = Previus->Next;
cout<<"
Surname of a worker "<<Current->Data.Surname<<" was deleted.
";
delete Current;
}
else cout<<"
Element not found.
";
}
int AddFor (TData Data)
{
TRep * NewRecord = new TRep;
NewRecord->Data = Data;
if (NewRecord->Data.Staj < Staj)
{
if (First == NULL)
{
First = NewRecord;
NewRecord->Next = NewRecord;
}
else
{
TRep * Current = First;
do
{
if (strcmp (Current->Data.Surname, NewRecord->Data.Surname) > 0) break;
Current = Current->Next;
}
while (Current != First);
void Add ()
{
TData Data;
cout<<"Enter Surname of a worker: "; cin>>Data.Surname;
cout<<"Enter Staj of a worker: "; cin>>Data.Staj;
cout<<"Enter Pol of a worker: "; cin>>Data.Pol;
if (AddFor (Data) == 1) cout<<"
Surname "<<Data.Surname<<" was added.
";
}
void ShowAll ()
{
TRep * Current = First;
if (Current)
{
do
{
cout<<"Surname of a worker: "<<Current->Data.Surname;
cout<<"
Staj of a worker: "<<Current->Data.Staj;
cout<<"
Pol of a worker: "<<Current->Data.Pol;
cout<<"
";
Current = Current->Next;
}
while (Current != First);
}
else
cout<<"Qulul is empty.
";
}
int Quant ()
{
TRep * Current = First;
int quant = 0;
if (Current)
{
do
{
quant++;
Current = Current->Next;
}
while (Current != First);
}
return quant;
}
void main ()
{
FRd ();
int menu = 0;
while (menu!=5)
{
cout<<" Menu
0. Change max staj of a worker.
1. Add surname of a worker.
2. Delete surname of a worker.
3. Show surname of a worker.
4. Show all surnames of workers.
5. Exit.
What do you want: ";
cin>>menu; cout<<"
";
switch (menu)
{
case 0: cout<<"Enter new Staj: "; cin>>Staj; cout<<"
"; break;
case 1: Add (); break;
case 2: Del (); break;
case 3: Show (); break;
case 4: ShowAll (); break;
case 5: break;
deafault: cout<<"Incorrect input. Repeat.
";
}
}
FWt ();
}
Отвечает: Воробьёв Алексей Викторович
Здравствуйте, Svetapestova!
Вы что, пишете в слепую, без среды? Вы, тогда, гений!!! Ваша программа не компилилась, но требовала всего лишь 3 исправления:
1. #include <iostream> а не <iostream.h>
2. Нужно включать namespace:
using namespace std;
3. Опечатка в default.
Я особо не рассматривал, но есть ошибки. Я, например, попробовал действия 0 и 2.
0 сохраняет в какую-то локальную переменную, а должен созранять в First->Staj.
2 если нажать без предварительного добавления, то приводит к ошибке в методе Find, потому что First = NULL, а Вы пытаетесь сравнивать с Current->Data.Surname, где Current = First = NULL.
Я не очень понял, зачем Вам надо, чтобы последний элемент списка указывал на первый. По-моему лучше, чтобы он указывал на NULL, тогда цикл в Find, например, был бы проще:
for(TRep * Current = First; Current != NULL; Current = Current->Next)
{
if(strcmp (Current->Data.Surname, Surname) == 0)
{
break;
}
}
return Current;
Если это Вам нужно для удаления, то можно сначала проверить, что Current != First, а потом вызывать Prev.
Возможно, что есть и другие недочёты, но лучше, чтобы Вы подебаггили сами и спросили конкретные вопросы.
Я сидел с часу до 6 пытаяся понять, как переменную из одного класса засунуть в другой. Помогите пожалуйста.
Приложение:
Отправлен: 30.10.2007, 20:48
Вопрос задал: 12gty67kvp
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: SiRuS
Здравствуйте, !
Вам никто не мешает написать ф-ции-члены для обоих классов, возвращающие нужный вам класс. Ну или отдельную переменную класса.
Ответ отправил: SiRuS (статус: 3-ий класс)
Ответ отправлен: 30.10.2007, 22:37
Отвечает: Rockie
Здравствуйте, 12gty67kvp!
Можно было бы выложить свои попытки в коде, раз вы говорите что пытались :)
Засунуть объект класса можно точно также, как и другую переменную:
// реализация класса A
class A{
};
// реализация класса B, переменная типа A в классе B
class B{
public:
A a;
};
int main()
{
return 0;
}
Но нужно иметь ввиду, что реализация класса А должна быть известна
компилятору заранее. То есть если вы напишете такой код:
class A;
// реализация класса B, переменная типа A в классе B
class B{
public:
A a;
};
// реализация класса A
class A{
};
то вы получите ошибку C2079. Решить эту проблему можно, если инициализировать класс A заранее(вынести его в
H файл и делать include).
p.s.: А вообще, постарайтесь задавать вопрос конкретнее, тогда и вам быстрее помогут. Вот вам ссылка по теме:
"Как правильно задавать вопросы", статья
http://bugtraq.ru/forum/faq/general/smart-questions.html
Ответ отправил: Rockie (статус: 5-ый класс)
Ответ отправлен: 01.11.2007, 10:38
Вопрос № 107.433
надо сделать программку в MFC AppWizard(exe).там ее над сделать большую ну мне хотяб для примера...2 акошка Edit text и кнопка и чтоб при нажатии на кнопку число из 1 окошка умножалость на 2 и выводилось во 2 акошке.
Отвечает: CruelHity
Здравствуйте, Артемьев Артем Николаевич!
Вообще способов очень много! Например через мастера можно присвоить к переменым CEditBox значение int! Потом просто умножаете их и выводите спомощью функции SetWindowText!
в приложении пример(при нажатии кнопки) когда я создал на для этих двух окошкек control переменые(через master Wizard). Думаю как с мастером работать вас учить не надо! Но если что спрашиваете!
Удачи!
Приложение:
Ответ отправил: CruelHity (статус: 3-ий класс)
Ответ отправлен: 30.10.2007, 22:19 Оценка за ответ: 4