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

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

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

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


Гость






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


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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

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

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


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

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


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


Профи
****

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

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


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


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


Пионер
**

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

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


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


Профи
****

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

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


А можно со строкой и переменной типа char обойтись
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 2.10.2020 1:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name