0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 21
1

Перевернуть слова, в которых буквы упорядочены по алфавиту

13.07.2012, 21:51. Показов 2090. Ответов 6
Метки нет (Все метки)

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

кто нибудь сможет объяснить как работает эта программа и дописать комментарии а то запуталась совсем.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
program prog_a_26;
uses crt;
var
   i,n:integer;
   text,tx1:string;
   fl:boolean;
begin
     i:=1;
     n:=length(s);
     while (i<n) and (s[i]<s[i+1]) do inc(i);
     prov:=i=n
end;
procedure pv(s:string;var t:string);
begin
     t:=''; n:=length(s);
     for i:=n downto 1 do t:=t+s[i];
end;
procedure main(text1:string;var text2:string;var fl:boolean);
var
  p:integer;
  t,r:string;
begin
     text1:=text1+' ';
     p:=pos(' ',text1);text2:='';
     while p>0 do
       begin
            t:=copy(text1,1,p-1);
            if prov(t) then
                     begin
                       fl:=true;
                       pv(t,r)
                     end
                        else r:=t;
            text2:=text2+' '+r;
            delete(text1,1,p);
            p:=pos(' ',text1);
 
       end;
end;
BEGIN
     clrscr;writeln;
     writeln;
     writeln(':');
     readln(text); fl:=false;
     main(text,tx1,fl);
     if fl then
         writeln(' ')
         else
            writeln('');
    writeln(tx1);
    readkey
END.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2012, 21:51
Ответы с готовыми решениями:

Напечатать те слова текста, которые отличны от последнего слова и в которых буквы упорядочены по алфавиту
Дан текст, состоящий из латинских букв. Между соседними словами – не менее одного пробела; за...

Вывести те слова последовательности, у которых буквы упорядочены по алфавиту
Дана последовательность, содержащая от 2 до 50 слов в каждом из которых от 1 до 8 строчных...

Вывести те слова последовательности у которых буквы упорядочены по алфавиту
дана последовательность содержащая от 2 до 50 слов в каждом из которых от 1 до 8 строчных латинских...

Вывести все различные слова, буквы которых упорядочены по алфавиту
Составить программу для решение задачи. Дана последовательность, содержащая от 1 до 30 слов, в...

6
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
13.07.2012, 22:19 2
Цитата Сообщение от джульетта Посмотреть сообщение
begin
i:=1;
n:=length(s);
while (i<n) and (s[i]<s[i+1]) do inc(i);
prov:=i=n
end;
это что такое без имени процедуры вообще?

Не по теме:

как можно настолько нечитабельно писать программы?..

0
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 21
13.07.2012, 22:29  [ТС] 3
это не моя программа, это препода. когда она мне че то объясняла я сидела с умным видом и кивала. хотя ничего не поняла вообще
0
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
13.07.2012, 22:59 4
не повезло тебе с преподом... программка таки неправильная...

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
program prog_a_26;
uses crt;
 
var
i,n:integer;
text,tx1:string;
fl:boolean;
 
function prov(s: string): boolean;
begin
i:=1;
n:=length(s);
while (i<n) and (s[i]<s[i+1]) do inc(i);
prov:=i=n
end;
 
procedure pv(s:string;var t:string);
begin
t:=''; n:=length(s);
for i:=n downto 1 do t:=t+s[i];
end;
 
procedure main(text1:string;var text2:string;var fl:boolean);
var
p:integer;
t,r:string;
begin
text1:=text1+' ';
p:=pos(' ',text1);text2:='';
while p>0 do
 begin
 t:=copy(text1,1,p-1);
 if prov(t) then
  begin
  fl:=true;
  pv(t,r)
  end
 else r:=t;
 text2:=text2+' '+r;
 delete(text1,1,p);
 p:=pos(' ',text1);
 end;
end;
 
 
BEGIN
clrscr;
writeln; writeln;
writeln(':');
readln(text); 
fl:=false;
main(text,tx1,fl);
if fl then
 writeln(' ');
