подсчитать количество строк в файле, содержащий заданный символ более одного раза |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
подсчитать количество строк в файле, содержащий заданный символ более одного раза |
kill94 |
9.12.2012 17:20
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
нужно подсчитать количество строк в файле, содержащий заданный символ более одного раза
|
@nto$ka |
11.12.2012 9:51
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Считываешь строку, ищешь там твой символ. На его место ставишь кракозябру, затем ищешь второй раз. Если нашел, то инкременируешь некоторую целую переменную, которая хранит число строк. Повторить процедуру до окончания файла
В чем трудности? |
kill94 |
11.12.2012 12:49
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
проблема в том что то там неправильно пишу и у меня программа зацикливается ...
не можешь написать программу? Сообщение отредактировано: kill94 - 11.12.2012 13:27 |
@nto$ka |
11.12.2012 17:41
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Вслепую сказать ничего не могу. Выкладывайте-с код
|
kill94 |
11.12.2012 18:24
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
ну типа таак
program ololo; Сообщение отредактировано: kill94 - 11.12.2012 23:11 |
@nto$ka |
12.12.2012 15:43
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Во-первых, мой компилятор сразу же заругался, т.к. Вы не открываете файл f1 на чтение
Чтобы открыть файл на чтение нужно использовать процедуру Reset(f1); После чтения не забудьте обязательно ее закрыть. Во-вторых, зачем считывать файл посимвольно ????? Читайте сразу строку! Считав строку, ищите в ней нужный символ. Затем, если такой символ нашелся, то заменяем его на другой (проще всего заменить его на chr(256-ord(sim)) Тогда вы гарантированно получите другой символ ). Наконец, смотрим, есть ли в строке этот символ еще раз. И только тогда увеличиваем число строк q Про файл вывода: Лучше всего открыть f2 процедурой reset(f2); Он создает и открывает НОВЫЙ файл. Кстати вместо Цитата while not eof(f2) do лучше написать просто writeln(q);begin read(f2,c); write©; end; Ну как-то так |
kill94 |
12.12.2012 16:14
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: 0 |
можно подробней что сдесь писать?
while not eof(f1) do begin |
@nto$ka |
13.12.2012 6:01
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Код var s:string; i :integer; ... while not eof(f1) do begin readln(f1,s);//Читай сразу [b]строку[/b] i:=pos(sim, s); //В строке ищем символ if i>0 then //И если он есть begin s[i]:=chr(256-ord(sim)); //Заменим символ на кракозябру if pos(sim, s)> 0 then //И если он встретился во второй раз inc(q); //увеличим число строк end; end; ЗЫ Код не проверял. Писано на коленке |
Текстовая версия | 29.04.2024 0:01 |