Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 4
Builder 6

График в Builder по Элементам StringGrid

16.04.2019, 20:52. Показов 825. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые знатоки, нужна Ваша помощь в построении графика TChar по элементам из StringGrid.
по оси X - язык на котором говорят в городе, а по оси Y - кол-во городов которых говорят на этом языке.
Вот у меня проблема с подсчетом, потому что данные из StringGrid (столбцы) в массив не заносятся, а как добавить через CompareText в новый массив кол-во подсчитанных городов я не знаю.
StringGrid1->Cells[2][i] - это столбец языков
StringGrid1->Cells[0][i] - столбец городов
Буду очень благодарен за кусок этого кода.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2019, 20:52
Ответы с готовыми решениями:

Есть 2 StringGrid в С++ Builder, и нужно взять оттуда данные и заполнить ими 3 StringGrid, как бы сложить 2 та
Код C++ void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j; float p,p1; for (i = 0; i < 48; i++) { ...

Работа с StringGrid С++ Builder
Помогите пожалуйста. Дан StringGrid1, 3 строки, столбец задается пользователем и заполняется тоже пользователем. Мне нужно, чтоб в...

C++ Builder. Из StringGrid в Excel
Доброго времени суток! У меня возникла проблема, нужна ваша помощь. Задание следующее, дан StringGrid в котором фамилии и оценки, при...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
16.04.2019, 21:47
С подсчетом чего? И как это связано в Chart-ом? Сначала надо посчитать, а потом уже говорить про отображение. Покажи сам заполненный грид, Пока вообще непонятно, как он у тебя выглядит, и что надо посчитать.
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 4
16.04.2019, 22:09  [ТС]
1 картинка это заполненая таблица
2 это как заполняется в ручную (массив в комментарии это норм, его не учитываем)
3 заполнение из файла
Нужно сделать диаграмму т.е. по оси Х написать языки из Cells[2][i], а по оси Y нужно вывести кол-во городов говорящих на этом языке
т.е. допустим на русском говорят только 3 города из перечисленных тобишь точка должна стоять над "русский" и на оси Y число 3
Миниатюры
График в Builder по Элементам StringGrid   График в Builder по Элементам StringGrid   График в Builder по Элементам StringGrid  

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
16.04.2019, 23:15
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
// где-то в начале файла, там где все остальные #include, добавляем еще один:
#include <memory>
 
// ...
 
// Создает наследника класса TStringList, который будет хранить уникальные строки
// (названия языков в нашем случае), и кроме этого, в свойстве Objects будет подсчитывать
// количество в хождений каждого языка
class TMyStringList : public Classes::TStringList
{
public:
    // для этого достаточно переопределить метод AddObjects, поскольку каждый раз, когда
    // в список добавляется строка (любым способом, либо через Add(), либо через изменение
    // свойства Text, как угодно) вызывается именно этот метод. Вот тут и будем подсчитывать 
    // количество вхождений для каждой уникальной строки
    virtual int __fastcall AddObject(const String S, TObject* AObject)
    {
        int Result;
        if ((Result = IndexOf(S)) == -1) // для начала проверяем, присутствует ли уже добавляемая строка в списке
            // если нет - то она уникальна, и мы добавляем в список саму строку, и присваиваем счетчику значение 1
            Result = TStringList::AddObject(S, (TObject*)1);
        else
            // если нет - то строку уже добавлять не нужно, она в списке есть, просто увеличиваем для соответствующего поля Objects счетчик на 1
            Objects[Result] = (TObject*)(((int)Objects[Result] + 1));
        return Result;
    }
};
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        // а теперь все очень просто: создаем экземпляр нашего типа, который по окончании работы с ним самоудалится
    std::auto_ptr<TMyStringList> list(new TMyStringList);
 
    list->AddStrings(StringGrid1->Cols[2]); // добавляем в него все строки, которые есть во втором столбце грида
    list->Delete(list->IndexOf("Официальный язык")); // удаляем строку заголовка, потому что она будет портить график
    for(int i = 0; i < list->Count; i++)
        Series1->Add((int)(list->Objects[i]), list->Strings[i], clRed); // и теперь просто идем по уникальным названиям языков и добавляем в чарт язык и количество его вхождений в StringGrid
}
, как-то так:
Миниатюры
График в Builder по Элементам StringGrid  
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 4
17.04.2019, 06:03  [ТС]
Извините конечно, т.к. я билдер учу по вузовской программе всего пару месяцев, но куда вставлять первую часть?
и что она делает?
Т.е. можете сделать с максимальным комментирование пожалуйста:?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
17.04.2019, 10:46
Какую первую часть? Описание класса TMyStringList? Прямо перед обработчиком нажатия на кнопку, как я и написал.

P.S. Комментарии добавил.
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 4
17.04.2019, 18:22  [ТС]
Сделал, как ты сказал, теперь она компилируется, но если нажать кнопку построить график, то выдает такую ошибку.
Миниатюры
График в Builder по Элементам StringGrid  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
17.04.2019, 18:30
Я не телепат. У меня программа работает, я даже скриншот представил. А что ты там наделал - я не в курсе. Будет проект (желательно - где все данные уже внесены, и в который НИЧЕГО не надо вводить, просто откомпилировать и запустить, для проверки) - будет дальнейшее обсуждение. А вводить десятки строк данных, как у тебя на скрине - мне неинтересно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2019, 18:30
Помогаю со студенческими работами здесь

Загнать в StringGrid C++ Builder
подскажите плиз как загнать данные из текстового файла в StringGrid, если в StringGrid первая строка фиксированая. Код загоняю в...

Ошибка рассчета в StringGrid C++ Builder
Ошибка при подсчете общей суммы за выбранный период{ int m=0; if (Edit1-&gt;Text==&quot;&quot;) ShowMessage(&quot;Вы не ввели...

Поиск ячеек в StringGrid C++ Builder
Здравствуйте! Задача такова: Имеется железнодорожное расписание, содержащее номер рейса поезда, времена отправления и прибытия и...

Добавление записи в StringGrid C++ Builder
при запуске программы в StringGrid добавляются поля из файла. При нажатии кнопки (добавить) эти поля автоматически удаляються. подскажите...

Вывод StringGrid в Excel. / C++ builder
срочно помогите... как вывести StringGrid в Excel Добавлено через 4 минуты тема закрыта.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru