Здравствуйте. У меня такой вопрос: я только начинаю изучать С и соответственно только-только скачал себе компилятор. Но ест ьпроблема - при написании стандартной Hello World! компилятор ругается: Error E2046 hello.c 1: Bad file name format in include directive Warning W8065 hello.c 3: Call to function 'printf' with no prototype in function main *** 1 errors in Compile *** А ехе-шник создаётся. В чём причина?
Приветствую Вас, Инин! Насчёт директивы #include. Она записывается в формате: #include "имя_файла" или #include <имя_файла> В Вашей программе имя файла не указано, потэтому компилятор и ругается. Насчёт второй ошибки. Компилятор встретил имя функции (printf), которое не было объявлено, поэтому он и ругается. НО, первая ошибка игнорируется, а функция printf есть в стандартной библиотеке, которая автоматически подключается к программе. Поэтому успешно создаётся EXE-шник. Если Вы только начали изучать C, то Вам необходимо знать, что, в отличии от Pascal, компилятор останавливается только на фатальной ошибке. Большинство же ошибок носят имя Warning - предупреждение. Такие ошибки компилятор умеет исправлять сам. Но всё же, желательно их исправить ручками. В приложении приведён правильный пример Вашей программы.
Приложение: Ответ отправлен: 27.10.2004, 13:19 Отправитель: Василевский Александр Отвечает Morgion
Здравствуйте, Инин! Если пишет error - то екзешник не создаётся! 1. #include В <> указан стандартный заголовок, в котором находится определения ф-и printf (...). Если нужны свои заголовки, то пиши #include "name.h" , то есть в "" - кавычках. 2. То есть правильно будет так, как в приложении, не смотря на то, что некоторые будут придираться и говорить, что нет void main () ... 8).
Приложение: Ответ отправлен: 27.10.2004, 15:32 Отправитель: Morgion
Вопрос № 1992
Здравствуйте! Задали лабораторную: Математическая модель генератора случайных чисел. А мыслей никаких нет. Расскажите, в общих чертах, какой алгоритм примерно должен быть? То есть мысли есть, но сомневаюсь в эффективности своего алгоритма, да и как лучше написать не придумаю, в общем, безобразие... Подскажите хоть какую-нибудь идею! Программируем мы все это, естественно, в BC++ 3.1.
Добрый день, booty! Моделей генераторов случайных числе существует великое множество. Всё зависит от задачи. Например если нужен криптографически стойкий, то это одно дело, если нужен с хорошими характеристиками, то другое. По первым иши в инете, например в книге Брюса Шнайера "Прикладная криптография", видел на proglib.ru, в книгах. Самое простое- аддитивный генератор случайных числе, если не изменяет склероз -так называется- x[n+1]=(a*x[n]+b) mod n , где mod n остаток от деления на n, n , есть ещё какието условия для а и б - смотри в литературе. Можешь сделать так- а- первые 6 знаков числа pi, б - первые 6 знаков числа е, n - от балды 8) , то есть "размах" случайных чисел, например 65536. ТОлько вот это получаются псевдослучайные числа. Для истинной случайности нужно использовать независимые от машины факторы, например отслеживать
траекторию мыши, или частоту нажатия клавиш, в общем много всяких извращений.
Приложение: Ответ отправлен: 28.10.2004, 00:13 Отправитель: Morgion Отвечает bocha
Здравствуйте, booty! почитай Кнута. А почему естественно? Мне так представляется, что как раз не естественно, стандарты имеют свойство меняться, если даже Русский язык за то время как существует этот компилятор изменился, то что говорить об искусственных языках? Ответ отправлен: 28.10.2004, 01:03 Отправитель: bocha Отвечает vitya
Доброе время суток, booty! Дональд Кнут. Второй том. Ответ отправлен: 28.10.2004, 09:57 Отправитель: vitya Отвечает DiGiT
Здравствуйте, booty! Так тебе нужна именно математическая модель. Си++ тут в общем-то непричем. Существует кучу способов генерации случайных чисел. Вообще говоря случайные числа, сгенерированные программно будут не случайными, а псевдо-случайными, т.к. они составляют некую последовательность, и зная последовательность и номер элемента, можно легко определить сам элемент. Случайные числа генерируются отдельными устройствами. Так вот вообще говоря, случайные числа могут иметь какое угодно распределение. Но если вы не упомянули об этом предположу, что Вам нужно равномерное распределение.(Вообще говоря не имеет смысл генерировать что-то не зная теорию вероятностей). Так вот основной буржуйский способ описан в Кнуте("Искусство программирования" том 2.. Есть так же способ генерации, разработанный математиками ссср. Они чем то похожи, но есть разница. 1)
В принципе Morgion написал о нем, я лишь добавлю, что основной проблемой как раз
и является подбор чисел a и b, чтобы получаемое распределение было более-менее приличным. 2) A(n+1) = {A(n)*M}, где {} -дробная часть числа, M- некоторое число. (генерирует числа от, 0 до 1), более менее равномерное распределение получается при A(0)=2^(-34.9999), M=5^14. В общем мат ожидание и дисперсия показываются в норме как и должны быть.(Эти параметры подобраны в мою бытность студентом, поэтому им доверять можно, но нужно проверять) Ответ отправлен: 28.10.2004, 17:42 Отправитель: DiGiT
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.