Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56

Почему в chart'е не рисует график когда я выбираю чтение с текстового файла?

06.06.2017, 19:39. Показов 803. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Не могу найти ошибку почему в chart'е не рисует график когда я выбираю чтение с текстового файла. Если ввести вручную через datagridview то все рисует.
Это моя функция по которому должен выводится график
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
//подключение библиотек и заголовочных файлов
#include "Spline.h"
#include <iostream>
#include <cmath>
 
void cwert(double** mmm, double xxx, int row)
{
    double *alpha = new double[row-1];
    double *beta = new double[row-1];
    double *c = new double[row-1];
    double A, B, C, F, h, h1, z, D, e;
 
    alpha[0] = 0;
    beta[0] = 0;
    c[0] = 0;
 
    for (int i = 1; i < row-1; i++)
    {
        //вычисление коэффициентов полиномов
        h = mmm[0][i] - mmm[0][i - 1];
        h1 = mmm[0][i + 1] - mmm[0][i];
        A = h;
        B = 2.*(h + h1);
        C = h1;
        D = 6.*((mmm[1][i + 1] - mmm[1][i]) / h1 - (mmm[1][i] - mmm[1][i - 1]) / h);
        e = A*alpha[i - 1] + B;
        alpha[i] = -C / e;
        beta[i] = (D - A*beta[i - 1]) / e;
    }
    c[row - 1] = (D - A*beta[row - 2]) / (B + A*alpha[row - 2]);
 
    for (int i = row-2; i > 0; i--)
    {
        c[i] = alpha[i] * c[i + 1] + beta[i];
    }
}
 
double S(double** mmm, double xxx, int row, double *aa, double *bb, double *cc, double *dd)
{
    cwert(mmm, xxx, row);
 
    double S = 0;
    double h;
    for (int i = row-1; i >= 0; i--)
    {
        dd[i] = cc[i] = bb[i] = aa[i] = 0;
    }
 
    for (int i = row-1; i >= 0; i--)
    {
        h = mmm[0][i] - mmm[0][i - 1];
        aa[i] = mmm[1][i];
        dd[i] = (cc[i] - cc[i - 1]) / h;
        bb[i] = 0.5*h*cc[i] - (1 / 6.)*h*h*dd[i] + (mmm[1][i] - mmm[1][i - 1]) / h;
    }
 
    for (int i = 1; i < row-1; i++)
    {
        S = aa[i] + bb[i] * (xxx - mmm[i][0]) + (cc[i] / 2) * pow((xxx - mmm[i][0]), 2) + (dd[i] / 6) * pow((xxx - mmm[i][0]), 3);//вычисление по формуле
    }
    
    return S;
}
Это чтение с текстового файла
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
if (checkBox1->Checked)
        {
            String^ Line;
            array<String^>^ strArr;
            array<Char>^ charArr = { ' ', '\n' };
            try
            {
                FileStream^ fs = gcnew FileStream("input.txt", FileMode::Open);
                StreamReader^ sr = gcnew StreamReader(fs, Encoding::UTF8);
                int i = 0;
                while (sr->EndOfStream != true)  // framework 2.0
                {
                    sr->ReadLine();
                    i++;
 
                }
                input->RowCount = i;
                i = 0;
 
                sr->DiscardBufferedData();
                sr->BaseStream->Seek(0, IO::SeekOrigin::Begin);
                while (sr->EndOfStream != true)  // framework 2.0
                {
 
                    Line = sr->ReadLine();
                    strArr = Line->Split(charArr);
                    /*for (int i = 0; i < strArr->Length; i++)
                    {
                    MessageBox::Show(strArr[i]->Trim());
                    }*/
                    input->Rows[i]->Cells["X"]->Value = strArr[0]->Trim();
                    input->Rows[i]->Cells["Y"]->Value = strArr[1]->Trim();
                    //
                    i++;
                    //  MessageBox::Show(Convert::ToString(input->RowCount));
                }
 
                sr->Close();
            }
            catch (Exception^ ex) {
                //MessageBox::Show(ex->Message);
            }
        }
