|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
26.07.2010, 18:37 | #1 (permalink) |
Member
Регистрация: 18.04.2010
Сообщений: 744
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 639
|
Домашнее задание на лето.
|
26.07.2010, 18:37 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Так же на нашем форуме встречались темы, которые схожи с вашими Домашнее телевидение и комп Задание в Паскале Дворняге домашнее тепло и дружбу. Задание по циклам |
27.07.2010, 22:01 | #2 (permalink) |
Member
Регистрация: 26.07.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 60
|
Нельзя решить функцию, можно подсчитать ее значение при заданных аргументах. А программу будем делать так: рисовать будет прямо на канве формы, для удобства возьмем самый естественный в данной ситуации масштаб: 1 ед. = 1 пиксель. Так проще. Начнем! Кидай на форму 1 TButton и 2 TLabeledEdit. Желательно разместить их в одном углу формы, чтобы потом не очень мешались. Надпись к LabeledEdit1 - "k", к LabeledEdit2 - "b". к едитам в OnKeyPress пиши:
Код:
case key of '0'..'9', '-', #8:; else key := #0; end; Код:
procedure TForm1.Button1Click(Sender: TObject); var W, H : cardinal; halfW, halfH, x, y : double; ixPrev, iyPrev, k, b : integer; ix, iy : cardinal; begin repaint; W := Form1.Width; H := Form1.Height; k := StrToIntDef(Form1.LabeledEdit1.Text, 0); b := StrToIntDef(Form1.LabeledEdit2.Text, 0); halfW := W / 2; halfH := H / 2; Form1.Canvas.MoveTo(round(halfW), 0); Form1.Canvas.LineTo(round(halfW), H); Form1.Canvas.MoveTo(0, round(halfH)); Form1.Canvas.LineTo(W, round(halfH)); ixPrev := 0; iyPrev := round(halfH); for ix := 0 to W - 1 do begin x := (ix - halfW); y := k * x + b; iy := round(halfH - y); Form1.Canvas.MoveTo(ixPrev, iyPrev); Form1.Canvas.LineTo(ix, iy); ixPrev := ix; iyPrev := iy; end; end; |
28.07.2010, 07:02 | #3 (permalink) | |
Member
Регистрация: 18.04.2010
Сообщений: 744
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 639
|
Стоп, стоп, но здесь же ведь чистая математика и почему объявление переменных так много ведь помоему проще объявить так
Цитата:
|
|
28.07.2010, 07:50 | #4 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
От себя пять копеек добавлю. В цикле имеем:
Смысла в MoveTo нет, так как перо остается в той точке, куда его переместила LineTo. Нет необходимости запоминать координаты пера в переменных ixPrev и iyPrev. |
28.07.2010, 08:53 | #5 (permalink) |
Member
Регистрация: 18.04.2010
Сообщений: 744
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 639
|
Если честно в моей голове уже каша! А поточнее можно разжевать информацию.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
29.07.2010, 01:37 | #6 (permalink) | ||
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
В OnKeyPress еще желательно добавить код клавиши Backspace.
Цитата:
Цитата:
__________________
Убить всех человеков! |
||
29.07.2010, 18:42 | #7 (permalink) |
Member
Регистрация: 26.07.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 60
|
AlexZir, в OnKeyPress код бекспейса есть:
Код:
case key of '0'..'9', '-', #8:; else key := #0; end; Жан, начал ты, может быть, и правильно, однако цвет пера, его толщина и пр. - это вторично. В моем коде построение прямой y = kx + m. Т.е. то, что ты писал в первом посте. Ткни пальцем, что именно не понятно. |
29.07.2010, 18:52 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
И от меня грошик: один раз надо использовать MoveTo. Перед циклом.
Последний раз редактировалось Long Cat; 29.07.2010 в 19:02 |
29.07.2010, 19:08 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|