uses crt; var s:string; i,j,m:integer; begin clrscr; write('Stoka->'); read(s); for i:=1 to length(s) do begin m:=0; for j:=i+1 to length(s) do begin if s[i]=s[j] then inc(m); end; if m=0 then write(s[j]); end; readkey end.
работает чето неправильно, надо чтобы выводились символы которые встречаются только один раз
Тегами пользуемся !
Автор: strangerfx 8.05.2006 21:24
Попробуй вот это решение:
Код
program strings; uses crt; var s:string; mas:array [1..20] of char; i,j,k,x,n:byte; begin clrscr; writeln('Введите строку -> '); read(s); {Вводим строку} x:=length(s); for i:=1 to x do begin k:=0; for j:=1 to x do begin if s[i]=s[j] {Проверяем элемент s[i] на повторы и если повторы были увеличиваем к} then inc(k); end; if k=1 {Если к=1 записываем элемент в массив} then begin inc(n); mas[n]:=s[i]; end; end; writeln('Результат:'); for i:=1 to n do write(mas[i]); writeln; writeln('Для продолжения работы нажмите Enter'); readln; readln; end.
. Можно обойтись и без массива:
Код
program strings; uses crt; var s:string; mas:array [1..20] of char; i,j,k,x,n:byte; begin clrscr; writeln('Введите строку -> '); read(s); x:=length(s); for i:=1 to x do begin k:=0; for j:=1 to x do begin if s[i]=s[j] then inc(k); end; if k=1 then writeln(s[i]); end; writeln('Для продолжения работы нажмите Enter'); readln; readln; end.
.
Автор: volvo 8.05.2006 21:52
Ну, и зачем вложенные циклы делать?
var s: string; i: integer; begin { s := '1298968223456'; } write('enter string: '); readln(s); for i := 1 to length(s) do if pos(s[i], copy(s, 1, i-1)) + pos(s[i], copy(s, i+1, 255)) = 0 then write(s[i]);