это весь код(input - datagridview, checkbox1 - чтение из файла)
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
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
        chart1->Series["Spline"]->Points->Clear();//очистка линий
        chart1->Series["Line"]->Points->Clear();//очистка линий
 
        if (checkBox1->Checked)
        {
            String^ Line;
            array<String^>^ strArr;
            array<Char>^ charArr = { ' ', '\n' };
            try
            {
                FileStream^ fs = gcnew FileStream("input.txt", FileMode::Open);
                StreamReader^ sr = gcnew StreamReader(fs, Encoding::UTF8);
                int i = 0;
                while (sr->EndOfStream != true)  // framework 2.0
                {
                    sr->ReadLine();
                    i++;
 
                }
                input->RowCount = i;
                i = 0;
 
                sr->DiscardBufferedData();
                sr->BaseStream->Seek(0, IO::SeekOrigin::Begin);
                while (sr->EndOfStream != true)  // framework 2.0
                {
 
                    Line = sr->ReadLine();
                    strArr = Line->Split(charArr);
                    /*for (int i = 0; i < strArr->Length; i++)
                    {
                    MessageBox::Show(strArr[i]->Trim());
                    }*/
                    input->Rows[i]->Cells["X"]->Value = strArr[0]->Trim();
                    input->Rows[i]->Cells["Y"]->Value = strArr[1]->Trim();
                    //
                    i++;
                    //  MessageBox::Show(Convert::ToString(input->RowCount));
                }
 
                sr->Close();
            }
            catch (Exception^ ex) {
                //MessageBox::Show(ex->Message);
            }
        }
 
        int row = input->RowCount;//подстчет количество введеных данных
 
        double **mmm = new double *[row-1];//создание массива
 
        for (int i = 0; i < row-1; i++)
        {
            mmm[i] = new double[2];//в массиве 2 колонки
        }
 
 
        for (int i = 0; i < row-1; i++)
        {
            mmm[i][0] = Convert::ToDouble(input->Rows[i]->Cells["X"]->Value->ToString());//конвертировать строку в число
            mmm[i][1] = Convert::ToDouble(input->Rows[i]->Cells["Y"]->Value->ToString());
 
            if (checkBox3->Checked)
            {
                chart1->Series["Line"]->Points->Clear();//очистка линии сплайна
                chart1->Series["Spline"]->Points->AddXY(mmm[i][0], mmm[i][1]);//добавление на график точек
            }
        }
 
        double xxx, g;
        double *aa = new double[row-1];
        double *bb = new double[row-1];
        double *cc = new double[row-1];
        double *dd = new double[row-1];
 
 
        for (int i = 0; i < row-1; i++)
        {
            if (checkBox3->Checked)
            {
                xxx = mmm[i][2];
                g = S(mmm, xxx, row-1, aa, bb, cc, dd);//результат
                chart1->Series["Line"]->Points->Clear();
                chart1->Series["Spline"]->Points->AddXY(xxx, g);
                std::ofstream ff("cubic.txt", std::ios_base::out);
                if (ff.is_open())
                {
                    ff << "Работа программы кубического сплайна :" << std::endl;
                    ff << "результ. по точкам " << g << "\n" << "время " << clock() / 1000.0 << std::endl;
                    for (int i = 0; i < row-1; i++)
                    {
                        //ff << "F(x)=" << i << " " << mmm[i][1] << "+" << mmm[i][2] << "+" << mmm[i][1] / 2 << "+" << mmm[i][1] / 6 << "+" << mmm[i][2];
                        ff << "F(x)=" << i << " ";//запись
                        ff << std::endl;
                        ff << mmm[i][0] << " " << mmm[i][1];//запись
                        ff << "\n------------------\r\n" << " " << aa[i] << "+" << " " << bb[i] << "*" << " " << "(x - " << mmm[i][0] << ")" << " " << "+" << cc[i] << "*" << " " <<"(x - " << mmm[i][0] << ")^2" << " " << "+" << dd[i]/6. << "*" << " " << "(x - " << mmm[i][0] << ")^3";
 
                        ff << std::endl;
                    }
                    ff << std::endl;
                    ff << "------------------\n\r" << std::endl;
                }
                else
                    ff << errno;
                ff.close();
            }
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2017, 19:39
Ответы с готовыми решениями:

Не могу понять, почему не идёт чтение из текстового файла на форму!
private void buttonOK_Click(object sender, EventArgs e) { StreamReader file = new StreamReader(&quot;Vopros i otveti na...

C# Почему вместо гистограммы рисует график?
Делаю в Visiual studio. Я ввожу в текстбокс двоичное число, например 01010001. Где 0 , у=0, где 1, у=1. Хочу, чтобы на графике было в виде...

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, &quot;ing&quot;) в текстовом документе. в прикреплённом коде текст вводится прямо в консоль,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2017, 19:39
Помогаю со студенческими работами здесь

Чтение из одного текстового файла и копирование на другой текстового файл с заменой пробелов на "_"
Здравствуйте, помогите пожалуйста с паскалем. Надо прочитать текстовый файл (в нем строки с именами типа: Имя Фамилия; в каждой строке одно...

Чтение из одного текстового файла и копирование на другой текстового файл с заменой пробелов на "_"
Здравствуйте, помогите пожалуйста с паскалем. Надо прочитать текстовый файл (в нем строки с именами типа: Имя Фамилия; в каждой строке одно...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла.
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

Как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла?
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Создание текстового файла и чтение данных из файла
Здравствуйте. Дана задача : Создать файл, содержащий сведения о сдаче студентами первого курса сессии. Структура записи – Индекс группы,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru