Const nx=30;
var a:array[1..nx] of string; p,i,j,n,k:integer; s,d:string;begin
s:='Дана строка символов состоящий из отдельных слов разделенных пробелом';
s:= s + ' Упорядочить слова по длине в убыванию и вывести на печать';
p:=1;while p>0 do begin
i:= i + 1; p:= pos(' ',s);
if p>0 then a[i]:=trim(copy(s,1,p)) else a[i]:=s;writeln(a[i]);Delete(s,1,p);end;
for k:=1 to i do begin
for j:=2 to i do begin
if length(a[j-1]) < length(a[j]) then begin
d:=a[j-1];a[j-1]:=a[j];a[j]:= d;end;end;end;
writeln;
for k:=1 to i do
<span>writeln(a[k]);end.</span>
Ручка
пастила
сарафан
самолёт
караван
картина
колокол
= = = = = = = =
В связи с вопросом nelle987, поясняю: здесь нет никакого алгоритма, это вообще не алгоритмическая задача по своей сути. Нужно просто мысленно разбить исходные слова на слоги, и увидеть из них новое слово. Никакой магии.
Если хотите подойти к задаче системно, то можно организовать поиск по словарю, но здесь слишком простой случай, чтобы заморачиваться с поиском.
Алг перевертыш
нач
цел a,a1,b,i,k
ввод a
k:=0
b:=a
a1:=0
нц пока a>0
i:=mod(a,10)
k:=k+1;
a:= div(a,10)
кц
нц пока b>0
a1:=a1+mod(b,10)*10**(k-1);
b:=div(b,10);
k:=k-1
кц
вывод " новое число =", a1
кон<span>
</span>
Program p1;var n:integer;begin Writeln ('Введите число');Readln (n);if n>0 Then a:=(n*3) and (n mod 2=0) Else; Writeln (n);Readln;End.
не точно нужно дополнить,но что-то типо этого
6 раз, например первые 4 это яблоки а остальные 2 апельсины