Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 52

При нажатии на кнопку ячейки должны заполняться определенными значениями.

03.01.2016, 20:49. Показов 2032. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня возникла следующая проблема: я использую DataGridView, у меня есть 5 столбцов. При нажатии на кнопку, ячейки должны заполняться определенными значениями. Количество образующихся строк ограничивается условием(пока значения в 5 столбце превышают eps=0.0000001, то добавляется еще строка и так далее, но в том случае, когда значение ячейки стало меньше, пересчет заканчивается и больше ничего не добавляется). Помогите, пожалуйста, мне это реализовать.

Вот код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
            InitDataGridView();
        }
        private void InitDataGridView()
        {
            dataGridView.Columns.Add("i", "i");
            dataGridView.Columns.Add("x", "x");
            dataGridView.Columns.Add("f(x)", "f(x)");
            dataGridView.Columns.Add("f'(x)", "f'(x)");
            dataGridView.Columns.Add("|f(x)/m|", "|f(x)/m|");
            dataGridView.RowHeadersWidth = 50;
            // Первый столбец
            DataGridViewColumn dataGridViewColumn1 = dataGridView.Columns[0];
            dataGridViewColumn1.ValueType = typeof(double);
            dataGridViewColumn1.SortMode = DataGridViewColumnSortMode.NotSortable;
            dataGridViewColumn1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridViewColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridViewColumn1.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            // Второй столбец
            DataGridViewColumn dataGridViewColumn2 = dataGridView.Columns[1];
            dataGridViewColumn2.ValueType = typeof(double);
            dataGridViewColumn2.SortMode = DataGridViewColumnSortMode.NotSortable;
            dataGridViewColumn2.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridViewColumn2.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridViewColumn2.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
            // Третий столбец
            DataGridViewColumn dataGridViewColumn3 = dataGridView.Columns[2];
            dataGridViewColumn3.ValueType = typeof(double);
            dataGridViewColumn3.SortMode = DataGridViewColumnSortMode.NotSortable;
            dataGridViewColumn3.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridViewColumn3.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridViewColumn3.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            // Четвертый столбец
            DataGridViewColumn dataGridViewColumn4 = dataGridView.Columns[3];
            dataGridViewColumn4.ValueType = typeof(double);
            dataGridViewColumn4.SortMode = DataGridViewColumnSortMode.NotSortable;
            dataGridViewColumn4.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridViewColumn4.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridViewColumn4.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            // Пятый столбец
            DataGridViewColumn dataGridViewColumn5 = dataGridView.Columns[4];
            dataGridViewColumn5.ValueType = typeof(double);
            dataGridViewColumn5.SortMode = DataGridViewColumnSortMode.NotSortable;
            dataGridViewColumn5.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridViewColumn5.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridViewColumn5.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }
 
      
       //Для x
      /*  private double F(double x)
        {
            return (x*x+3);
        }
 
        private float F(float x)
        {
            return (float)F((double)x);
        }*/
 
        //Для f(x)
        private double D(double x)
        {
           double _f = Math.Exp(x) + 2 * x - 3;
           return (_f);
        }
 
 
        //Для f'(x)
        private double H(double x)
        {
            double _f = Math.Exp(x) + 2;
            return _f;
        }
     
 
        //Для |f(x)/m|
        private double G(double x)
        {
            double _f = D(x) / 3;
            return _f;
        }
      
        private void button_1_Click(object sender, EventArgs e)
        {
            double eps = 0.0000001;
            double [] arrays = { 0,1,2,3,4,5,6,7,8};
            this.dataGridView.Rows.Clear();
            foreach (var array in arrays)
            {
                this.dataGridView.Rows.Add(array); 
            }
 
            foreach (DataGridViewRow row in dataGridView.Rows)
            {
               double x;
                x = 1;
                D(x);
                H(x);
                G(x);
                if (!row.IsNewRow)
                {
 
                    DataGridViewCell cell = row.Cells[0];
                   //row.Cells[1].Value = F((double)cell.Value);//x 
                    row.Cells[2].Value = D((double)cell.Value);//f(x)
                    row.Cells[3].Value = H((double)cell.Value);//f'(x)
                    row.Cells[4].Value = G((double)cell.Value);//|f(x)/m|
             
                }
                
            }
        
        }
        
        
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.01.2016, 20:49
Ответы с готовыми решениями:

При нажатии на кнопку создать HTML код с определенными атрибутами, которые вызовут сторонний виджет.
Вообщем делаю сайт на конструкторе, возможности вставить html нет. Только js. Суть в том, чтобы при нажатии на кнопку вызывалась...

