IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Файлы
Talya
сообщение 6.04.2007 10:55
Сообщение #1


Гость






Очень нужна ваша помощь! как можно решить данную задачу? Заранее огромное спасибо!
В текстовом файле подсчитать количество строк, которые начинаются и оканчиваются одной и той же буквой.
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 6.04.2007 11:12
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


идешь по файлу, построчно считываешь...
если первая и последняя буква одинаковые - прибавляешь 1 к переменной-счетчику.
в чем сложность?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 6.04.2007 11:21
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Вот о чём тебе говорит мисс_граффити :
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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.04.2007 9:12
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


 a:=Length(s);
if S[1] = S[a]

а зачем нам дополнительная переменная а?
if S[1] = S[length(s)]


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 7.04.2007 11:13
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


да, я сам заметил, когда уже запостил, но не изменил, так как не смертельно smile.gif


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sintanial
сообщение 22.05.2008 20:01
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 70
Пол: Мужской
Реальное имя: Мартын

Репутация: -  1  +


Эмм вот тоже задали это же. Я её сделал сначало с типом стринг однако потом я понял что так не верно на самом деле так как стринг имеет всего 255 символов, а если строка будет больше в файле ? то она вся не поместится в переменную. Вот поэтому задаю вопрос как быть ? У меня вот такая идея: создать две переменные типа чар и в одну записывать начало строки в другую конец строки. Однако у меня появилась трудность на практике. Помогите плиз
1) начало строки записать труда не составляет, а вот как одновременно, во вторую записать конец строки?. Потому что я когда в цикле записываю в первую переменную литеру, то одновременно записывается литера и во вторую. А как сделать так что бы в первую записалась первая литера этой строки а во вторую конец это строки, я не могу понять =) ?
2) когда я во вторую переменную записываю конец строки то записывается одна из цифр вот этих записей #13#10 - я так понял что это означает перейти на другую строку, однако как сделать так что бы это не записывалось ? в мою переменную. (я так думаю может функцией seekeoln однако как тогда быть с пунктом 1 =)
3) Слушайте а как в текстовом файле сразу перейти на конец строки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
samec
сообщение 22.05.2008 20:23
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


надо завести три переменных типа char (ch1, ch2 и ch3 например). Сначала считываешь в первую переменную (ch1) самый первый символ строки. Приравниваешь значение второй переменной, значению первой (ch2:=ch1) Потом начинается цикл. В нём читаешь следующий символ в третью переменную (в ch3). Проверяешь, не равен ли считанный символ #13 (ch3<>#13 ???), если условие выполнено (тоесть ch3<>#13) то приравниваешь значение второй переменной, значению третьей (сh2:=ch3) и переходишь к следующей итерации цикла. Если же условие не выполнено (тоесть ch3=#13), то выходим из цикла и получаем следующее: первый символ строки - в первой переменной (ch1), последний символ строки во второй переменной (ch2). Сравниваем их, при равенстве увеличиваем счётчик и переходим к следующей строке. Затем всё повторяется от и до smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 22.05.2008 20:44
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


А можно со строкой и переменной типа char обойтись
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
samec
сообщение 22.05.2008 20:50
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


вот что то подобное должно получиться:

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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sintanial
сообщение 22.05.2008 21:42
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 70
Пол: Мужской
Реальное имя: Мартын

Репутация: -  1  +


А я сделал попроще =)
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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.07.2025 16:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"