Здравствуте! Я Гомер. Мой вопрос таков: Есть, к примеру, два связанных списка (чистый С). Один к примеру _танки_, другой _рокеты_, дык вот, в чем проблема: запускаем цикл по _танкам_, и проверяем, например, столкновения - зашибись - работает, цикл с _рокетами_ - толкаются :). А как, вообщем, грамотно грамотно написать проверку столкновений _танков_, _ракет_ и .т.п.???
Доброе время суток, Homer! Попробуй через хэш-списки грамотнее будет, а в качестве хэш функции выбери, что то определяющее положение танка, чтобы лишний перебор не делать. Ответ отправлен: 01.04.2003, 03:04 Отправитель: DiGiT[old] Отвечает Yuri Gordienko
Здравствуйте, Homer! Используй класс std::map(это С++, но для тебя, я думаю, сгодится). В этом классе поиск ведется по ключу, что достаточно быстро. Ключ для твоего конкретного примера будет структура с координатами. На будущее: задавай конкретный вопрос, а не абстракцию из танков и ракет, - мы все-таки не танкисты и не ракетчики :) Удачи
Ответ отправлен: 04.04.2003, 10:22 Отправитель: Yuri Gordienko
Вопрос № 665
Здравствуйте. Как в NT завершить сервис? Стандартным способом через TerminateProcess не удается, так как сервисы не используют WinApi.
Здравствуйте, Marouder! Для этого надо использовать ControlService с параметром SERVICE_CONTROL_STOP, правда не всякий сервис и не сразу можно остановить. Надо, чтобы были соответствующие права(SERVICE_STOP) при получении handlе'а. С уважением, Avl2k. Ответ отправлен: 02.04.2003, 19:02 Отправитель: Avl2k
Вопрос № 666
Здравствуйте, уважаемые эксперты! Извиняюсь заранее за беспокойство.Задача у меня наипростейшая - я это знаю, но с циклами я не лажу. Надо в квадратной матрице напечатать индексы всех элементов, каждый из которых является одновременно наименьшим в своей строке и наибольшим в своем столбце. Насколько я поняла в принципе может быть только одно число, удовл. этим условиям.Очевидно, после нахождения наименьшего в строке надо искать В ТОМ же столбце наибольшее. Как запомнить столбец? Еще один вопросик, если не возражаете... Допустим, надо построить массив из некоторых элементов, которые находятся в процессе вычислений. Размер массива изначально задать нельзя, т.к. неизвестно из скольких элементов он будет состоять. Как можно передать размер массива, чтобы не возникало ошибки? int *p mas = new int[]?
Добрый день, Ольга! см. приложение /*находит минималъный элемент в строке и возвращает индекс колонки */ int MinInRow(float** matr, int MatrSize , int nRowIndex, int& nMinElement) { int nCol = 0; nMinElement = matr[nRowIndex][nCol]; for( int i = 1; i < nMatrSize; i++ ) { if( matr[nRowIndex][i] < nMinElement ) { nMinElement = matr[nRowIndex][i]; nCol = i; } } return nCol; } /* находит максимальный элемент в колонки и возвращает индекс строки */ int MaxInCol(float** matr, int nMatrSize, int nColIndex, int& nMaxElement) { int nRow = 0; nMaxElement = matr[0][nColIndex]; for( int i = 1; i < nMatrSize; i++ ) { if( matr[i][nColIndex] > nMaxElement ) { nMaxElement = matr[i][nColIndex]; nRow = i; } } return nRow; } void main() {
float ** matr = new float*[3]; for( int i = 0; i < 3; i++ ) { matr[i] = new float[3]; } for( i = 0;i < 3;i++ ) for( int j = 0; j < 3; j++) cin>>matr[i][j]; for( i = 0; i < 3; i++ ) { int nRowMin, nColMax; int nCol = MinInRow((float**)matr, 3, i, nRowMin); int nRow = MaxInCol((float**)matr, 3, nCol, nColMax); if( nRowMin == nColMax ) { cout << "Found element at row[" << i << "], column[" << nCol << "] : " << nRowMin << endl; } } }
Ответ отправлен: 01.04.2003, 14:29 Отправитель: Ramzes
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.