Вопрос № 33104: Доброго времени суток.
Есть устройство, которое понимает только 4 арифметические действия.
Нужно "научить" его извлекать квадратный корень с помощью этих действий (это точно можно сделать) и sin получить (можно ли вообще с 4 действи...Вопрос № 33128: Пишу программу ( калькулятор) на C#. В программе создаются 18 кнопок и один TextBox. Подскажите как в функции click узнать какую кнопку нажал пользователь и записать соответствующую информацию в TextBox или выполнить соответстующее действие....Вопрос № 33136:
Помогите, пожайлуста решить проблему с деструкторами.
В приложении приведён текст тестовой программы, в которой происходит неправильная (не ожидаемая) работа. Коментариями помечены ключевые места.
Почему так происходит?
Как сделать правил...
Вопрос № 33.104
Доброго времени суток.
Есть устройство, которое понимает только 4 арифметические действия.
Нужно "научить" его извлекать квадратный корень с помощью этих действий (это точно можно сделать) и sin получить (можно ли вообще с 4 действиями это?)
Есть ли у кого алгоритм на С (потом сам переведу в понятный уст-ву язык) и как можно проще, без функ. и т.д.
За пример алгоритма Большое спасибо, да и вообще спасибо за внимание.
Отправлен: 12.01.2006, 11:03
Вопрос задал: nicholasal (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Straight
Здравствуйте, nicholasal!
Синус раскладывается в ряд Тейлора - вот Вам и четыре арифметических действия.
Ответ отправил: Straight (статус: 3-ий класс)
Отправлен: 12.01.2006, 11:10 Оценка за ответ: 4
Отвечает: Danil
Здравствуйте, nicholasal!
Помогут вам ряды Тэйлора.
Ответ отправил: Danil (статус: 1-ый класс)
Отправлен: 12.01.2006, 11:32 Оценка за ответ: 4
Отвечает: PROD
Здравствуйте, nicholasal!
если это и можно, то думаю будет довольно проблематично.
рекомендую копать в сторону таблицы Брадиса и/или низко уровневого программирования - ASM и т.д. ведь на уровне булевых выражений они как-то это делают, а там как раз только сложение и умножение.
Приложение:
Ответ отправил: PROD (статус: 2-ой класс)
Отправлен: 12.01.2006, 11:56 Оценка за ответ: 4 Комментарий оценки: ок
Ответ отправил: XMF (статус: 2-ой класс)
Отправлен: 12.01.2006, 17:27 Оценка за ответ: 4
Отвечает: Ataman N. N.
Здравствуйте, nicholasal!
К сожалению код на С привести не могу, но могу дать наводку.
В мат анализе есть такое понятие как разложение функции в ряд Тейлора.
Функцию f(x)=x^(1/2) можно разложить в ряд Тейлора. В этом методе можно также менять точность вычисления значения функции. Но есть одно "но" - при разложении приходиться вычислять факториалы, справиться ли ваше устройство с этой проблемой, не знаю, если не справиться, то скорей всего Вам прийдеться отказаться от идеи вычисления корня - других способов, на сколько мне известно, просто не существует.
Ответ отправил: Ataman N. N. (статус: 5-ый класс)
Отправлен: 13.01.2006, 19:08 Оценка за ответ: 4 Комментарий оценки: Спасибо
Отвечает: Raptor1
Здравствуйте, nicholasal!
Подробное исследование данного вопроса можно найти здесь:
http://algolist.manual.ru/maths/count_fast/intsqrt.php
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 14.01.2006, 13:08 Оценка за ответ: 5 Комментарий оценки: Отлично, спасибо.
Вопрос № 33.128
Пишу программу ( калькулятор) на C#. В программе создаются 18 кнопок и один TextBox. Подскажите как в функции click узнать какую кнопку нажал пользователь и записать соответствующую информацию в TextBox или выполнить соответстующее действие.
Приложение:
Отправлен: 12.01.2006, 16:21
Вопрос задал: psevdo (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ataman N. N.
Здравствуйте, psevdo!
Если класс Button обладает свойством Caption или что-то на подобии, то попробуйте так:
Button(obj).Caption == "1" // нажата кнопка "1",
и т.д.
Ответ отправил: Ataman N. N. (статус: 5-ый класс)
Отправлен: 12.01.2006, 21:44
Вопрос № 33.136
Помогите, пожайлуста решить проблему с деструкторами.
В приложении приведён текст тестовой программы, в которой происходит неправильная (не ожидаемая) работа. Коментариями помечены ключевые места.
Почему так происходит?
Как сделать правильно?
Какие существуют походие тонкости в C/C++?
Приложение:
Отправлен: 12.01.2006, 19:11
Вопрос задал: Tundravarg (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: BOIL
Здравствуйте, Tundravarg!
Изучите еще раз тему конструкторов копирования и вызовов конструктора в C++
Соотв места в приложении помечены комментариями, начинающимися с BOIL
Удачи!...
Приложение:
Ответ отправил: BOIL (статус: 6-ой класс)
Отправлен: 12.01.2006, 19:25
Отвечает: NET
Здравствуйте, Tundravarg!
Всё дело в том что при присваивани создаётся временный обЪект Asd, сразу после присваивания уничтожается
А здесь Asd *asd; вызывается конструктор без параметров...
Попробуйте его изменить так
Asd() { std::cout << " Asd construction without parameters
";
}
Будет всё сразу видно
Ответ отправил: NET (статус: 1-ый класс)
Отправлен: 12.01.2006, 20:01
Отвечает: Danil
Здравствуйте, Tundravarg!
Глньте в приложение.
В примере 2 компилятор не обязан создавать временный объект.
Приложение:
Ответ отправил: Danil (статус: 1-ый класс)
Отправлен: 12.01.2006, 20:03
Отвечает: Raptor1
Здравствуйте, Tundravarg!
Так все правильно,
asd[i] = Asd(q, (unsigned char)3);
эта строка создает новый объект Asd(q, (unsigned char)3);
присвивает asd[i] этот объек и потом его уничтожает, так как оператор присваивания у тебя не определен, что берется оператор по умолчанию, т.е. физическое копирование переменных одного объекта в другой, потом в
деструкторе переменная освобождается и адрес становится недействительным, но второй объект об этом ничего не знаяет и продолжает его использовать, для решения проблемы добавь в класс Asd оператор присваивания, (для пролного счастья пригодится и конструктор из объекта
Asd(const Asd& objSrc) но у тебя в коде он не используется, поэтому приводить я его не стал, он тоже должен выделять свой буфер )
// и измени конструктор по умолчанию чтобы он задавал начальные значения
// переменных, а то получишь проблемы в release версии
Asd(): i(NULL),ic(0) {}
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 14.01.2006, 13:05