Вопрос № 58511: MS Visual C++
Я столкнулся с проблемой. При считывании с текстового файла переменной n (смотрите в приложении) он считывает код символа, а не переводит ее в числовой ('5' = 53 и тому подобное). Как правильно считать с текстового файла информацию,...Вопрос № 58536: Здравствуйте Эксперты.
У меня есть 5-ть потоков каждый поток выводит свой номер(1-5) мне нужно их синхронизовать чтобы выводилась последовательность всегда одинаковая 1,2,3,4,5. Синхронизовать с помощью симафора. Пошарился в нете нашел пару приме...Вопрос № 58566: Доброе время суток!
Подскажите плз где можно скачать русский msdn
если его нет дайте плз ссылку на инсталяцию последней его версии английской!
благодарю!...
Вопрос № 58.511
MS Visual C++
Я столкнулся с проблемой. При считывании с текстового файла переменной n (смотрите в приложении) он считывает код символа, а не переводит ее в числовой ('5' = 53 и тому подобное). Как правильно считать с текстового файла информацию, если известно, что ее значение в диапазоне 0..255?
Отвечает: Хватов Сергей
Здравствуйте, Pranovich Ivan Vladimirovich!
Если вы читаете в переменную типа char, туда действительно считывается символ (на самом деле байт - это существенно если у вас не однобайтная кодировка), если в int, то - число, представленное в файле в символьном виде.
При выводе производятся обратные действия, и хотя вы смело можете работать с переменной n как с числом, то при выводе вы получите опять символ. Если вам нужно вывести код - преобразуйте его в int
Приложение:
Ответ отправил: Хватов Сергей (статус: 6-ой класс)
Ответ отправлен: 11.10.2006, 14:03 Оценка за ответ: 5
Отвечает: Mystic
Здравствуйте, Pranovich Ivan Vladimirovich!
Дело в том, что перегруженная версия оператора >> для типа char считывает символ и сохраняет в нее ее код, в этом случае char не считается числовым типом данных. Для считывания числа используйте один из числовых типов (short, int, long ...)
Ответ отправил: Mystic (статус: 1-ый класс)
Ответ отправлен: 11.10.2006, 22:53 Оценка за ответ: 4
Вопрос № 58.536
Здравствуйте Эксперты.
У меня есть 5-ть потоков каждый поток выводит свой номер(1-5) мне нужно их синхронизовать чтобы выводилась последовательность всегда одинаковая 1,2,3,4,5. Синхронизовать с помощью симафора. Пошарился в нете нашел пару примерчиков но не до конца понимаю как это сделать. Раскажите принцип и если покажите пример кода буду очень благодарен. Builder C++ 6.0
Отправлен: 11.10.2006, 17:03
Вопрос задал: Gray (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergey A. Wedensky
Здравствуйте, Gray!
Думаю, можно поступить так.
1. В каждом потоке создаем семафор с начальным и максимальным значениями счетчика, равными количеству потоков (т.е. создаем, конечно, в первом, который успеет, остальные получат дескриптор имеющегося).
2. Далее ждем.
После возврата функции WaitForSingleObject счетчик семафора уменьшается на 1.
3. Получаем значение счетчика (при этом, правда, придется его увеличить обратно на 1).
Если значение равно (количеству потоков минус номер потока), можно выводить свой номер (->5).
4. Если нет, снова ждем (->2).
5. Еще раз ждем, чтобы уменьшить счетчик (мы ведь его увеличили при вызове ReleaseSemaphore). Выводим номер.
А условие в (3) будет выполнено, только когда всем потокам с меньшим номером уже удалось пробиться.
Должно работать, как кажется, правда не проверял...
Удачи!
Приложение:
Ответ отправил: Sergey A. Wedensky (статус: 5-ый класс)
Ответ отправлен: 11.10.2006, 18:19 Оценка за ответ: 5 Комментарий оценки: Спасибо буду разбираться.
Вопрос № 58.566
Доброе время суток!
Подскажите плз где можно скачать русский msdn
если его нет дайте плз ссылку на инсталяцию последней его версии английской!
благодарю!
Отправлен: 11.10.2006, 21:14
Вопрос задал: sexy (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Madproger
Здравствуйте, sexy!
Русскую версию ты навряд ли найдешь
Если только частично он-лайн на www.rsdn.ru
А вот последняя английская версия
http://www.microsoft.com/downloads/details.aspx?familyid=373930CB-A3D7-4EA5-B421-DD6818DC7C41&displaylang=en
--------- И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 9-ый класс)
Ответ отправлен: 11.10.2006, 21:47