Вопрос № 113927: Здравствуйте!
Оглашу следующую просьбу: мне нужно написать программу на C/C++ под Linux с распределённым временем , в частности крестики нолики.
Проблема в том , что я точно не знаю какие сишные библиотеки работают в Linux Mandriva(знаю, что ...Вопрос № 113944: Здравствуйте!
Да среда C++ Builder6. Я написал следущий код ( см. Приложение ).
Если позапускать этот код под ряд раз 10, можно увидеть что повторяются одни и те же числа. Например, я запустил следующий код 7 раз к ряду, из них 4 раза под рад...Вопрос № 113962: Уважаемые эксперты, Я столкнулся с трудностью реализации побитового циклического сдига в числе. Помогите пожалуйста с решением данного вопроса....Вопрос № 113965: Здравствуйте, уважаемые эксперты!
Вопрос в следующем: как сделать так, чтобы callback-функция СИ-шной библиотеки вызывала метод класса-обёртки, причём без каких-либо дополнительных действий со стороны пользователя класса?
Теперь подробне...Вопрос № 113999: Даны целые числа массива А[10],В[10]изначения P и Q.
Каждый массив преобразовать по правилу: компотенты с четными номерами,
предшествующие наибольшему компоненту6 ма6ссива, заменить на значение
R (для массива А) и значение F (для масси...Вопрос № 114003: Как осуществить С++ под Linux поиск USB флешек для записи на них? Спасибо!...Вопрос № 114073: Помогите пожалуйста написать задачу на Visual Studio C++;
...
Вопрос № 113.927
Здравствуйте!
Оглашу следующую просьбу: мне нужно написать программу на C/C++ под Linux с распределённым временем , в частности крестики нолики.
Проблема в том , что я точно не знаю какие сишные библиотеки работают в Linux Mandriva(знаю, что нет <conio.h>), поэтому графическим интерфейсом лучше не пользоваться- лучше в текстовом.
собственно просьба в следующем- кто занимался(занимается) программированием под линуху, расскажите как выйти из ситуации , приведите примеры , если есть ссылки на полезные ресурсы ;))).
Спасибо.
Отвечает: Лясин Александр Владимирович
Здравствуйте, Иванов Фёдор Фёдорович!
Всё зависит от того - какие ф-ии собираетесь использовать.
Замена getch на getchar и установка ( если не установлена) библиотеки ncurses Вам может частично помочь.Не забудьте в опциях компилятора включить ключ -lcurses (если пользуетесь gcc) и перед использованием ф-ии из этой библиотеки используйте initscr().
Ну и главное - man ncurses.
Кстати - почему не хотите пользоваться графическим интерфейсом? Воспользуйтесь Qt, это мощьная, ОТКРЫТАЯ, отлаженная и несложная в освоении библиотека. Да и документация исчерпывающая. Находится здесь (хотя скорее всего Вам это известно - на всякий случай) http://www.trolltech.org
Ответ отправил: Лясин Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 14.12.2007, 08:49 Оценка за ответ: 4 Комментарий оценки: Спасибо за "теоретическую помощь", но ответ не исчерпыват проблемы самого программирования(алгоритм), то есть в ответе не зартонута прсктическая часть: меня интересует програама(желательно скодом :) )
Вопрос № 113.944
Здравствуйте!
Да среда C++ Builder6. Я написал следущий код ( см. Приложение ).
Если позапускать этот код под ряд раз 10, можно увидеть что повторяются одни и те же числа. Например, я запустил следующий код 7 раз к ряду, из них 4 раза под рад выпало число 94 за тем какие-то др. По теории вероятности это немножко нето что надо. В этом и заключается её отвратительность. Здесь я оговорюсь, что эту прогу я запускал только на C++ Builder6, не знаю как в др. средах дела обстоят.
А вообще мне надо написать программу которая способна выдавать случайные числа
в промежутке [ 0, 10^30 ] - вообще задача не такая простая как кажется на первый взгляд. Тип double использовать нельзя. Я прямо не знаю что делать с этим делать, с такой-то случайностью.
Отвечает: Лясин Александр Владимирович
Здравствуйте, Глымов Антип!
По поводу ф-ии random - согласен - нет ничего идеального, не лучшая ф-ия из подобных.
Но Вы могли бы использовать её для написания своей. Вам ведь никто не мешает использовать её несколько раз и использовать совместно с ф-цией GetLocalTime и
struct SYSTEMTIME.
Ответ отправил: Лясин Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 14.12.2007, 09:11 Оценка за ответ: 5
Отвечает: Sergey A. Wedensky
Здравствуйте, Глымов Антип!
Советую почитать раздел, посвященный генерации (псевдо)случайных чисел на http://algorithm.narod.ru/random/.
Там приведены описания ряда алгоритмов, как быстрых и "грязных", так и более сложных, но математически точных с исходными кодами на C.
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 14.12.2007, 09:44 Оценка за ответ: 5
Отвечает: kool
Здравствуйте, Глымов Антип!
При таких условия придется писать самому
генератор случайных чисел, поскольку rand()
возвращает значения из диапазона [0,2^32]
в зависимости от компилятора.
У вас 10^30~2^100
Для создания такого генератора можно использовать функцию rand()
четырежды (в зависимости от компилятора)
Генерерируем три псевдослучайных числа из диапазона [0,2^32]
Как это делать надеюсь объяснять не нужно - есть в MSDN.
Итак получаем три 32-битных числа (2^32)^3=2^96 < 10^30
Первые три числа выводим, а четвертое генерируем из диапазона [0,10^30 >> 96]
(Этот интервал эквивалентен интервалу [0,12] (10^30/2^96=12)) и теперь получили
нужное число из вашего диапазона.
(>> - это битовый сдвиг на 96 бит, что эквивалентно приведению по модулю 2^96)
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 14.12.2007, 11:23 Оценка за ответ: 5
Вопрос № 113.962
Уважаемые эксперты, Я столкнулся с трудностью реализации побитового циклического сдига в числе. Помогите пожалуйста с решением данного вопроса.
Отвечает: Sergey A. Wedensky
Здравствуйте, Иванов Антон Вячеславович!
В хэдере <stdlib.h> определены функции побитового сдвига:
unsigned int _rotl(unsigned int value, int shift);
unsigned __int64 _rotl64(unsigned __int64 value, int shift);
unsigned int _rotr(unsigned int value, int shift);
unsigned __int64 _rotl64(unsigned __int64 value, int shift);
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 14.12.2007, 11:33 Оценка за ответ: 4
Отвечает: kool
Здравствуйте, Иванов Антон Вячеславович! Циклический сдвиг байта x на i-бит вправо x=(x << (8-i))|(x >> i ); Аналогично влево x=(x >> (8-i))|(x << i );
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 14.12.2007, 11:35
Вопрос № 113.965
Здравствуйте, уважаемые эксперты!
Вопрос в следующем: как сделать так, чтобы callback-функция СИ-шной библиотеки вызывала метод класса-обёртки, причём без каких-либо дополнительных действий со стороны пользователя класса?
Теперь подробнее.
Есть Сишная библиотека BASS и есть желание сделать класс-обёртку в QT4. Всё прекрасно получается кроме одного: не получается сделать callback-функцию, которая-бы вызывала метод этого класса. Пробовал как в приложении - в простейшей тестовой проге работало, в другой перестало, да и сам чую, что неправильно это... Читал интернет - сложные конструкции и требуют написания дополнительных классов и создания их экземпляров в программе, что мне кажется неудобным. Может есть ещё способы?
Отвечает: V1s0r
Здравствуйте, Сергей Владимирович!
Почему же неправильно? Это должно работать... Ваш код - одна из стандартных ситуаций с передачей указателя на класс с последующим его восстановлением. Например, это используется в билиотеках FLAC, Newton. Да и вообще среди C-библиотек весьма распространённое явление. Можно попробовать сделать Вашу функцию-обработчик закрытым статическим членом в классе. Но это сильно не поможет (кроме открытия доступа к закрытым членам).
Тип функции, который принимает BASS_ChannelSetSync - SYNCPROC*. Это указатель на функцию с определённым числом параметров и определёнными типами. Как же ещё по другому сделать?
Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 14.12.2007, 13:15 Оценка за ответ: 5 Комментарий оценки: Значит я на правильном пути.. Дело в том, что функция выполняется, отладчиком я её по шагам прохожу, но почему-то событие не выстреливает.. Будем думать!
Вопрос № 113.999
Даны целые числа массива А[10],В[10]изначения P и Q.
Каждый массив преобразовать по правилу: компотенты с четными номерами,
предшествующие наибольшему компоненту6 ма6ссива, заменить на значение
R (для массива А) и значение F (для массива В).
Считать, что в каждом массиве наибольший компонент единственный.
помогите и это решить ПЛИззз -НО только с помощью ФУНКЦии ,
надеюсь на вашу безграничную мудрость =_)
Отправлен: 14.12.2007, 15:30
Вопрос задал: Den Ben A (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ross
Здравствуйте, Den Ben A!
Держи (пример использования в приложении)
void ReplaceAllEvenNumbersBeforeMax(int M[10],int ReplaceWith)
{
int Max = M[0], nMax = 0,i = 0;
for (i = 0; i < 10; ++i)
{
if (M[i] > Max)
{
Max = M[i]; nMax = i;
}
}
for (i = 0; i < nMax; ++i)
{
if (!(i%2))
M[i] = ReplaceWith;
}
}
Приложение:
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 16.12.2007, 02:31 Оценка за ответ: 4
Вопрос № 114.003
Как осуществить С++ под Linux поиск USB флешек для записи на них? Спасибо!
Отправлен: 14.12.2007, 15:40
Вопрос задал: Сергей - - (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Mitya86
Здравствуйте, Сергей - -!
Подключение флешэк осуществляется самой системой, за это отвечает разные .conf файле в /etc каталоге(вроде бы), т.е. ручками один раз надо настроить. А запись на них, как на любой дргой носитель.
Изучай API линуховский, т.к. для него нет своего мсдн'а, то ковыряйся на соответствующих форумах.
Уж прости за такой куцый ответ, больно уж тема редкая и неизведанная(мною).
Ответ отправил: Mitya86 (статус: 3-ий класс)
Ответ отправлен: 14.12.2007, 18:30
Вопрос № 114.073
Помогите пожалуйста написать задачу на Visual Studio C++;
Приложение:
Отправлен: 14.12.2007, 21:23
Вопрос задал: Radical (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: V1s0r
Здравствуйте, Radical!
С помощью STL с этим заданием справиться проще и быстрее всего.
Суть программы: создание строкового потока, настройка потокового итератора на него и прогон через стандартный алгорим accumulate. Никакой коррекции ошибок нет (с этим Вы сами справитесь), строка с числами передаётся программе через коммандную строку. В данном виде программа работает и с отрицательными целыми.