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

Классы и StringGrid

14.06.2019, 13:21. Показов 877. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программу реализовать с использованием класса и компонента StringGrid. Должна быть
возможность добавления в таблицу, сохранения в текстовый файл и загрузки из файла.
Различные цеха завода выпускают продукцию нескольких наименований. Сведения о
выпущенной продукции включают: наименование, количество, номер цеха. Для заданного
цеха необходимо вывести количество выпущенных изделий по каждому наименованию в
порядке убывания количества. Ключ: количество выпущенных изделий.

Не могу сделать правильную сортировку.

*.cpp
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <fstream.h>
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
int i=0;
 
void Prod::dobav_zap() {
        Kol = StrToFloat(Form1->LabeledEdit1->Text);
        Name = Form1->LabeledEdit2->Text;
        NumCeh = StrToInt(Form1->LabeledEdit3->Text);
}
 
 
void Prod::show() {
        Form1->StringGrid1->Cells[0][i] = Kol;
        Form1->StringGrid1->Cells[1][i] = AnsiString(Name);
        Form1->StringGrid1->Cells[2][i] = NumCeh;
 
}
void Prod::dobav_zap_iz_SG() {
        Kol = StrToFloat(Form1->StringGrid1->Cells[0][i]);
        Name = Form1->StringGrid1->Cells[1][i].c_str();
        NumCeh = StrToInt(Form1->StringGrid1->Cells[2][i]);
 
 
}
const int KolProd = 100;
Prod *VseProd[KolProd];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
 
{
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        VseProd[i] = new Prod;
        VseProd[i]->dobav_zap();
        VseProd[i]->show();
        i++;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   if(SaveDialog1->Execute())
   {
      char *filename = SaveDialog1->FileName.c_str();
      ofstream AllOrder(filename);
      for(int e = 0; e < StringGrid1->RowCount; e++)
      {
        StringGrid1->Rows[e]->Delimiter = ' ';
        AnsiString s = StringGrid1->Rows[e]->DelimitedText;
        char *st = s.c_str();
        AllOrder << st << endl;
    }
    AllOrder.close();
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  TStringList * SL = new TStringList;
  if (OpenDialog1->Execute()){
     SL -> LoadFromFile(OpenDialog1->FileName.c_str());
     for (int e=0; e<StringGrid1->RowCount; e++) {
          StringGrid1->Rows[e]->DelimitedText = SL->Strings[e];
     }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  TStringList *SL = new TStringList;
  String S;
 
  for (int i=0; i < Form1->StringGrid1->RowCount; i++) {
    S=" ";
    for (int j=0; j < Form1->StringGrid1->ColCount; j++) S += Form1->StringGrid1->Cells[j][i]+" ";
    SL->Add(S);
  }
 
  SL->Sort();
 
  for (int i=0; i < Form1->StringGrid1->RowCount; i++)  {
     Form1->StringGrid1->Rows[i]->DelimitedText = SL->Strings[i];
  }
delete SL;
}
//---------------------------------------------------------------------------

*.h
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Dialogs.hpp>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TGroupBox *GroupBox1;
        TLabeledEdit *LabeledEdit1;
        TLabeledEdit *LabeledEdit2;
        TLabeledEdit *LabeledEdit3;
        TButton *Button1;
        TStringGrid *StringGrid1;
        TButton *Button2;
        TButton *Button3;
        TButton *Button4;
        TOpenDialog *OpenDialog1;
        TSaveDialog *SaveDialog1;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall Button3Click(TObject *Sender);
        void __fastcall Button4Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
class Prod{
  private:
        AnsiString Name;
        int NumCeh;
        float Kol;
  public:
        void dobav_zap();
        void show();
        void dobav_zap_iz_SG();
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Добавлено через 23 минуты
Сделал сортировку, но не знаю как сделать выборку по цеху

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  int Col_sort = 1;
 
 String value;
 for (int i = 0; i < StringGrid1->RowCount; i++)
  for (int j = i; j < StringGrid1->RowCount; j++)
    {
     if (StringGrid1->Cells[Col_sort][i].ToInt()<StringGrid1->Cells[Col_sort][j].ToInt())
     {
         for(int k=0;k<StringGrid1->ColCount;k++)
            {
              value=StringGrid1->Cells[k][i];
              StringGrid1->Cells[k][i]= StringGrid1->Cells[k][j];
              StringGrid1->Cells[k][j]= value;
            }
     }
    }
  }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.06.2019, 13:21
Ответы с готовыми решениями:

Классы и StringGrid
Добрый вечер, Появился такой вопрос: Есть таблица stringGrid в которую в последующем загружаются данные из txt. Вот код : TForm4...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

Определить классы абстрактного выражения и классы для различных типов выражений
помогите Реализовать объектно-ориентированную модель, определяет математическое выражение, представлен в виде дерева. Определить классы...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2019, 13:21
Помогаю со студенческими работами здесь

Непонятна тема (Классы содержащие другие классы, как данные члены )
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class Point { public: void...

Работа с файловой системой: классы Directory и Filе и классы DirectoryInfo и FileInfo
Уважаемые форумчане помогите пожалуйста с практической работой. Программным путем: В папке С:\temp создайте папки К1 и К2. В...

Структуры данных, коллекции и классы-прототипы. Библиотечные классы коллекций
Ребят в чём ошибки? Нужно чтобы добавляло поля... которые я создал... далее вот продолжение самого задания Изменить приложение,...

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы
Нужно написать программу, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы. Реализовать её нужно в трех...

Проблема в понимании ООП(абстрактные классы, классы интерфейсы)
Всем здравия. Читал в свое время разные книги(к примеру, Гради Буч по проектированию) вроде все было понятно. Но тут с толкнулся с...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка 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 25.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 и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru