![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 12
|
![]()
Есть база в типизированном файле.
Выполняю замену данных в одной из строк.. вроде код написан, но в базе изменений не происходит, выводит изначальный вариант. Код:
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (кнопочка на панели форматирования с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 02.04.2014 в 13:05. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
![]()
Вы изменения делаете для элемента массива, а не для записи.
И пишете в файл исходную запись. Если вам нужно редактировать конкретную запись в файле, необязательно читать весь файл. И не нужно читать его в массив. Код:
Последний раз редактировалось ZX Spectrum-128; 02.04.2014 в 13:11. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ну, как минимум, перед поиском записей стоит установить указатель на начало файла. Это можно сделать процедурой Reset(f) или Seek(f,0):
Код:
Код:
p.s. ну и учтите, что чтение в массив можно упростить... |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
увидел, что в программе присутствует ещё несколько косячков..
позволил себе переписать код без массива... Код:
p.s. если нужно с массивом, скажите, перепишу ваш код с использованием массива... |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 12
|
![]()
Спасибо. Здесь действительно можно без массива.
Есть еще такой вопрос. По этой же базе данных нужно подсчитать оборот по каждому продавцу. Продавцы в базе повторяются и оборот считается столько раз, сколько встречается фамилия, то есть по каждой строке. Как поставить условие, чтобы итоговый оборот по каждой фамилии был посчитан только один раз? Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
считайте данные в массив, отсортируйте массив по продавцу (это обеспечит, что одинаковые продавцы будут идти в массиве ПОДРЯД).
Потом просто: берём первого продавца (max[1].prodavec и идём по массиву, пока mas[i] равно взятому продавцу, всё встреченные обороты суммируем. Как только продавец сменился - выдаём результат по запомненному продавцу, запоминаем нового, сбрасываем обороты (начинаем считать заново, с mas[i].oborot и так до конца массива. всё! p.s. Вы так и не исправили грубую ошибку чтения записей из файла в массив. ![]() Записей в файле может быть совсем не 10, поэтому нужно подсчитывать фактическое N, сколько записей реально прочитали в массив! |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 12
|
![]()
Да, массив понятно что mas:array[1..n] of zap;
Добавил сортировку по алфавиту, изменил условие вывода данных, теперь выдает ошибку "индекс вне границ массива" Код:
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
не так.
а вот так: Код:
Последний раз редактировалось Serge_Bliznykov; 02.04.2014 в 15:48. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 12
|
![]()
Отлично! С маленькой поправкой все работает как надо.
Там только где t:=mas[1].prodavec; a:= mas[i].oborot; надо оборот тоже писать 1 вместо i. Благодарю |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Имеется типизированный файл с тридцатью числами. Записать в другой файл числа имеющегося файла в обратном порядке. | Валентин77 | Общие вопросы C/C++ | 8 | 17.12.2013 22:53 |
Тип данных запись, необходимо создать типизированный файл записей | sifa | Помощь студентам | 1 | 29.11.2011 21:56 |
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] | mifomen | Помощь студентам | 7 | 16.12.2010 22:00 |