![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
trminator |
![]()
Сообщение
#1
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Примерно так
Код PROGRAM FindTown; var input:text; s,Find:string; begin assign(input,'c:bpworkinput.txt'); reset(input); ReadLn(Find); While not EOF(input) do begin ReadLn(input,s); if pos(Find,s)<>0 then {Если нужно не любое совпадение, а именно с начала, то кажется =1} WriteLn(s) end; close(input) end. Сообщение отредактировано: volvo - 17.12.2004 14:26 -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
![]() ![]() |
Elected |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 10 Репутация: ![]() ![]() ![]() |
Код Uses Crt; LABEL 1; Var FileTown,FileSumm:text; ch:char; i,Summ:longint; Town,s:string; Summ1:array [1..10] of longint; Town1:array [1..10] of string; Begin 1: ClrScr; Assign(FileTown,'town.dat'); Reset(FileTown); Write('Введите город => '); Readln(Town); While ((not EOF(FileTown))and(pos(Town,s)<>1)) do begin Readln(FileTown,s); If pos(Town,s)<>0 then begin end;end; Close(FileTown); Assign(FileTown,'town.dat'); Reset(FileTown); Assign(FileSumm,'summ.dat'); Reset(FileSumm); For i:=1 To 10 Do Begin Readln(FileTown,Town1[i]); Readln(FileSumm,Summ1[i]); if s=Town1[i] then begin Write(Town1[i],' => '); Writeln(Summ1[i]); Write('Введите новую сумму => '); Readln(Summ1[i]); end;end; Close(FileSumm); Close(FileTown); Assign(FileSumm,'summ.dat'); Rewrite(FileSumm); For i:=1 To 10 Do Begin Writeln(FileSumm,Summ1[i]); end; Close(FileSumm); Write('Нажмите <Enter>'); repeat ch:=ReadKey;if ch=chr(13) then begin Goto 1;end; if ch=chr(27) then until ch=chr(27); End. Вот прога, которая практически выполняет эту задачу, но слишком она и сама сложная. Поиск с файла "города", запись городов с этого же файла в массив, так же и суммы. Работа через массив. Когда то очень давно, лет так 6 назад. Я делал эту задачу при помощи функции Seek (var имя_файла;номер_компоненты:LongInt) - передвигает текущую позицию файла в заданную компоненту. Причем поиск "города" из файла и считывания суммы пренадлежащей заданному городу искались с помощью этой функции. А вот, как это сделать с головы вылетело, годы... Ведь функция Seek не работает с текстовыми файлами. И ещё, готовые результаты новых сумм записывались не заново, т.е. не командой Rewrite, а командой Append. Хотя функция Append используется только в текстовых файлах, а Seek нет. Что очень странно! Может процедуру надо написать. Короче, кто знает как это сделать, прошу откликнуться. А вот использовался массив или нет не помню, но одно точно знаю в файле с городами, было около 10000 городов. Выдержал ли бы массив такого или нет? ??? Я наверное уже достал всех своей проблемой, но больше ни кто не поможет! Заранее благодарен, Алексей. |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 16:03 |