Есть код:
Код:
using System;
using System.Windows.Forms;
using System.Collections.Generic;
namespace WindowsApplicationTest
{
public partial class Form1 : Form
{
// Здесь будут храниться наши данные.
private List<MyData> list;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
list = new List<MyData>();
// Создаем связь между DataGridView, BindingSource и нашим списком.
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = bindingSource1;
bindingSource1.DataSource = list;
// Следующий код можно реализовать и через дизайнер формы.
// Но я решил, что так точно никаких ошибок не будет.
// В дальнеешем можете удалить следующий код, добавив его через дизайнер.
button1.Click += new EventHandler(button1_Click);
}
private void button1_Click(object sender, EventArgs e)
{
// Код С++ с main находиться здесь + еще отображение в DataGridView.
double h, n, x, y;
// Считываем данные с текстовых полей.
if (!double.TryParse(textBox1.Text, out h)) h = 0;
if (!double.TryParse(textBox2.Text, out n)) n = 0;
if (!double.TryParse(textBox3.Text, out x)) x = 0;
if (!double.TryParse(textBox4.Text, out y)) y = 0;
double fy, k, k0, k1, k2, k3;
for (int i = 0; i < n; i++)
{
fy = MyFunc(x, y);
k0 = h * fy;
k1 = h * MyFunc(x + h / 2.0, y + k0 / 2.0);
k2 = h * MyFunc(x + h / 2.0, y + k1 / 2.0);
k3 = h * MyFunc(x + h, y + k2);
k = (k0 + 2.0 * k1 + 2.0 * k2 + k3) / 6.0;
y += k;
// Заносим данные в наш список.
list.Add(new MyData(x, y));
x += h;
}
// Отображаем результат (наш список) в DataGridView
bindingSource1.ResetBindings(true);
}
// Ваша функция.
private double MyFunc(double x, double y)
{
return 6 * x * x + 5 * x * y + y * y + 4 * x + 2 * y - 3;
}
}
// Класс, в котором хранятся данные.
class MyData
{
public double X { get; set; }
public double Y { get; set; }
public MyData(double x, double y)
{
this.X = x;
this.Y = y;
}
}
}
Вот так я могу отправить данные в Екзель в ручную:
ObjWorkSheet.Cells[2, 1] = list[1].X;
ObjWorkSheet.Cells[2, 2] = list[1].Y;
Вот так пытаюсь в цикле:
Код:
for (int i = 0; i < list.Сount; i++)
{
ObjWorkSheet.Cells[i + 1, 1] = list[i].X;
ObjWorkSheet.Cells[i + 1, 2] = list[i].Y;
}
Не работает. Почему?