Вот задачка, чувствую, что элементарная, но с паскалем у меня война((((
Напечатать заданный текст длиной от 1 до 100 символов, удалив из него повторные вхождения каждого символа.
Заранее спасибо. Если можно, побыстрее)))
volvo
20.10.2004 19:09
var s: string; i: byte;
chars: set of char; begin writeln('Введите строку:>'); readln(s);
if length(s) > 100 then begin writeln( 'Строка длиной более 100 символов...' ); exit end;
chars := []; for i := 1 to length(s) do if not (s[i] in chars) then begin write(s[i]); chars := chars + [ s[i] ]; end;
end.
GoodWind
20.10.2004 19:20
volvo, молодец ! Слово в слово то, что я собирался постить. respect
LoveУшка
20.10.2004 19:32
Большое спасибо! Спасибо! Спасибо! Даже не знаю как отблагодарить))).. А если совсем не сложно(извините, я знаю что я нагалая) эту же задачу с помощью массива)))) Но это если совсем не сложно! Заранее спасибо)))
volvo
20.10.2004 20:01
Вот... Но она менее красива, чем первая...
var s: string; i, j: byte;
chars: array[1 .. 100] of char; wasFound: Boolean; arrLen: byte; begin writeln('Введите строку:>'); readln(s);
if length(s) > 100 then begin writeln( 'Строка длиной более 100 символов...' ); exit end;
arrLen := 0; for i := 1 to length(s) do begin wasFound := False; for j := 1 to arrLen Do if chars[j] = s[i] then begin wasFound := True; break; end; if not wasFound then begin write(s[i]); inc(arrLen); chars[arrLen] := s[i] end; end;
end.
LoveУшка
20.10.2004 20:11
Ну а что делать, не все что красивое нужно((((.. Спасибо! ( Я повторяюсь)))) Даж не знаю , как на самом деле отблагодарить))))... Я здесь первый раз, такая быстрая эффективная помощь! СУПЕР! нет слов - одни эмоции!)))) Самый лучший форум в данной категории, который я когда-либо видела! Еще раз спасибо!!!
Altair
20.10.2004 20:27
хех.
Shaddix
20.10.2004 21:46
Люди тут добрые Это я уже давно понял. Всем помогают Первый раз такое в и-нете встречаю...
Ш. Нелль
21.10.2004 18:41
А вот может быть такая же задача, но используя только массивы, т.е. без строк.. оч интересно
volvo
21.10.2004 18:55
Что значит без строк? имеется в виду отсутствие строки s в которую осуществляется ввод? Так можно организовать ввод сразу в массив chars ... :yes:
Ш. Нелль
21.10.2004 19:20
Да... то есть строка вобще не используется... Массив вводится с клавы, выводится тоже массивом, и действия ссответстенно делаются с массивом.. Т.е. наскоко я понимаю, используем один рипит, внутри цикл, ну флаг обмена естественно, и наверно нужен иф... Хмм... вот думаю как бы все эти мудрые мысли скомпоновать....
volvo
21.10.2004 19:36
Тогда можно сделать так:
Код
uses crt; var i: byte;
chars: array[1 .. 100] of char; ch: char; total, iChar: integer; found: boolean; begin writeln('string:>');
iChar := 1; repeat ch := readkey; inc(total); if total > 100 then begin writeln(#10#13'Строка длиной более 100 символов...'); exit end;
if ch = #13 then break;
write(ch); found := false; for i := 1 to iChar do if chars[i] = ch then begin found := true; break; end; if not found then begin chars[iChar] := ch; inc(iChar); end; until false; writeln;
for i := 1 to pred(iChar) do write(chars[i]); writeln; end.
Ш. Нелль
21.10.2004 19:53
Спасибо.. А вот что значит это #10#13
writeln(#10#13'Строка длиной более 100 символов...');
и еще объясните человеку...что такое Inc(); нигде найти не могу..
Altair
21.10.2004 20:00
#10#13
перевыод курсора на новую строку
Inc();
увеличение чего-либо стоящего в скобках на n или на 1 если n не указанно
Ш.Нелль
21.10.2004 20:53
А вот почему я не могла найти увеление номера.. мдя... бывет=)
GoodWind
22.10.2004 18:26
а уменьшение - dec(n);
zx1024
23.10.2004 3:01
У inc и dec (иногда) может быть второй аргумент. И он может быть отрицательным. Поэтому сказать однозначно, что inc - увеличт переменую, а dec её уменьшит нельзя.
GoodWind
23.10.2004 6:50
Цитата
Поэтому сказать однозначно, что inc - увеличт переменую, а dec её уменьшит нельзя.
просто inc - сокращение от increment (повышение), а dec - от decrement (понижение).
Atos
23.10.2004 11:58
Цитата(zx1024 @ 23.10.04 0:01)
У inc и dec (иногда) может быть второй аргумент. И он может быть отрицательным.
Да... Дедушка Вирт&парни из Borland, наверное оставили такой артефакт специально для маньяков-программеров, как один из способов запутать того, кто бы попытался разобраться в из коде ;) {Плотоядно облизываясь} Надо бы попробовать B) :p1: :D
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.