IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Удалить повторяющиеся символы из массива., Элементарная задача, помогите, пожалуста
сообщение
Сообщение #1


Гость






Вот задачка, чувствую, что элементарная, но с паскалем у меня война((((

Напечатать заданный текст длиной от 1 до 100 символов, удалив из него повторные вхождения каждого символа.

Заранее спасибо. Если можно, побыстрее)))
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 18)
сообщение
Сообщение #2


Гость







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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


volvo, молодец ! Слово в слово то, что я собирался постить.
respect


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Большое спасибо! Спасибо! Спасибо! Даже не знаю как отблагодарить)))..
А если совсем не сложно(извините, я знаю что я нагалая) эту же задачу с помощью массива)))) Но это если совсем не сложно! Заранее спасибо)))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Вот... Но она менее красива, чем первая... smile.gif


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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну а что делать, не все что красивое нужно((((.. Спасибо! ( Я повторяюсь))))
Даж не знаю , как на самом деле отблагодарить))))...
Я здесь первый раз, такая быстрая эффективная помощь! СУПЕР! нет слов - одни эмоции!))))
Самый лучший форум в данной категории, который я когда-либо видела!
Еще раз спасибо!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


хех.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Люди тут добрыеsmile.gif Это я уже давно понял. Всем помогают rolleyes.gif
Первый раз такое в и-нете встречаю...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






А вот может быть такая же задача, но используя только массивы, т.е. без строк.. оч интересно rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Что значит без строк? имеется в виду отсутствие строки s в которую осуществляется ввод? Так можно организовать ввод сразу в массив chars ... :yes:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Да... то есть строка вобще не используется... Массив вводится с клавы, выводится тоже массивом, и действия ссответстенно делаются с массивом.. Т.е. наскоко я понимаю, используем один рипит, внутри цикл, ну флаг обмена естественно, и наверно нужен иф... Хмм... вот думаю как бы все эти мудрые мысли скомпоновать....
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Тогда можно сделать так:

Код

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.


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Спасибо.. А вот что значит это #10#13
writeln(#10#13'Строка длиной более 100 символов...'); 


и еще объясните человеку...что такое Inc(); нигде найти не могу..
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


#10#13

перевыод курсора на новую строку

Inc();

увеличение чего-либо стоящего в скобках на n или на 1 если n не указанно


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






А вот почему я не могла найти увеление номера.. unsure.gif мдя... бывет=)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


а уменьшение - dec(n);


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Пионер
**

Группа: Пользователи
Сообщений: 119
Пол: Мужской

Репутация: -  0  +


У inc и dec (иногда) может быть второй аргумент. И он может быть отрицательным. Поэтому сказать однозначно, что inc - увеличт переменую, а dec её уменьшит нельзя.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Цитата
Поэтому сказать однозначно, что inc - увеличт переменую, а dec её уменьшит нельзя.

просто inc - сокращение от increment (повышение), а dec - от decrement (понижение).

Сообщение отредактировано: GoodWind -


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Цитата(zx1024 @ 23.10.04 0:01)
У inc и dec (иногда) может быть второй аргумент. И он может быть отрицательным.

Да... Дедушка Вирт&парни из Borland, наверное оставили такой артефакт специально для маньяков-программеров, как один из способов запутать того, кто бы попытался разобраться в из коде ;) {Плотоядно облизываясь} Надо бы попробовать B) :p1: :D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.12.2025 22:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name