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

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

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

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





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

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


Подскажите кто-нибудь: Как найти в файле слова, в в которых нечетное число гласных и чётное число согласных букв?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

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

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


Цитата(BiZON @ 5.06.2011 19:11) *

Подскажите кто-нибудь: Как найти в файле слова, в в которых нечетное число гласных и чётное число согласных букв?

Укажи полажуйста как расположены слова в файле, чем разделены и.т
Вот например:
file TXT:
Forum
Pascal
net.ru
тут всё просто, читаем слово из файла, проверяем если подходит то выводим, нет - не выводим.
а если:
file TXT:
Forum Pascal net.ru
то тут уже надо читать всю строку, потом разбить на слова и проверять каждое слова.
Проверка осуществляется функцией:

function Yes(x:string):boolean;
var i:byte; gl,sn:byte;
begin
for i:=1 to lengh(x) do begin
if x[i] in glas then inc(gl);
if x[i] in soglasn then inc(sn);
end;
Yes:=(odd(gl) and not(odd(sn)));
end;


Где glas=['A','a','o' и.т ] множество гласных, а soglasn множество согласных.

Сообщение отредактировано: DarkWishmaster -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


в файле находится текст. вот из этого текста и нужно выбрать слова. и ещё подскажите пожалуйста как сделать чтобы программа понимала русские символы? Просто когда открываю этот файл из программы, русский символы отображаются каракулями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

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

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


Цитата(BiZON @ 5.06.2011 21:27) *

в файле находится текст. вот из этого текста и нужно выбрать слова. и ещё подскажите пожалуйста как сделать чтобы программа понимала русские символы? Просто когда открываю этот файл из программы, русский символы отображаются каракулями

В турбо паскале нету русских (или у кого-то есть, у мя точно нету =) ). Free Pascal отоброжает русские, это 100%.

Ну допустим Текст:

Я помню чудное мгновенье:
Передо мной явилась ты,
Как мимолетное виденье,
Как гений чистой красоты.

читаем из файла:

assign(F, 'C:\Mgnovenie.TXT');
reset(F);
while not eof(F) do begin
readln(F, S);
Check(S);
end;
clsoe(F);


где Check(S) это процедура которая находит слова в строке.

procedure ChecK(S:string);
var P:String; r:byte;
begin
while S<>0 nil do begin
r:=pos(' ' , s);
//находим ближайший пробел ( это в случае что нормальной писатель и ставит только один пробел для разделения слов)
P:=copy(S, 1, r); //берем слово
delete(S, 1, r);
if Yes(P) then writeln(P); //если подходит то выводим)
end;
end;



P.S
может я что напутал, так как паскаля с собой нету ) и сразу на форум написал.

Сообщение отредактировано: DarkWishmaster -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


спасибо большое, сейчас попробую
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


DarkWishmaster, вводишь человека в заблуждение. Я про функцию Yes. Подумай, что она вернет, если гласных будет четное количество, а согласных - нечетное? (кстати, результаты работы твоей функции могут быть вообще непредсказуемыми. Подумай, почему. Есть 2 причины...)

Сообщение отредактировано: IUnknown -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

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

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


Цитата(IUnknown @ 5.06.2011 22:37) *

DarkWishmaster, вводишь человека в заблуждение. Я про функцию Yes. Подумай, что она вернет, если гласных будет четное количество, а согласных - нечетное? (кстати, результаты работы твоей функции могут быть вообще непредсказуемыми. Подумай, почему. Есть 2 причины...)


if x[i] in glas then inc(val);
if x[i] in soglasn then dec(val);
Аа извини, ошибься. Просто пробовал если делить нечетное на четное то результат будет нечетным, не учел то что если делить нечетное на четное то результат будет тоже нечетном так что ты прав, спасибо. Отредактировал.

Сообщение отредактировано: DarkWishmaster -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Это не все. Про один из тех 2 моментов, о которых я написал выше, ты не додумал...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

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

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


Цитата(IUnknown @ 6.06.2011 0:07) *

Это не все. Про один из тех 2 моментов, о которых я написал выше, ты не додумал...

не обнулил gl и sn перед тем как считать? И вообще, почему в подпрограмы они понимают совершено разное значения а не как в главной програме где по умолчанью 0?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Цитата
И вообще, почему в подпрограмы они понимают совершено разное значения а не как в главной програме где по умолчанью 0?
Вот именно потому, что это подпрограмма. Место, где расположена переменная - стек, который никем не чистится. Что было на том месте перед стартом подпрограммы, то значение и будет начальным для переменной. В общем, мусор.

А глобальные переменные - это сегмент данных программы, который принудительно обнуляется. Поэтому возьми себе за правило: всегда инициализировать переменную. Неважно, где она описана, локально или глобально. Сегодня у тебя переменная глобальная, завтра ты оформил этот кусок кода как подпрограмму и на ровном месте получил глюки. Это кому надо? А если все инициализировалось принудительно - то никаких проблем не будет, будет продолжать инициализироваться уже в подпрограмме и результаты будут ожидаемыми, такими же, как и раньше.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

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

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


Цитата(IUnknown @ 6.06.2011 14:16) *

Вот именно потому, что это подпрограмма. Место, где расположена переменная - стек, который никем не чистится. Что было на том месте перед стартом подпрограммы, то значение и будет начальным для переменной. В общем, мусор.

А глобальные переменные - это сегмент данных программы, который принудительно обнуляется. Поэтому возьми себе за правило: всегда инициализировать переменную. Неважно, где она описана, локально или глобально. Сегодня у тебя переменная глобальная, завтра ты оформил этот кусок кода как подпрограмму и на ровном месте получил глюки. Это кому надо? А если все инициализировалось принудительно - то никаких проблем не будет, будет продолжать инициализироваться уже в подпрограмме и результаты будут ожидаемыми, такими же, как и раньше.

Спасибо за совет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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