Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Строки


Страницы:   1 2

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)

Да там вообще функции не нужны...
Простой цыкл все решает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо