Всем привет. Нужно написать программу, строящую график функции y=[ax] ( [ ] - целая часть ). Прикрепил картинку, как получается у меня, и как примерно должен выглядеть график. Т.е., как вы поняли, нужно убрать вертикальные части графика. Помогите, пожалуйста, исправить ошибку.
Исходный:
| Код | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void panel1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics;
Pen pn = new Pen(Color.Black); Pen p = new Pen(Color.LightBlue); for (int i = 3; i <= 46; i += 4) { g.DrawLine(p, i * 5, 0, i * 5, 230); g.DrawLine(p, 0, i * 5, 230, i * 5); g.DrawLine(pn, i * 5, 118, i * 5, 112); g.DrawLine(pn, 112, i * 5, 118, i * 5); } g.DrawLine(pn, 115, 0, 115, 230); g.DrawLine(pn, 0, 115, 230, 115); g.DrawLine(pn, 115, 0, 120, 10); g.DrawLine(pn, 115, 0, 110, 10); g.DrawLine(pn, 230, 115, 220, 120); g.DrawLine(pn, 230, 115, 220, 110); Font h = new Font("Arial", 10, FontStyle.Regular); g.DrawString("y", h, Brushes.Black, 120, 3); g.DrawString("x", h, Brushes.Black, 210, 92); double a; try { a = float.Parse(textBox1.Text); } catch { a = 1; }
Point[] points = new Point[2300]; int j = 0;
for (double i = 0; i < points.Length; i += 0.1) { double y = -20 * Math.Floor(a * (i - 115) / 20) + 115; if ((int)y==y) { if (j < 2300) { points[j] = new Point((int)i, (int)y); j++; } } }
g.DrawLines(pn, points); }
private void Key_press1(object sender, KeyPressEventArgs e) { if (!char.IsDigit(e.KeyChar) && !(char.IsControl(e.KeyChar))) if (!((e.KeyChar.ToString() == ",") && (textBox1.Text.IndexOf(",") == -1))) if (!((e.KeyChar.ToString() == "-") && (textBox1.Text.IndexOf("-") == -1))) { e.Handled = true; }
}
private void button1_Click(object sender, EventArgs e) { this.Refresh(); } } }
|
|