Другие языки программирования и технологии

Задачка на Паскале

Дана строка символов a (string)Вывести алфавит строки. То есть все символы от a до z. Из строки должны быть удалены пробелы, запятые и др. В результате буквы не должны повторятся.Вот до чего дошел я:program z1;uses crt;vara,s,s1,s2:string;i,o,p:integer;beginclrscr;readln(a);for i:= 1 to length(a) dobeginif (ord(a)>ord('a')) and (ord(a)<ord('z'))>;end;writeln(s);readkey;end.В результате выдет строку из которой исключены все "левые" симолы. Дальше ступор. Уже устал и мозг не варит.
вот как вам дальше действовать
создайте массив символов array[1..26] of char
берете символ из строки через функцию берете его код и отнимаете от него 96 полученное число и есть номер ячейки массива куда нужно записать символ Вы его и записываете.
После того как Вы закончите всю стоку Вы получите массив символов используемых в строке и отсортированный по порядку
Ячейки массива которые останутся не заполненые это и есть те буквы которые не используются в данной строке
Дима Галкин
Дима Галкин
1 152
Лучший ответ
попробуй следующее:
...
var
c, res: set of char;
resStr: string;
item: integer;
ch: char;
...
res := [];
resStr := '';
c := ['a'..'z'];
for item := 1 to length(a) do
if a[item] in c then begin
res := res + [a[item]];
c := c - [a[item]];
end;
for ch := 'a' to 'z' do
if ch in res then resStr := resStr + ch;
Здесь не весь листинг
строка

if (ord(a)>ord('a')) and (ord(a)<ord('z'))>;

явно не полная
А так не пойдет ?:
uses crt;
var s:string;
c:char;
b:byte;
n: set of char;
begin
readln (s);
for b:=1 to length(s) do n:=n+[s [ b]];
for c:='a' to 'z' do if c in n then write (c);
readln;
end.
Да точно не полная.. .
Но вот вариант как я понял
s:='' ;
for i:=1 to length(a)
if (ord(upcase(a))>=65) and (ord(upcase(a))<=91) and (pos( a, s )=0 ) then
s:=s+a
Wrtieln(s)
readkey;

Посмотри ситаксис функции POS() точно не помню ...