Kirill b. Опубликовано 22 ноября, 2007 Жалоба Поделиться Опубликовано 22 ноября, 2007 Ребят!Напишите пжл алгоритм след функций в калькуляторе:Backspace ,и можно еще sin,cos,tgб,ln,log Ссылка на комментарий Поделиться на другие сайты Поделиться
Бумер Опубликовано 23 ноября, 2007 Жалоба Поделиться Опубликовано 23 ноября, 2007 Backspace - я даже не знаю, в чем тут вопрос то к примеру такое описание: Если нажата клавиша B, то удалить символОчистка буфера На паскале это примерно такif keypressed thenbegin readkey©; if c='B' then УБРАТЬ СИМВОЛend; В принципе все зависит от того, как ты выводишь цифры на экран калькулятора и на каком языке все пишется. Насчет функций sin,cos,tgб,ln,log - все предельно просто. Ищешь разложение этих функций в ряды (в математич. анализе изучается, если у тебя нет, проси, я напишу). Потом в зависимости от требуемой тебе точности берешь определенное количество членов ряда и вычисляешь их))) ЗЫ: Помню у нас один оригинал для решения такой задачи решил прописать для всех углов значения синуса вычислив его на обычном калькуляторе)))) скока я тогда смеясля)))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Kirill b. Опубликовано 23 ноября, 2007 Автор Жалоба Поделиться Опубликовано 23 ноября, 2007 Backspace - я даже не знаю, в чем тут вопрос то к примеру такое описание: Если нажата клавиша B, то удалить символОчистка буфера На паскале это примерно такif keypressed thenbegin readkey©; if c='B' then УБРАТЬ СИМВОЛend; В принципе все зависит от того, как ты выводишь цифры на экран калькулятора и на каком языке все пишется. Насчет функций sin,cos,tgб,ln,log - все предельно просто. Ищешь разложение этих функций в ряды (в математич. анализе изучается, если у тебя нет, проси, я напишу). Потом в зависимости от требуемой тебе точности берешь определенное количество членов ряда и вычисляешь их))) ЗЫ: Помню у нас один оригинал для решения такой задачи решил прописать для всех углов значения синуса вычислив его на обычном калькуляторе)))) скока я тогда смеясля)))) Насчет backspace,я понимаю как(организовать),но мне надо именно синтаксисом С++ помочь написать алгоритм. sin,cos,tgб,ln,log-напиши,только опять же не просто формулами,а синтаксисом С++ Ссылка на комментарий Поделиться на другие сайты Поделиться
Бумер Опубликовано 23 ноября, 2007 Жалоба Поделиться Опубликовано 23 ноября, 2007 sin,cos,tgб,ln,log-напиши,только опять же не просто формулами,а синтаксисом С++ Ой, ну все разжуй, в рот положи, чтоб осталось только проглотить.... Ну ладно, так и быть! sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...+(-1)^(n-1)*X^(2n-1)/(2n-1)! В си это пишется так: #include <stdio.h>#include<math.h>int factorial_iter(int n){ int p=1; for(int i=n; i>0;i--) p*=i; return p;} // это итеративная функцияint factorial_recurs(int n){ if (n==1 || n==0) return 1;else return n*factorial_recurs(n-1);} // это рекурсивная функция (выбирай одну на вкус)//double pow(double x, double y); - это стандартная функция в Си для возведения х в степень уvoid main(){double x;int a;scanf("%d",&a); //в переменную а читаем введенное значение х (могу ошибаться, давно на Си не писал уже)x=a;double f=0;double f2=0;f=x;int n=2;while (1) { f2=f; f=f+pow(-1,n-1)*pow(x,2*n-1)/factorial_recurs(2*n-1); if (fabs(f2-f)<0.001) break; n++; }printf("SIN=%f",f);scanf("%d",&x);} Примерно так это выглядит, протестировал для единички, ну вроде похоже на правду, хотя тестировать некогда, если что сам покрути в ручном режиме, если будут ошибки сразу найдешь! Для косинуса и пр. поищи в нете или у себя, просто ща некогда, если что потом позже напишу. backspace, ты знаешь как сделать, но ты Си не знаешь????? исходник давай в студию, доработаем)) Если не хочешь исходинк сюда постить, то хотя бы опиши как ты знаешь реализовать, а то я же не экстрасенс, я не знаю что ты там написал... Ссылка на комментарий Поделиться на другие сайты Поделиться
Бумер Опубликовано 24 ноября, 2007 Жалоба Поделиться Опубликовано 24 ноября, 2007 Пишу для cos(x)=1-3*x^2/3!+5*x^4/5!+...+(-1)^(2n-1)*(2n-1)*x^(2n-2)/(2n-1)! tg можно считать как sin/cos, чтобы лишних функций не писать. для ln (т.к. существуют только логарифмы неотрицательных чисел, то для вычисления значения логарифма аргумента который принадлежит промежутку [0,1] используй первую формулу, а если агрумент принадлежит промежутку [1,бесконечность] то вторую) ln(1-x)=-x-x^2/2-x^3/3-..x^n/n-... ln(1+x)=x-x^2/2+x^3/3+...+(-1)^(n-1)*x^n/n т.к у тебя в программе будет задаваться уже значение выражения (1-х) или (1+х), то ты должен будешь вычислить х, который будешь подставлять в эти ряды. (думаю это сделать будет нетрудно) Думаю что log через ln ты выразишь (возьми книжку по математике за 10 класс - по моему там есть) Да, и еще будь осторожен с типами данных, т.к. функция n! очень быстро возрастает, а сходимость ряда может быть медленной. ЗЫ: извини, друг, но писать отлаженные проги у меня пока нет времени... Если будут какие то проблемы, спрашивай! Хотя в принципе для логарифма можно обойтись и одной формулой))) (чет то я сам сегодня торможу) Ссылка на комментарий Поделиться на другие сайты Поделиться
Kirill b. Опубликовано 28 ноября, 2007 Автор Жалоба Поделиться Опубликовано 28 ноября, 2007 Всем спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти