Corsairs
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Допустим, нельзя создавать второй файл и нельзя его полностью читать в память, как тогда? Я думаю нужно с конца брать каждый символ и переписывать его на +1 позицию, потом в начало записать 'c'. Какие функции этому понадобятся? | Можно попробовать вот так: Код: var f,g:file of char; i,n:integer; c,s:char; begin // инициализация assign(f,'filename'); assign(g,'filename'); n:=filesize(f); c:='c'; //т.е. символ, который надо вставить в файл for i:=1 to n do begin read(f,s); //считываем первый символ из файла write(g,c); //записываем в файл символ (сначала - тот, который надо добавить, потом - которые были...) c:=s; end; close(f); close(g); end. | т.е. мы используем две файловые переменные, но один и тот же файл. можно обойтись одной файловой переменной, но тогда надо делать так: Код: for i:=0 to n-1 do begin seek(f,i); read(f,s); seek(f,i); write(f,c); c:=s; end; | Цитата: Перебирать файл до конца считая записи, потом если нечетное, с помощью seek выставить указатель на средину файла? | А зачем перебирать? Используем filesize(f) - получаем количество записей... проверяем, если нечетное - тогда seek и read. Цитата: Считывать названия городов из файла и сравнивать с полученным от пользователя? | Ну да... Единственное - такой способ требует правильного набора названия города (и в списке, и для поиска...) |