Вопрос № 60552: Здравсвуйте!
Посоветуйте:
Имееся следующая структура:
struct book
{
char Fio[40];
char BName[50];
int year;
char dis[30];
};
Структура описывает книгу (ФИО автора, название, год выпуска и специальность(допустим...Вопрос № 60555: Здравствуйте, Уважаемые.
Задача: решение матриц методом Зейделя. Матрицу нужно из файла *.tхt открыть. Например так: FILE *fp1; fp1 = fopen(„datei.txt“, „r“);
Ну и решить, соответственно. Так вот, раньше я всегда заранее задавал размеры ...Вопрос № 60605: Здравствуйте уважаемые эксперты. Пишу на Borland C++ Builder6.0. Проблема такова. Присваиваю значение переменной в 1 форме , а во второй ее значение равно 0 ( см. приложение) Где ошибка? Не могу перенести данные!...
Вопрос № 60.552
Здравсвуйте!
Посоветуйте:
Имееся следующая структура:
struct book
{
char Fio[40];
char BName[50];
int year;
char dis[30];
};
Структура описывает книгу (ФИО автора, название, год выпуска и специальность(допустим есть Матан, Физика, Дискретка, Электроника и Химия)
Есть компонент StringGrid, я считываю из файла кусками...fread(&b, sizeof(book), 1, f); перед этим book b;
и заношу в этот компонент:
S->Cells[0][i]=b.Fio;
S->Cells[1][i]=b.BName;
S->Cells[2][i]=IntToStr(b.year);
S->Cells[3][i]=b.dis;
S - имя StringGrid'а
Вопрос в следущем - как мне отсортировать в таблице книги по дисциплине...(по алфавиту)
Заранее спасибо!
Отправлен: 29.10.2006, 14:06
Вопрос задал: Минус (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: PROD
Здравствуйте, Минус!
насколько я знаю в самом компоненте сортировка не предусмотрена. поэтому только стандартными методами - вложенные циклы, ascii-коды первых букв и т.д.
Если стандартных алгоритмов сортировки незнаете постучитесь в личку - распишу, ну или на форуме
Ответ отправил: PROD (статус: 5-ый класс)
Ответ отправлен: 29.10.2006, 16:59
Вопрос № 60.555
Здравствуйте, Уважаемые.
Задача: решение матриц методом Зейделя. Матрицу нужно из файла *.tхt открыть. Например так: FILE *fp1; fp1 = fopen(„datei.txt“, „r“);
Ну и решить, соответственно. Так вот, раньше я всегда заранее задавал размеры матрицы, а как в таком случае поступить, если размер неизвестен? И каким образом описать эту матрицу в *.tхt, чтобы программа поняла, что это именно матрица?
Хотелось бы увидеть простенький пример(кусок кода).
Отвечает: Torsten
Здравствуйте, Евсеев В. Н.!
Задать специальный формат файла.
Например в первых 8 байтах будут хранится количество строк и столбцов матрицы. По 4 байта (int) для параметра. А за ними элементы матрицы построчно.
Таким образом алгоритм считывании таков.
1) Прочитать первые 8 байт и записать их значения.
2) Динамически выделить память для матрицы.
3) С помощью стандартных циклов инициализировать элементы матрицы считывая значения из файла.
Код написан без проверки.
Приложение:
--------- #define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 2-ой класс)
Ответ отправлен: 29.10.2006, 16:56 Оценка за ответ: 5 Комментарий оценки: Забыл сказать, что язык Си(не Си++) - сам виноват, но теория ясна. Спасибо.
Отвечает: JohnP
Здравствуйте, Евсеев В. Н.!
Чтобы программа поняла, что файл - нужного типа,
можно в начале файла задавать некоторый "уникальный идентификатор",
как это в большинстве случаев и делается.
Например четыре символа: "DWTR" (dynamic matrix).
Чтобы хранить матрицы разных размерностей, после
идентификатора можно задавать размер по x и по y,
то есть два раза по четырехбайтовому числу.
Это все - заголовок файла, дальше - непосредственно данные матрицы.
Замечание.
Можно сразу условиться, какого типа будут элементы матрицы.
Например, int (четыре байта). Тогда никаких проблем.
Если же предусматривать, что тип элементов может быть разный,
то эту информацию тоже следует сохранять в заголовке файла.
Например, указывать размерность элемента в байтах и
тип элемента (вещественный/целый/беззнаковый целый).
Вот пример функций для загрузки и сохранения матрицы:
Приложение:
Ответ отправил: JohnP (статус: 2-ой класс)
Ответ отправлен: 29.10.2006, 18:53 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Вопрос № 60.605
Здравствуйте уважаемые эксперты. Пишу на Borland C++ Builder6.0. Проблема такова. Присваиваю значение переменной в 1 форме , а во второй ее значение равно 0 ( см. приложение) Где ошибка? Не могу перенести данные!
Приложение:
Отправлен: 29.10.2006, 21:48
Вопрос задал: Cappuccino (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: JohnP
Здравствуйте, Cappuccino!
Это разные A.
Чтобы убедиться в этом выведите на экран указатель на A
(ввиде (ULONG)&A) из первой формы, а потом из второй.
Объект А создается при каждом включении модуля Unit2.h.
Чтобы избежать этого используйте спецификатор extern.
Кроме того это же касается int PB100[50] и int dataset.
PS обожаю капуччино с шоколадной крошкой
Ответ отправил: JohnP (статус: 2-ой класс)
Ответ отправлен: 29.10.2006, 23:54
Отвечает: PROD
Здравствуйте, Cappuccino!
либо попробуйте как сказал JohnP (его предложение правильнее), либо пропишите глобальные переменные в Юнит1 и пропишите кольцом Unit1.h в Unit2 и наоборот
Ответ отправил: PROD (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 08:51