|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.04.2009, 18:34 | #1 |
Пользователь
Регистрация: 06.12.2008
Сообщений: 58
|
Создать файл с данными на основе другого файла. Паскаль))
Всем привет, и вот в очёредной раз мне нужна ваша помощь,как обьяснить незнаю лучше условие задачи напишу:
Дано число К(<10) и текстовый файл содержащий более к строк. Создать новый файл содержащий к последних строк исходного файла. Как из кол. строк отнять вот эт К и потом его вписать,а то он мне вписывает в файл колю строк а не саи строки(((( Код:
Последний раз редактировалось Stilet; 16.04.2009 в 08:34. |
14.04.2009, 18:39 | #2 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Заводится массив строк (array[1 .. 10] of string), поскольку K < 10 (< или <= ?), далее последовательно считываются строки из входного файла. После того, как считана строка, весь массив сдвигается, то есть a[1] := a[2]; a[2] := a[3]; ... a[k - 1] := a[k]; затем на место a[k] присваивается свежесчитанная строка. Так продолжается, пока есть строки.
Когда будет считана последняя строка, в массиве будут находиться как раз последние строки, так что их и вывести. |
14.04.2009, 22:24 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Достаточно организовать циклическую очередь Код:
тогда вывод строк в новый файл будет выглядеть так: Код:
|
|
15.04.2009, 03:08 | #4 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Охотно верю, но для начала сойдёт.
Правда, к Delphi и FPC это не относится, там строки указателями хранятся |
15.04.2009, 10:09 | #5 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
А если нужно не 10 последних строчек, а, допустим, 30... в 30 раз больше будет операций сравнения? ;-) Поэтому, всё таки, лучше использовать эффективные алгоритмы, а не надеяться на 4-х ядерные процессоры и сверхбыстрое железо... |
||
15.04.2009, 10:34 | #6 | |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Не соглашусь. Нужно стремиться к тому, чтобы в каждый момент приходилось решать как можно меньше задач. Прямо как в поговорке: не класть две горошины на одну ложку.
Исходя из своей практики программирования, нужно поскорее добиваться работающего кода. Когда будет работающий код, отталкиваясь от него, можно улучшать, при этом код как можно чаще должен оказываться в рабочем состоянии. У меня иногда бывает, что нужно написать много текста, и оно не заработает, пока всё не напишешь. Всё то время, что я пишу код, я вынужден держать в голове, как он работает, что, где и как, и могу сказать, это работа напряжённая, да ещё и отлаживать каждый раз приходится. Обязательно где–нибудь ошибка будет. Но как только всё отлажено, можно сбросить буферы, и уже дальше решать, что делать. Улучшать можно в разные стороны. А можно и не улучшать. Цитата:
А ещё я знаю, что у WideString нет счётчика ссылок, зато их можно использовать в функциях DLL. (AFAIK в Delphi 2009 их переименовали в OLEString, а WideString теперь тоже со счётчиком ссылок, а в FPC счётчик ссылок для WideString был с самого начала) |
|
15.04.2009, 17:32 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Конкрентно. Приведённый мною код не работает? (честно скажу - я его не проверял и даже не компилировал!!) Или запись в массив "по кругу" используя указатель - это сложно для понимания/отладки?! я согласен, что бывают случаи, когда нужно сделать быстро, "в лоб". но, имхо, данная ситуация - не тот случай... и, возращаясь к теории. я думаю, что многое зависит и от конкретной ситуации, и от опыта/предпочтений конкретно того программиста, который решает данную задачу... p.s. мне, например, очень удивителен Ваш спор, т.к. на мой взгляд, сложность предложенного мною алогоритма не больше, чем с переносом элементов массива, а эффективность очевидно выше... впрочем, думаю, что это как раз пример разных взглядов у разных программистов... |
|
16.04.2009, 02:37 | #8 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Я не за себя спорю, мне всё очевидно, я пытаюсь быть адвокатом ТС. Впрочем, без самого ТС в теме это не может быть всерьёз.
|
16.04.2009, 02:44 | #9 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
А что, с конца файла нельзя считать k строк?!
(Да ещё их там может и не оказаться, да?)
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
16.04.2009, 05:53 | #10 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Можно (кстати, вот и наглядная демонстрация, почему можно было не делать циклическую очередь), только в разделе «Помощь студентам» это вряд ли прокатит.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
BMP-файл внутри другого файла | Pashan | Общие вопросы C/C++ | 0 | 08.04.2009 16:37 |
Помогите создать компонент на основе PageControl | SibBear | Компоненты Delphi | 5 | 23.03.2009 16:28 |
Паскаль, файл с данными | Алина-малина | Помощь студентам | 11 | 13.12.2008 21:38 |
Два XL файла, данные 1-го файла являются частью другого в формуле 2-го | Кот | Microsoft Office Excel | 2 | 14.08.2007 16:56 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |