Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.06;
Скачать: CL | DM;

Вниз

Строки   Найти похожие ветки 

 
dumka   (2007-12-11 10:04) [0]

Где можно найти примеры по программированию строк в Pascal?
По информатике задали:
Найти  и вывести все шипящие буквы, в самом длинном слове предложения.
Тема полностью самостоятельная.
Ни примеров, ни методичек.


 
oldman ©   (2007-12-11 10:06) [1]

Если учесть, что строка - суть одномерный массив, состоящий из символов, то ответ очевиден...


 
Virgo_Style ©   (2007-12-11 10:07) [2]

dumka   (11.12.07 10:04)
Где можно найти примеры по программированию строк в Pascal?


В любой книжке по языку.


 
dumka   (2007-12-11 10:14) [3]


> В любой книжке по языку.

Передомной Культин "Паскаль"
по теме строки только 5 функций и все.
Мне нужен пример.


 
oldman ©   (2007-12-11 10:17) [4]


> dumka   (11.12.07 10:14) [3]
> Мне нужен пример.


Ну парсить тебе вряд ли, кто будет...
Читай [1] и работай for и do while


 
ЮЮ ©   (2007-12-11 10:23) [5]

> по теме строки только 5 функций и все.

Функций CamoeДлинноеСловоВПредлжении и ШипящиеБуквыВСлове все равно в стандартной поставке нет. Придется писать самой.


 
KSergey ©   (2007-12-11 10:27) [6]

> dumka (11.12.07 10:14) [3]
Передомной Культин "Паскаль" по теме строки только 5 функций и все.

Интересно было бы прочитать какие именно, однако еще интереснее - ваши мысли относительно того как именно - на ваш взгляд - эти функции можно применить к задаче и что не хватает, чтобы все еж применить.

Короче, готового ответа тут никто давать не любит, тем более - в учебных задачах.


 
Palladin ©   (2007-12-11 10:30) [7]

сам возьми на бумажке и посчитай... потом проанализируй свои действия и воплоти их в программе... основываясь на тех функциях которые даны в книжке...


 
oldman ©   (2007-12-11 10:32) [8]


> dumka   (11.12.07 10:14) [3]
> по теме строки только 5 функций и все.


По большому счету тебе нужно три.
Первая - позиция символа в строке (для нахождения мест начала/окончания слов)
Вторая - взять кусок строки (вынуть из предложения слово)
Третья - узнать длину строки (длина слова)
Этими тремя находишь самое длинное слово.
В нем (как в массиве) в цикле находишь шипящие буквы.


 
@!!ex ©   (2007-12-11 10:37) [9]

> [8] oldman ©   (11.12.07 10:32)

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


 
Palladin ©   (2007-12-11 10:38) [10]

два простых цикла :)


 
oldman ©   (2007-12-11 10:42) [11]


> @!!ex ©   (11.12.07 10:37) [9]
> > [8] oldman ©   (11.12.07 10:32)
>
> Да там вообще функции не нужны...


Ну у него же, наверное, задачка по "работа со строковыми функциями"...
:)))


 
_Denis_ ©   (2007-12-11 10:43) [12]

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;


 
_Denis_ ©   (2007-12-11 10:44) [13]

хопс!  
Shipashie = "ШЩшщ";// и так далее...


 
Palladin ©   (2007-12-11 10:45) [14]


> _Denis_ ©   (11.12.07 10:43) [12]

какой кошмар


 
oldman ©   (2007-12-11 10:47) [15]


> _Denis_ ©   (11.12.07 10:43) [12]


Про запятые, тире, кавычки, двоеточия и прочая ты забыл?


 
_Denis_ ©   (2007-12-11 10:54) [16]


> Про запятые, тире, кавычки, двоеточия и прочая ты забыл?

Я написал простейший вариант, тем более в Паскале работать не будет. А про всякие тире, то пофиг. Пусть переделывает тот, кому это надо.


 
Сергей М. ©   (2007-12-11 10:58) [17]


> _Denis_ ©   (11.12.07 10:43) [12]


Прежде всего следует определить список знаков препинания и устранить их из текста предложения для обеспечения однозначности локализации "слов" в предложении.

Иначе, например, в предложении

ААШ!! ААШШ

алгоритм даст неверный результат - одна шипящая "Ш" в слове "АААШ," вместо искомых двух шипящих "Ш" в слове "ААШШ"


 
Palladin ©   (2007-12-11 11:01) [18]


> _Denis_ ©   (11.12.07 10:54) [16]

далеко не простейший, сложный для восприятия, и некорректный

вывод: а на кой вообще он нужен тут?

в паскале, кстати, работать будет, с тем же успехом что и в делфи


 
oldman ©   (2007-12-11 11:08) [19]


> Сергей М. ©   (11.12.07 10:58) [17]


Имхо, в слове ААШШ одна шипящая буква - Ш
:)))


 
oldman ©   (2007-12-11 11:09) [20]


> _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;


А разве функции нет по удалению "лишних" пробелов?


 
@!!ex ©   (2007-12-11 11:10) [21]

> [19] oldman ©   (11.12.07 11:08)

Ну это уже от условия зависит, можно и так и так сказать.


 
Kolan ©   (2007-12-11 11:11) [22]

> А разве функции нет по удалению &laquo;лишних&raquo; пробелов?

Главное понять что такое &laquo;лишние&raquo; :)


 
Сергей М. ©   (2007-12-11 11:20) [23]


> oldman ©   (11.12.07 11:08) [19]


У окулиста давно был ?)


 
@!!ex ©   (2007-12-11 11:23) [24]

вот подсчет количества указанных символов в самом длинном слове строки.
Автор, как получить сами символы, разберешься?
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.


 
_Denis_ ©   (2007-12-11 11:25) [25]

К модератору : Пожалуйста, удалите [12]!
Ладно, признаю, зря постил. Хватит меня бить уже :)

> ААШ!! ААШШ
>
> алгоритм даст неверный результат - одна шипящая "Ш" в слове
> "АААШ," вместо искомых двух шипящих "Ш" в слове "ААШШ"

Признаться, не вижу там слова АААШ.


 
Kolan ©   (2007-12-11 11:32) [26]

> Ладно, признаю, зря постил. Хватит меня бить уже :)

Не тут то было :)


> @!!ex

А та ветка пошла тебе на пользу :) Есть конечно замечания(могу в аську вызказать) разные, но внешний вид приличный(еще бы пробелы добавить) :)


 
turbouser ©   (2007-12-11 11:59) [27]

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;


 
@!!ex ©   (2007-12-11 12:03) [28]

> А та ветка пошла тебе на пользу :)

Ну я же ту ветку не просто так создавал. :)


> Есть конечно замечания(могу в аську вызказать) разные

ДАвай.
228305662

А лучше в gtalk(jabber):
BasovAV@gmail.com



Страницы: 1 вся ветка

Текущий архив: 2008.01.06;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.012 c
15-1196673637
ПЛОВ
2007-12-03 12:20
2008.01.06
Утилизация старой комп. техники


2-1197362961
ZLinX
2007-12-11 11:49
2008.01.06
Наследники TGraphicControl


2-1197293148
deras
2007-12-10 16:25
2008.01.06
Помогите с запросом


15-1196756239
Галинка
2007-12-04 11:17
2008.01.06
А что читаем? (и аудиокниги в том числе)


15-1196622484
shlst
2007-12-02 22:08
2008.01.06
Ваши состояния :)