Добрый день, уважаемые эксперты! Подскажите как можно решить такую задачу: "x4 - разница мужду суммой всех элементов матрицы A [1..3,1..3] и элементов кратных 5 массива B [1..3]." С матрицей А все легко, а вот со второй частью задания никак не справлюсь. Пробовал через mod, но ничего не получается... Заранее благодарен.
Здравствуйте, Pavel! Позволю себе заметить, что термин "кратность числу n" применим только к целым числам. Следовательно, тип "Vect" должен быть массивом целых чисел. Тогда всё будет Ok Ответ отправлен: 18.05.2002, 19:11 Отправитель: Артём Шегеда Отвечает Ayl
Доброе время суток, Pavel! Судя по описанию функции, тип vect представляет собой массив элементов типа real. А операция mod определена только для целых чисел. Так что исправляй тип элементов на integer, byte, word или longint и все должно работать. Ответ отправлен: 20.05.2002, 00:03 Отправитель: Ayl
Вопрос № 22
Здравствуйте! Вообщем на Паскале я хотел начетрить график функции (любой), ну например у=((12*х)+23)/7 или даже простейший у=х*х*х (но ничего не получилось) 8-(( Помогите, хотябы направьте меня в нужное русло... Принимаются все ответы и рассуждения ! Спасибо !
Здравствуйте, programmer! В цикле перебираешь значения х от 0 до максимального х при текущем разрешении и выводишь точку с х и высчитанным у. Только не забывай, что на экране координаты начинаются в верхнем левом углу.
Ответ отправлен: 19.05.2002, 18:45 Отправитель: Dzik Отвечает Blackeye
Доброе время суток, programmer! Попробуй следующий код, тольок измени под себя
Приложение: Ответ отправлен: 19.05.2002, 20:39 Отправитель: Blackeye Отвечает igorash
Приветствую Вас, programmer! Я обычно принимаю координаты центра экрана за точки 0,0, потом в цикле х от -320 (реальный 0 на экране - левый край) до 320 (правый край на экране) высчитываю эту функцию и получаю у, потом к реальным х и у добавляю 320 и 240 соответственно, таким образом получаю точки 0,0 в центре экрана. Вот и все. з.ы. Кстати мне было легче высчитывать линейную функцию у=((12*х)+23)/7 чем кубическую у=х*х*х, потому что при х=-320 и 320 происходило переполнение при вычислении х^3 и выводилось немного не то, что надо, поэтому я просчитал примерно координаты и понял что х должен быть от -10 до 10 примерно (кстати можно попробовать в 2 программе константе l присвоить что-нибудь побольше - получится куча хаотичных точек и функция посередине).
Приложение: Ответ отправлен: 20.05.2002, 21:04 Отправитель: igorash Отвечает Ayl
Приветствую Вас, programmer! А программку приложить было трудно, да? Рассказываю, как рисовать. 1. Определись, где на экране будет центр координат (вряд ли в точке (0, 0) - все-таки левый верхний угол). Пусть центр координат будет в точке экрана (x0, y0). 2. Определи диапазон по оси X. Пусть x изменяется от Xmin до Xmax. 3. Вычисли максимальное и минимальное значение функции в этом диапазоне. Пусть они равны, соответственно, Ymax и Ymin. 4. Определи масштаб по оси Y. 5. Определи шаг изменения по оси X - deltaX. 6. Определи координату X, с которой начнется вывод графика. 7. Теперь организуешь цикл по x от Xmin до Xmax с шагом deltaX. Вычисляешь значение функции в точке x - F (x) 8. Вычисляешь экранные координаты: Yg = y0 - kY * F (x) 9. Ставишь точку (Xg, Yg), переходишь к следующей: Xg := Xg + 1 Все. Вроде ничего не напутал... Ответ отправлен: 20.05.2002, 00:47 Отправитель: Ayl Отвечает vitya
Добрый день, programmer! советую сделать так: для начала создай тип функции, например: type grFunc = function(x:real):real; после чего со спокойной душой создавай функцию примерно со следующим прототипом: procedure PlotGraph(rFrom:real; rTo:real; rScaleY:real; func:grFunc; rScaleX:real); Параметры: первые два будут описывать интервал на который будет проектироваться экран. Второй будет коэф умножения для графика, например, для синуса его можно выбрать 200. Следующий параметр это сама фунция. Последний параметр это шаг по оси X. Внутри ты должен будешь отображать координаты из физических на твой интервал, вычислять в этой точке твою функцию, умножать на коэф. и вызывать функцию putpixel() вроде как и все. rX := rFrom; rMapping = GetMaxX / (rTo - rFrom); while (rX <= rTo) begin rY := grFunc(rX) * rScaleY; putpixel((rX - rFrom)*
rMapping, rY, 13); {цвет можно задавать как параметр} rX := rX + rScaleX; end; Кроме того можно еще задавать кучу параметров. Рисовать или нет оси, проектировать не на весь экран а на часть. задавать не функцию а массив функций и рисовать все своим цветом, для сравнения. Можно рисовать как функцию так и ее производную. В общем полет фантазии безграничен. Удачи. Ответ отправлен: 20.05.2002, 11:25 Отправитель: vitya Отвечает Zloy
Добрый день, programmer! Скорее всего загвоздка кроется в преобразовании координат из real в int, в приложении функция, кот строит х*х*х на [start, end] с шагом dx, для начала задаёшь Xm Ym - твое разрешение в Real координатах, а потом пользуешь функции IX (х) и IY(у). Это самый простой и древний способ...
Приложение: Ответ отправлен: 20.05.2002, 14:20 Отправитель: Zloy Отвечает Sensey
Приветствую Вас, programmer! Держи на мыло, хорошо, что еще в институту делал...
Ответ отправлен: 20.05.2002, 16:36 Отправитель: Sensey
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.