Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Вывести в алфавитном порядке все латинские буквы (http://www.tehnari.ru/f41/t19042/)

Bingooo 26.12.2008 00:27

Вывести в алфавитном порядке все латинские буквы
 
Задана строка символов. Вывести в алфавитном порядке все латинские буквы, встречающиеся в строке. Все выводимые буквы преобразовать в прописные. Например, задана строка: «Я учусь программировать на turbo pascal». Результат работы программы: AABCLOPRSTU

Bingooo 26.12.2008 00:30

надо написать в ПАСКАЛЕ!!

AlexZir 26.12.2008 04:12

А в чем проблема-то?
Алгоритм решения:
Строковой переменной присвойте строку из всех латинских символов
В цикле анализируйте каждый символ из этой строки и выстраивайте по порядку (можно заменой символов, можно введением новой строковой переменной, можно через массив)
Каждому элементу строки присвойте значение его символа в верхнем регистре
Выводите результат на экран.

Aleksan 26.12.2008 06:12

:-D :D :D Эх, Алексей.... А решение - то где?
Пост #2 - в ПАСКАЛЕ!! ;-)

Vladimir_S 26.12.2008 11:21

Если еще не поздно, то вот. Отлажено.

VAR
i,j,k,j0,Lng,Lng1,Lng2,M:BYTE;
S,S1,S2:STRING;
BEGIN
Write('Input string = '); ReadLn(S);
Lng:=Length(S);
j:=0;
FOR i:=1 TO Lng DO
IF (ORD(S[i])>=65) AND (ORD(S[i])<=90) THEN
BEGIN
INC(j);
S1[j]:=S[i];
END ELSE
IF (ORD(S[i])>=97) AND (ORD(S[i])<=122) THEN
BEGIN
INC(j);
S1[j]:=CHR(ORD(S[i])-32);
END;
Lng1:=j;
FOR j:=1 TO Lng1 DO
WRITE(S1[j]);
WRITELN;
M:=255;
Lng2:=Lng1;
FOR i:=1 TO Lng1 DO
BEGIN
FOR j:=1 TO Lng2 DO
IF ORD(S1[j])<=M THEN
BEGIN
M:=ORD(S1[j]);
j0:=j;
END;
S2[i]:=S1[j0];
IF j0<Lng2 THEN
FOR k:=j0+1 TO Lng2 DO
S1[k-1]:=S1[k];
DEC(Lng2);
M:=255;
END;
FOR i:=1 TO Lng1 DO
Write(S2[i]);
READLN;
END.


Часовой пояс GMT +4, время: 04:27.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.