При нажатии на кнопку параметры изображения должны менятся на введенные пользователем
На странице выводиться изобр. ниже изобрадения выводиться 4 текстовых поля, куда вводятся ширина, высота, рамка и альтернативный текст и...

При нажатии на кнопку параметры изображения должны менятся на введенные пользователем
Нужно добавить кнопку к ниже указанному коду , помогите . <html> <body> <img...

4
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
05.01.2016, 05:46
Не понял что там с чем сравнивать что бы остановить заполнение грида. Но примерно так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private void button_1_Click(object sender, EventArgs e)
        {
            dataGridView.Rows.Clear();
            double eps = 0.0000001;
            int i = 0;
            double d, h, g;
            for (;;)
            {
                d = D(i);
                h = H(i);
                g = G(i);
                if (g > eps) break;
                dataGridView.Rows.Add(i, d, h, g);
                i++;
            }
        }
Добавлено через 1 минуту
Только учти что данный код не остановится т.к.
C#
1
if (g > eps) break;
Никогда не сработает. Значения только растут а не уменьшаются. Дальше думай сам.
0
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 52
06.01.2016, 01:06  [ТС]
Работать она должна, так как все значения зависят не от i, а от x. Нахождение x я еще не реализовал. Вот формула:
x=x-((exp(x)+2x-3)/(exp(x)+2)). Начальное x берется равное 1

Добавлено через 26 минут
Вот что то подобное реализовал на С++, результат содержит i, x, g(x).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <fstream>
#include <math.h>
 
using namespace std;
 
int main ()
{
    double exp=2.7182;
    double xn, xn1;
    float e = (float)0.0000001;
    xn1 = 1.;
    xn = xn1-((pow(exp,xn1)+2*xn1-3)/(pow(exp,xn1)+2));
 
    float g =(pow(exp,xn1)+2*xn1-3)/3;
    int i = 0;
    while (g>e)
    {
        cout << i << ' ' << xn << ' ' << g <<endl;
        xn1 = xn;
        xn = xn1-((pow(exp,xn1)+2*xn1-3)/(pow(exp,xn1)+2));
        g =(pow(exp,xn1)+2*xn1-3)/3;
        i++;
    }
    cout << i << ' ' << xn << ' ' << g <<endl;
    cout << xn;
    system("pause>>void");
    return 0;
}
Осталось сделать, что бы результаты в dataGridView записывались
0
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
06.01.2016, 06:22
Лучший ответ Сообщение было отмечено Михаил19932 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private void button_1_Click(object sender, EventArgs e)
        {
            dataGridView.Rows.Clear();
            double exp = 2.7182;
            double xn, xn1;
            float e_end = 0.0000001F;
            xn1 = 1D;
            xn = xn1 - ((Math.Pow(exp, xn1) + 2 * xn1 - 3) / (Math.Pow(exp, xn1) + 2));
 
            float g = (float)(Math.Pow(exp, xn1) + 2 * xn1 - 3) / 3;
            int i = 0;
            while (g > e_end)
            {
                dataGridView.Rows.Add(i, xn, g);
                xn1 = xn;
                xn = xn1 - ((Math.Pow(exp, xn1) + 2 * xn1 - 3) / (Math.Pow(exp, xn1) + 2));
                g = (float)(Math.Pow(exp, xn1) + 2 * xn1 - 3) / 3;
                i++;
            }
        }
1
0 / 0 / 0
Регистрация: 07.06.2014
Сообщений: 52
06.01.2016, 12:59  [ТС]
Спасибо большое)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.01.2016, 12:59
Помогаю со студенческими работами здесь

StringGrid: сменить цвет ячейки при нажатии на кнопку
Есть stringgrid и кнопка. При нажатии на кнопку происходит поиск одинаковых значений в ячейках. Если одинаковые значения есть, то...

При нажатии на кнопку,должны выводиться только папки этой папки и их содержимое
При нажатии на кнопку,должны выводиться только папки этой папки и их содержимое.Не должны выводиться файлы с разными расширениями.только...

Считать значение ячейки в цикле при открытии формы или нажатии на кнопку
Здравствуйте, у меня такого рода вопрос: 1) Мне нужно создать цикл, который будет срабатывать при открытии формы или нажатии на...

Как сделать, чтобы при первом нажатии на кнопку TButton появлялось одно сообщение, а при втором нажатии - другое?
помогите как сделать в чтобы в кнопке button при первом нажатий вылазило сообщение ShowMessage('Вы ввели неверные данные, повторите...

Необходимо, чтобы при нажатии на одну из кнопок меню, фрейм с рекламой сворачивался, и разворачивался снова при нажатии на другую кнопку
Задача такая: Есть три фрейма (расположены друг под другом) - это реклама (вверху), меню (посередке) и главная страница (внизу)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru