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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 58
от 08.03.2005, 19:30

Администратор:Калашников О.А.
В номере:Вопросов: 3, Ответов: 12


Вопрос № 17729: Здравствуйте. Как перевести число вещественного типа в строку?...
Вопрос № 17735: Здравствуйте, эксперты. Проблема с использованием генерации псевдослучайных чисел. Вопрос: как мне вызвать функию srand() один раз при запуске приложения так, чтобы результат её работы был виден функции rand(), находящейся во вторичном потоке...
Вопрос № 17747: здрасьти! возникла такая проблема: где в Сети можно почитать про АТД и реализацию их на Си (не С++) особенно про стек, очередь, список сам пытался искать так ничего и не нашел :(... заранее спасибо...

Вопрос № 17729
Здравствуйте.
Как перевести число вещественного типа в строку?
Отправлен: 02.03.2005, 21:34
Вопрос задал: andrey (статус: Посетитель)
Всего ответов отправлено: 7

Отвечает: vitya
Здравствуйте, andrey!
1. stringstreams (C++)
2. sprintf (C)
Ответ отправил: vitya (статус: Профессор)
Отправлен: 02.03.2005, 22:00

Отвечает: CrackLab
Здравствуйте, andrey!
char s[20];
float f = 1.5678;
sprintf(s, "%f", f);
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 02.03.2005, 22:46

Отвечает: rusfaq.ru
Здравствуйте, andrey!
<b>Header File</b> stdlib.h
<b>Category</b> Conversion Routines, Math Routines
<b>Prototype</b> char *fcvt(double value, int ndig, int *dec, int *sign);
<b>Description</b>
Converts a floating-point number to a string.
<b>fcvt</b> converts value to a null-terminated string digit starting with the leftmost significant digit with ndig digits to the right of the decimal point. fcvt then returns a pointer to the string. The position of the decimal point relative to the beginning of the string is stored indirectly through dec (a negative value for dec means to the left of the returned digits). There is no decimal point in the string itself. If the sign of value is negative the word pointed to by sign is nonzero; otherwise it is 0.
The correct digit has been rounded for the number of digits to the right of the decimal point specified by ndig.
<b>Return Value</b> The return value of fcvt points to static data whose content is overwritten by each call to fcvt and ecvt.

Приложение:

Ответ отправил: rusfaq.ru (статус: 1-ый класс)
Отправлен: 02.03.2005, 23:59

Отвечает: Bob Johnson
Здравствуйте, andrey!
sprintf (строка, формат, число), например:
char buf [20];
double num;
sprintf (buf, "%g", num);

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 03.03.2005, 00:40

Отвечает: gvozdok
Здравствуйте, andrey!
любое число перевести в строку можно так:
через CString
CString text;
float a = 12.33;
text.format("%:5.3f");
формат такойже как в printf
Ответ отправил: gvozdok (статус: 4-ый класс)
Отправлен: 03.03.2005, 04:34

Отвечает: Voituk Alexander
Здравствуйте, andrey!
Смотря в какую строку. Если пишешь на Билдере и в строку типа AnsiString, то очень просто
AnsiString Xaxa = 1.786945; перевод пройде автоматически.
А если в строку char, то вот тебе функция gcvt.
char str[20];
int num = 5;
gcvt(1.234565,num,str);
num - число выводимых цифер.
Ответ отправил: Voituk Alexander (статус: 3-ий класс)
Отправлен: 03.03.2005, 12:00

Отвечает: Мельник Александр Анатольевич
Здравствуйте, andrey!
Вариантов много...
sprintf, itoa, strsteam из std.
Ответ отправил: Мельник Александр Анатольевич (статус: 3-ий класс)
Отправлен: 03.03.2005, 22:34


Вопрос № 17735
Здравствуйте, эксперты.
Проблема с использованием генерации псевдослучайных чисел.
Вопрос: как мне вызвать функию srand() один раз при запуске приложения так, чтобы результат её работы был виден функции rand(), находящейся во вторичном потоке? Если всё находится в пределах функций классов приложения - всё хорошо.
Можно ли обойти ограничение максимального генерируемого числа - 32767?
(VC++7.1 + MFC)
Отправлен: 03.03.2005, 01:27
Вопрос задал: Ermine (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: CrackLab
Здравствуйте, Ermine!
По поводу максимального генерируемого числа делайте так:
int rndval = rand()*(MaxVal/RAND_MAX);
Где MaxVal - максимально возможное нужное вам генеририруемое число.
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 03.03.2005, 02:00

Отвечает: DiGiT
Здравствуйте, Ermine!
Дело в том, что стандартный генератор случайных чисел в MSVC не достаточно хорош. Используйте свой. А тот способ, который предлагает CrackLab может и даст вам числа из любого диапазона, но это уже будут не совсем случайные числа из всего этого диапазона. Попробуйте написать свой генератор случайных чисел. Наиболее популярной докой в этой области является второй том Кнута. А также другие книги отечественных математиков по имитационному моделированию.
Ответ отправил: DiGiT (статус: 6-ой класс)
Отправлен: 03.03.2005, 02:23
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо! И как я сам не догадался про сторонние методы?!

Отвечает: vitya
Здравствуйте, Ermine!
1. srand надо вызывать для каждого потока
2. умножайте суммируйте и так далее случайные числа, но осторожно, они могут перестать быть случайными.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 03.03.2005, 10:41


Вопрос № 17747
здрасьти!
возникла такая проблема:
где в Сети можно почитать про АТД и реализацию их на Си (не С++)
особенно про стек, очередь, список
сам пытался искать так ничего и не нашел :(...
заранее спасибо
Отправлен: 03.03.2005, 10:30
Вопрос задал: ОчХочуНаучиться (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Boriss
Здравствуйте, ОчХочуНаучиться!
Ну вот! Каку это не нашел! Берите классиков:
Керниган, Страутруп, Шильдт (очень много писал именно про стеки и сортировки)
Сейчас у меня сеть "плохая" и не могу проверить ссылки, а так можно посмотреть на
http://temp.emanual.ru/show.php?page=1&id=3&id_pod=22
http://anatolix.naumen.ru/Books/CPlusPlus?v=fvi
http://chsoft.narod.ru/
http://www.bib.com.ua/articles.php
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 03.03.2005, 11:01

Отвечает: Voituk Alexander
Здравствуйте, ОчХочуНаучиться!
Посмотри в электронных библиотеках. Я сам видел книгу "Фундаментальные алгоритмы".
Там все есть.
Еще есть хорошая книга Вирта ЭАлгоритмы и структуры данных". Правда реализация дана на Модуле, это паскалеобразный язык, но все написано очень прозрачно. Я сам пишу на С++ и ею пользуюсь.
Ответ отправил: Voituk Alexander (статус: 3-ий класс)
Отправлен: 03.03.2005, 11:39


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное