Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 10:46   #1
Andrey770
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 83
По умолчанию из строки вывести на экран те символы, которые встречаются только по 1 разу

Нужно доработать код. Уже все перепробовал.
Суть заключается в том, что в строке символов, нужно вывести на экран, те которые встречаются только по 1 разу)
код:
Код:
uses crt;
var s:string;
st:string;
x:byte;
q,i,n:integer;
k:integer;
begin
clrscr;
writeln ('vveditb text');
readln(s);
k:=1;
while k<=length(s) do begin
st:=copy(s,k,1);
q:=0;
i := 1;
repeat
x := pos(st,copy(s,i,length(s)));
if x<>0 then inc(q);
i := i + x;
until x=0;
writeln (st,'=',q);
k:=k+1;
end;
readln;
begin
n:=0;
for i:=1 to length(s) do
if q=1 then  writeln(st,'= ',q);

end;

readln;
end.
У меня 1 проблема:

в конце, когда нужно вывести те символы которые встреечаются только 1 раз , то все числа не выводит, а только 1(одно число, но столько раз, сколько символов в строке))

Помогите доработать код))

Последний раз редактировалось Andrey770; 28.03.2011 в 10:55.
Andrey770 вне форума Ответить с цитированием
Старый 29.03.2011, 12:30   #2
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

я честно скажу - тупо ниосилил
вот мои пять копеек
я бы взял три строчки - оригинал str, отстойник out и результирующую res
и сделал бы так:

Код:
out:=' ';
res:=' ';

for i:=1 to length(str) do
if pos(str[i],out)=0 then                                         // если в отстойнике нет нашего знака
 if pos(str[i],copy(str,i+1,Length(str)-i))<>0 then                // если знак повторяется дальше
  out:=str[i]                                                       // положить его в отстойник
 else
  res:=res+' '+str[i];                                               // иначе добавить к результату
результат будет в строчке res через пробелы, потом выведешь

Последний раз редактировалось BoozZzilla; 29.03.2011 в 12:33.
BoozZzilla вне форума Ответить с цитированием
Старый 29.03.2011, 15:00   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

можно красоту показать ?
Код:
var
start: char = 'a';
finish:char = 'z';
sim : array [start..finish] of integer;
s: string;
i :Integer;
begin
...
for i := 1 to length(s)
  do inc(sim[s[i]]);
for i := ord(start) to ord(finish)
  do if sim[chr(i)]= 1 
     then wirteln(chr(i));
end.
можно и через boolean массив сделать, ну тут на вкус

Последний раз редактировалось phomm; 29.03.2011 в 19:09.
phomm вне форума Ответить с цитированием
Старый 29.03.2011, 15:21   #4
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

ну куда уж нам до этого
я в своём коде путаюсь, а вы тут решили мне нос утереть, я заранее сдаюсь
BoozZzilla вне форума Ответить с цитированием
Старый 29.03.2011, 19:08   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

тьфу, я валенок end же нельзя использовать, ну, предположим, я написал нечто вроде finish ))

но код рабочий, я его проверял, я просто впастил, а перед отправкой решил ещё и на переменные поменять, с тем умыслом , что изначально прога рассчитана на англ алфавит, а юзер может переиначить ( там троеточие для всяких таких штук зарезервировано)
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В строке символов определить символы, которые встречаются по одному разу Andrey770 Паскаль, Turbo Pascal, PascalABC.NET 12 27.03.2011 00:08
Из чисел 1, 1+ 1/2, 1+1/2+1/3 , … вывести на экран те, которые меньше а. umiko Microsoft Office Excel 1 16.05.2009 08:29
Из заданной символьной строки, выбрать те символы, которые встречаются в ней только один раз... Banny Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2008 06:15
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27