writeln(tx1);
readkey
END.
Добавлено через 3 минуты
в общем, попробуй так почитать эту прогу, потому что на мой взгляд она слишком уж запутана, наверно потому что это не мой код... объяснить, сорри, не смогу. сделать более читабельной - это мой максимум...

Добавлено через 15 секунд
в общем, попробуй так почитать эту прогу, потому что на мой взгляд она слишком уж запутана, наверно потому что это не мой код... объяснить, сорри, не смогу. сделать более читабельной - это мой максимум...
0
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 21
13.07.2012, 23:10  [ТС] 5
спасибо
0
Фрилансер
3417 / 2814 / 3000
Регистрация: 08.02.2012
Сообщений: 8,518
Записей в блоге: 1
14.07.2012, 08:35 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
program prog_a_26;
uses crt;
var
i,n:integer;
text,tx1:string;
fl:boolean;
function prov(s: string): boolean;{Функция для проверки слова на упорядоточеность по алфавиту}
begin
i:=1;
n:=length(s);{n присваиваем длину слова}
while (i<n) and (s[i]<s[i+1]) do inc(i);{В кикле проходим по всему слову от начала до конца
 и если какая то буква не по алфавиту пошла выходим из цикла}
prov:=i=n {Результат работа определяется если i=n(т.е все буквы упорядоточены) то true иначе false}
end;
 
procedure pv(s:string;var t:string);{Процедура для переворота слова}
begin
Var i:integer;
t:='';{Обнуляем строку в которой будет набираться результат} n:=length(s);
for i:=n downto 1 do t:=t+s[i];{С конца строки до начала копируем буквы из строки s в строку t}
end;
 
procedure main(text1:string;var text2:string;var fl:boolean);{Из названия выходит что главная процедура}
var
p:integer;
t,r:string;
begin
text1:=text1+' ';{К строке text1 добавляем пробел в конец}
p:=pos(' ',text1); {В p запомнила позицию пробел} text2:='';{Обнулили строку text2}
while p>0 do {Пока позиция пробела существует в строке т.е p>0 делаем}
 begin
 t:=copy(text1,1,p-1);{В переменную t копируем слово из строки text1до пробела(без него)}
 if prov(t) then {Передаем слово t функции prov если она true то}
  begin
  fl:=true;{f1 присваиваем true}
  pv(t,r);{И переворачиваем слово t}
  end
 else r:=t;{иначе в r записываем слово t без изменения}
 text2:=text2+' '+r;{К строке text2 добавляем пробел и слово r}
 delete(text1,1,p);{Удаляем из строки text1 начиная с первого символа до позиции пробела (вклюяая его)}
 p:=pos(' ',text1);{Запоминаем в p позицию пробела строки text1}
 end;
end;
BEGIN
clrscr;{Процедура очистки экрана}
writeln; writeln;{Два пустых перевода строки}
write(':');{Вывод :}
readln(text); {Ввод строки}
fl:=false;{присваем в f1 false}
main(text,tx1,fl);{Передаем в глав процедуру введенную строку,строку результат,и лог.переменную f1}
if fl then {Если f1 истина то выводим пробел}
 writeln(' ');
writeln(tx1);{Вывод полученой строки}
readkey;{Задержка}
END.
Вот подписал комментарии к измененной проге от Керра
1
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 21
15.07.2012, 20:22  [ТС] 7
спасибо огромнейшее
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2012, 20:22
Помогаю со студенческими работами здесь

Найти слова, которые отличаются от последнего слова строки и где буквы упорядочены по алфавиту
Уже выкладывал, но тема старая, думал прога правильная а оказалось что нет Дана строка,...

Распечатать слова, в которых буквы упорядочены по алфавиту
Распечатать те слова, в которых либо буквы упорядочены по алфавиту, либо каждая буква входит в...

Напечатать слова, у которых буквы упорядочены по алфавиту
Всем доброго времени суток, помогите пожалуйста закодить прогу. У меня задание: Дана строка,...

Вывести слова, в которых нет повторяющихся букв и буквы слова упорядочены по алфавиту
Дан текст. Вывести слова, в которых нет повторяющихся букв и буквы слова упорядочены по алфавиту.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru