Форум: "Начинающим";
Текущий архив: 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.045 c