![]() |
|
|
![]()
|
|
| Khan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 22.2.2006 Репутация: нет Всего: нет |
Программка по статистике. Необходимо сравнивать расчетное значение, полученной по расчетам, с табличным значением.
В таблице (допустим StringGrid) в нулевых столбце и строке как бы заголовки (они известны), по которым находится искомое значение. Допустим столбец - 3, строка - 7... на их пересечении - искомое значение. Вопрос: как лучше хранить данную таблицу? В файле? тогда как реализовать поиск внутри файла и выбирать оттуда значение? Или может разместить на форме невидимую панель с таблицей значений и таким образом брать значения оттуда? Может кто решал наподобие такой задачи, подскажите, плиз... |
|||
|
||||
| petlyura |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
Лучше хранить в массиве.
Можно, и в файле. Считываешь с файла данные в массив и сравнивай. Не используй для этого невидимый StringGrid - это бред |
|||
|
||||
| Khan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 22.2.2006 Репутация: нет Всего: нет |
petlyura, а можно пример?
|
|||
|
||||
| petlyura |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 30.1.2008 Где: Харьков Репутация: 2 Всего: 2 |
AnsiString FileName = "statistic.csv"; //файл будет открываться Excel, что для статистики очень хорошо. Точкой с запятой разделены
//значения в одной строке, строки начинаются с новой строки int hand, l, int Leng; float** Mass; int Row, Col;//Mass, Row, Col не должны быть здесь локальными, иначе не будут доступными нигде char * pBuff; hand = FileOpen(FileName,fmOpenRead); //получить дескриптор файла, файл предназначен для чтения Leng = FileSeek(hand,0,2); //получить длину файла FileSeek(hand,0,0); //установить на начало файла движок pBuff = new char [Leng+1]; FileRead(hand,pBuff,Leng); //считать в буффер FileClose(hand); //закрыть файл AnsiString str=""; int z=0; while(pBuff[z]!='\r')//считываем количество строк { str+=pBuff[z++]; while (pBuff[z]==';') { z++; } } z++;z++; //пропускаем символ '\r' и '\n' Row = StrToInt(str); str=""; while(pBuff[z]!='\r')//считываем количество столбцов { str+=pBuff[z++]; while (pBuff[z]==';') { z++; } } z++;z++; //пропускаем символ '\r' и '\n' Col = StrToInt(str); Mass = new float*[Row]; for (int i=0; i<Row; i++) { Mass[i] = new float[Col]; } for(int i=0;i<Row;i++) //запись в массив значений for(int j=0;j<Col;j++) { str=""; while(pBuff[z]!='\r'&&pBuff[z]!=' '&&pBuff[z]!='\n'&&pBuff[z]!=';') { str+=pBuff[z++]; } z++; if (str=="") { j--; } else Mass[i][j] = StrToFloat(str); } delete [] pBuff; for (int i=0; i<Row; i++) //Ну и где-то надо очистить память { delete [] Mass[i]; } delete [] Mass; |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |