![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Talya |
![]()
Сообщение
#1
|
Гость ![]() |
Очень нужна ваша помощь! как можно решить данную задачу? Заранее огромное спасибо!
В текстовом файле подсчитать количество строк, которые начинаются и оканчиваются одной и той же буквой. |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
идешь по файлу, построчно считываешь...
если первая и последняя буква одинаковые - прибавляешь 1 к переменной-счетчику. в чем сложность? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Tan |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Вот о чём тебе говорит мисс_граффити :
uses crt;
Const filename = 'MyFile.txt';
var f : TEXT;
S : string;
sum,a : integer;
begin
assign (f,filename); {связываем виртуальный и физический файлы}
reset (f);
sum:=0;
while not eof(f) do {пока не конец файла читаем строки}
begin
readln (f,s);
a:=Length(s);
if S[1] = S[a] then inc (sum); {cравниваем 1й символ строки и последний если да, в копилку}
end;
Close (f);
writeln (sum); {содержание копилки на экран}
readkey;
end.
Сообщение отредактировано: Tan - 6.04.2007 11:22 -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
a:=Length(s);
if S[1] = S[a]
а зачем нам дополнительная переменная а? if S[1] = S[length(s)]
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Tan |
![]() ![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
да, я сам заметил, когда уже запостил, но не изменил, так как не смертельно
![]() -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
sintanial |
![]()
Сообщение
#6
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: ![]() ![]() ![]() |
Эмм вот тоже задали это же. Я её сделал сначало с типом стринг однако потом я понял что так не верно на самом деле так как стринг имеет всего 255 символов, а если строка будет больше в файле ? то она вся не поместится в переменную. Вот поэтому задаю вопрос как быть ? У меня вот такая идея: создать две переменные типа чар и в одну записывать начало строки в другую конец строки. Однако у меня появилась трудность на практике. Помогите плиз
1) начало строки записать труда не составляет, а вот как одновременно, во вторую записать конец строки?. Потому что я когда в цикле записываю в первую переменную литеру, то одновременно записывается литера и во вторую. А как сделать так что бы в первую записалась первая литера этой строки а во вторую конец это строки, я не могу понять =) ? 2) когда я во вторую переменную записываю конец строки то записывается одна из цифр вот этих записей #13#10 - я так понял что это означает перейти на другую строку, однако как сделать так что бы это не записывалось ? в мою переменную. (я так думаю может функцией seekeoln однако как тогда быть с пунктом 1 =) 3) Слушайте а как в текстовом файле сразу перейти на конец строки? |
samec |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
надо завести три переменных типа char (ch1, ch2 и ch3 например). Сначала считываешь в первую переменную (ch1) самый первый символ строки. Приравниваешь значение второй переменной, значению первой (ch2:=ch1) Потом начинается цикл. В нём читаешь следующий символ в третью переменную (в ch3). Проверяешь, не равен ли считанный символ #13 (ch3<>#13 ???), если условие выполнено (тоесть ch3<>#13) то приравниваешь значение второй переменной, значению третьей (сh2:=ch3) и переходишь к следующей итерации цикла. Если же условие не выполнено (тоесть ch3=#13), то выходим из цикла и получаем следующее: первый символ строки - в первой переменной (ch1), последний символ строки во второй переменной (ch2). Сравниваем их, при равенстве увеличиваем счётчик и переходим к следующей строке. Затем всё повторяется от и до
![]() |
Client |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
А можно со строкой и переменной типа char обойтись
|
samec |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
вот что то подобное должно получиться:
uses crt;
Const filename = 'MyFile.txt';
var f : TEXT;
ch1,ch2,ch3:char;
sum: integer;
begin
assign (f,filename); {связываем виртуальный и физический файлы}
reset (f);
sum:=0;
while not eof(f) do {пока не конец файла читаем его посимвольно}
begin
read(f,ch1);
ch2:=ch1;
repeat
read(f,ch3);
if(ch3<>#13)and(ch3<>#26) then ch2:=ch3; {#26 - символ конца файла}
until(ch3=#13)or(ch3=#26);
if ch1 = ch2 then inc (sum); {cравниваем 1й символ строки и последний если да, в копилку}
read(f,ch3); {считываем символ #10}
end;
Close (f);
writeln (sum); {содержание копилки на экран}
readkey;
end.end.
Сообщение отредактировано: samec - 22.05.2008 20:53 |
sintanial |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 70 Пол: Мужской Реальное имя: Мартын Репутация: ![]() ![]() ![]() |
А я сделал попроще =)
var x:real; s1,s2:char; f:text;
begin
assign(f,'te.txt');
reset(f);
while not eof(f) do
begin
read(f,s1);
while seekeoln(f) do
read(f,s2);
readln(f);
if s1=s2 then
x:=x+1;
end;
close(f);
writeln(x);
end.
Сообщение отредактировано: sintanial - 22.05.2008 21:43 |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 5:18 |