Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.005 c
2-1196941670
Nil
2007-12-06 14:47
2008.01.06
распределение памяти в динмаическом массиве записей


2-1197286618
Quart
2007-12-10 14:36
2008.01.06
Выгрузка


2-1197020595
Slym
2007-12-07 12:43
2008.01.06
Best practice в создании свойств-списков объектов в COM в многопо


1-1192260730
031178
2007-10-13 11:32
2008.01.06
TReeView


2-1197319229
Ruzzz
2007-12-10 23:40
2008.01.06
не устраивает ReallocMem





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский