![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Строки
dumka © (2007-12-11 10:04:00)Где можно найти примеры по программированию строк в Pascal?
По информатике задали:
Найти и вывести все шипящие буквы, в самом длинном слове предложения.
Тема полностью самостоятельная.
Ни примеров, ни методичек.
@!!ex (2007-12-11 12:03:00) [1]> А та ветка пошла тебе на пользу :)
Ну я же ту ветку не просто так создавал. :)
> Есть конечно замечания(могу в аську вызказать) разные
ДАвай.
228305662
А лучше в gtalk(jabber):
BasovAV@gmail.com
turbouser (2007-12-11 11:59:00) [2]
function GetHassingsInLongestRussianWord(AString: string): string;
var
i, WordLength, LongestWordLength, LongestWordPos: integer;
begin
Result := '';
LongestWordPos := 1;
LongestWordLength := 0;
WordLength := 0;
for i := 1 to Length(AString) do
if not (AString[i] in ['А'..'я', '0'..'9']) or (i = Length(AString)) then
begin
if LongestWordLength < WordLength then
begin
LongestWordLength := WordLength;
LongestWordPos := i - WordLength;
end;
WordLength := 0;
end else
Inc(WordLength);
if LongestWordLength > 0 then
for i := LongestWordPos to LongestWordPos + LongestWordLength do
if Astring[i] in ['Ш', 'Щ', 'ш', 'щ'] then
Result := Result + Astring[i];
end;
Kolan (2007-12-11 11:32:00) [3]> Ладно, признаю, зря постил. Хватит меня бить уже :)
Не тут то было :)
> @!!ex
А та ветка пошла тебе на пользу :) Есть конечно замечания(могу в аську вызказать) разные, но внешний вид приличный(еще бы пробелы добавить) :)
_Denis_ (2007-12-11 11:25:00) [4]К модератору : Пожалуйста, удалите [12]!
Ладно, признаю, зря постил. Хватит меня бить уже :)
> ААШ!! ААШШ
>
> алгоритм даст неверный результат - одна шипящая "Ш" в слове
> "АААШ," вместо искомых двух шипящих "Ш" в слове "ААШШ"
Признаться, не вижу там слова АААШ.
@!!ex (2007-12-11 11:23:00) [5]вот подсчет количества указанных символов в самом длинном слове строки.
Автор, как получить сами символы, разберешься?
program Project1;
{$APPTYPE CONSOLE}
Function IsInString(C:char; const S:string):boolean;
var
Index:integer;
begin
Result:=false;
for Index := 1 to Length(S) do
if C=S[INdex] then begin
Result:=true;
Exit;
end;
end;
Function GetCharsCountInString(const InputString,Chars,Separators:string):integer;
var
BiggestString:string;
CurrentString:string;
Index:integer;
begin
BiggestString:=#0;
CurrentString:=#0;
for Index := 1 to Length(InputString) do
if IsInString(InputString[INdex],Separators) then begin
if Length(CurrentString)>Length(BiggestString) then
BiggestString:=CurrentString;
CurrentString:=#0;
end
else begin
CurrentString:=CurrentString+InputString[Index];
end;
Result:=0;
for Index := 1 to Length(BiggestString) do
if IsInString(BiggestString[Index],Chars) then
inc(Result);
end;
var
S:string;
C:string;
begin
writeln('String:');
readln(S);
writeln('Chars:');
readln(C);
writeln('Count: ',GetCharsCountInString(S,C,'!@#$%^&*() ,./:''[]{}|\/-_=+'));
readln;
end.
Сергей М. (2007-12-11 11:20:00) [6]
> oldman © (11.12.07 11:08) [19]
У окулиста давно был ?)
Kolan (2007-12-11 11:11:00) [7]> А разве функции нет по удалению «лишних» пробелов?
Главное понять что такое «лишние» :)
@!!ex (2007-12-11 11:10:00) [8]> [19] oldman © (11.12.07 11:08)
Ну это уже от условия зависит, можно и так и так сказать.
oldman (2007-12-11 11:09:00) [9]
> _Denis_ © (11.12.07 10:43) [12]
> begin
> if (s1[i] = ' ') and (s1[i+1] = ' ')then
> Delete(s1,i,1)
> else
> i:=i+1;
> end;
А разве функции нет по удалению "лишних" пробелов?
oldman (2007-12-11 11:08:00) [10]
> Сергей М. © (11.12.07 10:58) [17]
Имхо, в слове ААШШ одна шипящая буква - Ш
:)))
Palladin (2007-12-11 11:01:00) [11]
> _Denis_ © (11.12.07 10:54) [16]
далеко не простейший, сложный для восприятия, и некорректный
вывод: а на кой вообще он нужен тут?
в паскале, кстати, работать будет, с тем же успехом что и в делфи
Сергей М. (2007-12-11 10:58:00) [12]
> _Denis_ © (11.12.07 10:43) [12]
Прежде всего следует определить список знаков препинания и устранить их из текста предложения для обеспечения однозначности локализации "слов" в предложении.
Иначе, например, в предложении
ААШ!! ААШШ
алгоритм даст неверный результат - одна шипящая "Ш" в слове "АААШ," вместо искомых двух шипящих "Ш" в слове "ААШШ"
_Denis_ (2007-12-11 10:54:00) [13]
> Про запятые, тире, кавычки, двоеточия и прочая ты забыл?
Я написал простейший вариант, тем более в Паскале работать не будет. А про всякие тире, то пофиг. Пусть переделывает тот, кому это надо.
oldman (2007-12-11 10:47:00) [14]
> _Denis_ © (11.12.07 10:43) [12]
Про запятые, тире, кавычки, двоеточия и прочая ты забыл?
Palladin (2007-12-11 10:45:00) [15]
> _Denis_ © (11.12.07 10:43) [12]
какой кошмар
_Denis_ (2007-12-11 10:44:00) [16]хопс!
Shipashie = 'ШЩшщ';// и так далее...
_Denis_ (2007-12-11 10:43:00) [17]
const
Shipashie = 'ùøØÙÖ';//×åãîòîòàì åù¸
var
s1,s2 : String;
i : Integer;
begin
s2:='';
s1:=Edit1.Text+' ';
i:=0;
while i < Length(s1) do
begin
if (s1[i] = ' ') and (s1[i+1] = ' ')then
Delete(s1,i,1)
else
i:=i+1;
end;
while s1 '' do
begin
i:=pos(' ',s1);
if Length(Copy(s1,1,i)) >= Length(s2) then s2:=Copy(s1,1,i);
s1:=Copy(s1,i+1,Length(s1)-i);
end;
s1:='';
for i:=1 to Length(s2) do
begin
if pos(s2[i],Shipashie) > 0 then s1:=s1+s2[i]+' ';
end;
ShowMessage(s1);
end;
oldman (2007-12-11 10:42:00) [18]
> @!!ex © (11.12.07 10:37) [9]
> > [8] oldman © (11.12.07 10:32)
>
> Да там вообще функции не нужны...
Ну у него же, наверное, задачка по "работа со строковыми функциями"...
:)))
Palladin (2007-12-11 10:38:00) [19]два простых цикла :)
@!!ex (2007-12-11 10:37:00) [20]> [8] oldman © (11.12.07 10:32)
Да там вообще функции не нужны...
Простой цыкл все решает.