Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ строковый тип данных

Автор: BorisON 14.12.2006 5:42

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

program stroki_2;

{$APPTYPE CONSOLE}
uses
SysUtils;
var
s: string;
i: integer;
q: set of char;
begin
q:=['а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'];
writeln ('vvedite ctroku');
readln (s);
for i:=1 to length (s) do
begin
if s[i] in q then
write (s[i]);
end;
readln;
end.

смог только вывести русские буквы (докучи выводятся не все)
прошу помощи обественности yes2.gif

Автор: volvo 14.12.2006 6:48

...
my_set := [];
for i := 1 to length(s) do
if s[i] in ['а' .. 'п', 'р' .. 'я'] then my_set := myset + [s[i]];

for i := 0 to 255 do
if chr(i) in my_set then write(chr(i));
...

Автор: BorisON 14.12.2006 16:15

спасибо....уже теплее, но всё равно выводит русские буквы только начиная с "П"

Автор: мисс_граффити 14.12.2006 22:12

как вариант - без множеств:

program stroki;
var s:string;
i: char;
begin
readln(s);
for i:='а' to 'п' do
if pos(i,s)<>0 then
write(i);
for i:='р' to 'я' do
if pos(i,s)<>0 then
write(i);
writeln;
readln;
end.


Автор: volvo 14.12.2006 22:22

Цитата
но всё равно выводит русские буквы только начиная с "П"
С какого счастья? Все нормально выводит (ты покажи, как используешь то, что я привел, а то можно так написать, что вообще ничего выводить не будет...) Я надеюсь, все буквы в описании множеств - кириллицей напечатал?

Автор: klem4 14.12.2006 22:57

BorisON, а точно нужно такие решение, как привели volvo и мисс_граффити ?

Может имелось в виду такое: слово "мама", результат "аамм" ?

ps меня просто смутило слово "все" малоли что по этим имелось в виду ... хотя скорее всего решения приведенные выше - это имеено то что тебе нужно.