Здравствуйте эксперты. Мне нужно написать класс полинома n-ой степени. Сам полином задается ввиде строки типа 2.18x^2+3 и т.п. Подскажите мне мои действия если не трудно у меня вроде и знаний должно хватить но не могу понять с чего начать. Я думаю что в конструктор класса нужно передать строку в которой полином а потом с ней работать - я прав или нет??? Или можно по другому?? Если у кого-то есть какие-то исходники которые могут мне помочь буду очень благодарен.
Приветствую Вас, Ilu! Я думаю класс должен быть таким: class polinom { int i; public: polinom(int a;){ i = a;} double get_rezult(void) { return 2.18^i+(i+1); } }; int main() { for (int k=0; i<100; i++) { polinim(i) cout << get_result() <} Ответ отправлен: 18.11.2003, 09:04 Отправитель: Александр Отвечает Avl2k
Добрый день, Ilu! 1. Надо спроектировать сам класс. В нем дожны быть как минимум: -конструктор из строки; -конструктор из массива коэффициентов; -метод вычисления значения при заданном x; -массив коэффициентов; 2. Надо преобразовать строку в массив коэффициентов. Если вид многочлена строго a(n)x^n + a(n)x^(n-1) + ... +a(0), то для простоты разбора можно использовать метод конечных автоматов. 3. Написать метод вычисления значения при заданном x. Проще всего вычислять методом Горнера. С уважением, Avl2k. Ответ отправлен: 18.11.2003, 13:35 Отправитель: Avl2k
Вопрос № 1243
Добрых суток ув. Эксперты........ Возможно мой вопрос несколько некорректный, но как в Visual C 7.0 можно увидеть динамический массив целиком (в дебагере)? Заранее спасибо.
Здравствуйте, Hup! А кто мешает просмотреть память начиная с начала и массива и до нужного места. Может не очень удобно, но IMHO всегда работает :) Ответ отправлен: 18.11.2003, 20:20 Отправитель: Илья Отвечает Yuri Gordienko
Добрый день, Hup! Дебагер не настолько умный, чтобы знать границы твоего массива. Варианта два - или использовать дополнительную переменную для индексирования, или руками писать индекс в QuickWatch - типа int *p = new int[11] - в QuickWatch пишешь p[10]. Хотя, возможно есть и более правильный способ. Успехов Ответ отправлен: 18.11.2003, 17:15 Отправитель: Yuri Gordienko
Вопрос № 1246
Здравствуйте, уважаемые эксперты! Появилась у меня проблема: допустим, имеется некоторый текстовый файл, состоящий из 5 строк, и нужно первый символ каждой строки заменить каким-либо символом (например, "*"). Как это можно сделать, если при открытии файла с параметром -a данные только дописываются в конец (в MSDNе написано), а с параметром -w - содержимое уничтожается? Подскажите, пожалуйста, что делать - с привязкой к MSVC++ 6.0. Заранее благодарен.
Heilsa, Renat! snachala chitaem file v stroku, potom menyaem, potom pishem file zanovo. Ответ отправлен: 18.11.2003, 17:11 Отправитель: jartur Отвечает Avl2k
Приветствую Вас, Ренат! Надо использовать режим "r+". Пример см. ниже. С уважением, Avl2k. void f() { FILE* f = fopen( "test.txt", "r+" ); if( f ) { if( fseek( f, 5, SEEK_SET ) == 0 ) { char c = '*'; fwrite( &c, 1, 1, f ); } fclose( f ); } } Ответ отправлен: 18.11.2003, 15:53 Отправитель: Avl2k Отвечает vitya
Добрый день, Ренат! 1. открываешь первый файл только для чтения, второй (временный) - только для записи. Читаешь по-строчно из файла в буффер, заменяешь символ - пишешь в другой файл. Потом старый файл стираешь, новый переименовываешь в старый 2. создаешь проецированный в память файл, и просто ищещь конец строки и заменяешь следующий символ на нужный тебе символ. Когда отображение в память закрывается - файл уже будет изменен.
Ответ отправлен: 18.11.2003, 15:42 Отправитель: vitya Отвечает Phenix
Доброе время суток, Ренат! Теде придется писаль либо в другой файл, либо читать все в буфер, изменяя то, что надо, и переписывать файл. Ответ отправлен: 19.11.2003, 00:49 Отправитель: Phenix
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.