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

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

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

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


Гость






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

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

Заранее спасибо. Если можно, побыстрее)))
 К началу страницы 
+ Ответить 
volvo
сообщение 20.10.2004 19:09
Сообщение #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.

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


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

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

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


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


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


Гость






Большое спасибо! Спасибо! Спасибо! Даже не знаю как отблагодарить)))..
А если совсем не сложно(извините, я знаю что я нагалая) эту же задачу с помощью массива)))) Но это если совсем не сложно! Заранее спасибо)))
 К началу страницы 
+ Ответить 
volvo
сообщение 20.10.2004 20:01
Сообщение #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.

 К началу страницы 
+ Ответить 
LoveУшка
сообщение 20.10.2004 20:11
Сообщение #6


Гость






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


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

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

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


хех.


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





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

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


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


Гость






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


Гость






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


Гость






Да... то есть строка вобще не используется... Массив вводится с клавы, выводится тоже массивом, и действия ссответстенно делаются с массивом.. Т.е. наскоко я понимаю, используем один рипит, внутри цикл, ну флаг обмена естественно, и наверно нужен иф... Хмм... вот думаю как бы все эти мудрые мысли скомпоновать....
 К началу страницы 
+ Ответить 
volvo
сообщение 21.10.2004 19:36
Сообщение #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 - 21.10.2004 19:46
 К началу страницы 
+ Ответить 
Ш. Нелль
сообщение 21.10.2004 19:53
Сообщение #13


Гость






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


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


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

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

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


#10#13

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

Inc();

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


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


Гость






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


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

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

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


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


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


Пионер
**

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

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


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


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

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

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


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

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

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


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


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

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

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


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

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

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

 



- Текстовая версия 13.06.2024 22:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"