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

Вниз

Срез длинной строки   Найти похожие ветки 

 
lobach ©   (2006-10-28 10:55) [0]

помогите с этой функцией, она должна срезать строку(до длинны num), если в ней более num символов
function srez(stroka: string; num:integer): String;
var
i: integer;
ns: String;
begin
i:=1;
if Length(stroka) = num then
result:=stroka;
if Length(stroka) < num then
result:=stroka
else begin
while i <= num do
result:=ns+stroka[i];
i:=i+1;
end;
end;
Помогите


 
Virgo_Style ©   (2006-10-28 11:01) [1]

if num>length(Stroka) then SetLength(Stroka, num); ?


 
ЮЮ ©   (2006-10-28 11:04) [2]

1) Copy(Str, 1, n);

2) If Length(Str) > n then SetLength(str, n);

3) если непременоо нужен srez и твой алгоритм, то перед циклом Result := "":


 
Anatoly Podgoretsky ©   (2006-10-28 11:08) [3]

В паскале есть оператор <= и делать поэтому двумя командами некрасиво.
В Дельфи есть оператор SetLength, который устанавливает строку без всяких циклов посимвольного копирования. Имея на руках данные карты функция сокращается до одной строки if then else.
А вот само написание данной строки это твое домашнее задание, если не справишься, значит программирование не твое.


 
Virgo_Style ©   (2006-10-28 11:08) [4]

Virgo_Style ©   (28.10.06 11:01) [1]

Ой, ну конечно же, num<length(Stroka) ! :-[


 
Anatoly Podgoretsky ©   (2006-10-28 11:11) [5]

Конечно же нет


 
lobach ©   (2006-10-28 11:23) [6]


> А вот само написание данной строки это твое домашнее задание,
> если не справишься, значит программирование не твое.

Домашнее задание выполнено:
function srez(stroka: string; num:integer): String;
begin
if length(stroka) <= num then
result:=stroka
else
SetLength(stroka, num);
result:=stroka;
end;

Всем спасибо!!!


 
Anatoly Podgoretsky ©   (2006-10-28 11:27) [7]

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


 
Ketmar ©   (2006-10-28 14:43) [8]

>[6] lobach(c) 28-Oct-2006, 11:23
>Домашнее задание выполнено:
тройка. один балл добавлен за энтузиазм. Copy(), F1.


 
vidiv ©   (2006-10-28 22:10) [9]

блин... одна строка всего:
Str := copy(Str, 1, num);


 
Пусик ©   (2006-10-28 23:21) [10]

function srez(stroka: string; num:integer): String;
begin
 if stroka<>""
   then Result := Copy(stroka,1,num)
   else Result := "";
end;


 
Ketmar ©   (2006-10-28 23:39) [11]

>[10] Пусик(c) 28-Oct-2006, 23:21
спрячь. и никому не показывай.


 
Пусик ©   (2006-10-28 23:50) [12]


> спрячь. и никому не показывай.

С чего бы это?


 
Пусик ©   (2006-10-28 23:51) [13]

Я, в отличие от некоторых, не считаю зазорным свой код показывать здесь.


 
Ketmar ©   (2006-10-29 00:02) [14]

>[12] Пусик(c) 28-Oct-2006, 23:50
>С чего бы это?
с того, что не надо начинающих учить невесть чему. в частности -- ваять монстров, когда достаточно одной Copy().

зыж кого интересует мой код -- у меня для этого сайт есть. ага.


 
DVM ©   (2006-10-29 00:02) [15]


> Первая часть правильна, а вот часть должна быть выполнена
> с помощью функции Copy.

и потом Paste :)


 
Пусик ©   (2006-10-29 00:07) [16]


> Ketmar ©   (29.10.06 00:02) [14]
> >[12] Пусик(c) 28-Oct-2006, 23:50>С чего бы это?с того,
> что не надо начинающих учить невесть чему. в частности -
> - ваять монстров, когда достаточно одной Copy().


Приведи рабочий код в одну строку.


 
Орион ©   (2006-10-29 00:10) [17]

> [16] Пусик ©   (29.10.06 00:07)

Result:=Copy(stroka, 1, num);
Полностью рабочий код.


 
Пусик ©   (2006-10-29 00:11) [18]


> > [16] Пусик ©   (29.10.06 00:07)Result:=Copy(stroka, 1,
>  num);Полностью рабочий код.


Ответ неверный.


 
Орион ©   (2006-10-29 00:12) [19]

> [18] Пусик ©   (29.10.06 00:11)

обоснуй.


 
Ketmar ©   (2006-10-29 00:13) [20]

>[19] Орион(c) 29-Oct-2006, 00:12
>обоснуй.
ага. мне тоже любопытно, как наша непримиримая воительница справится.


 
Пусик ©   (2006-10-29 00:28) [21]

Да, признаю, ошибку.... Спутала с другой функцией.


 
vidiv ©   (2006-10-29 16:06) [22]


> Да, признаю, ошибку.... Спутала с другой функцией.

Так тебе!!! Женщина =))


 
Пусик ©   (2006-10-29 16:41) [23]


> vidiv ©   (29.10.06 16:06) [22]
> > Да, признаю, ошибку.... Спутала с другой функцией.Так
> тебе!!! Женщина =))


А представь некого мужчину в такой ситуации.
Да нос об стол разобьет, но ошибку не признает.
(к слову - как раз одно из проявлений ламеризма).


 
MetalFan_pda   (2006-10-29 17:03) [24]

а еще вариант!
Delete(str,trimcount+1,maxint)


 
Ketmar ©   (2006-10-29 17:05) [25]

>[23] Пусик(c) 29-Oct-2006, 16:41
>А представь некого мужчину в такой ситуации.
>Да нос об стол разобьет, но ошибку не признает.
обобщённые (или обезличеные) выводы без доказательной базы -- это разве не признак того же самого?


 
MikePetrichenko ©   (2006-10-29 23:43) [26]

Ага. Один уже надоказывался с доказательной базой.
http://delphimaster.net/view/2-1162141206/
:)


 
Ketmar ©   (2006-10-29 23:48) [27]

>[26] MikePetrichenko(c) 29-Oct-2006, 23:43
>Ага. Один уже надоказывался с доказательной базой.
>:)
так не опровергнуто ведь! %-)


 
MikePetrichenko ©   (2006-10-29 23:56) [28]


> так не опровергнуто ведь! %-)

Так вроде и не доказано... :(


 
Ketmar ©   (2006-10-30 00:03) [29]

>[28] MikePetrichenko(c) 29-Oct-2006, 23:56
>Так вроде и не доказано... :(
так мы ж сошлись на том, что все правы. раз все -- надо 100 делить на три. согласен даже на просто отбрасывание дробной части. %-)


 
Ketmar ©   (2006-10-30 00:03) [30]

1000 делить, конечно %-)



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

Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.037 c
8-1144269476
Валера
2006-04-06 00:37
2006.11.12
Передвижение картинки?


15-1161924781
0x00
2006-10-27 08:53
2006.11.12
Массивы в msvc++


15-1161900291
ArtemESC
2006-10-27 02:04
2006.11.12
Си - чего ему не нравится?


15-1161960379
IMHO
2006-10-27 18:46
2006.11.12
Сервисы ICQ


2-1161676591
port
2006-10-24 11:56
2006.11.12
Подскажите с запросом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский