Если не вдаваться в несущественные детали, то будущее за виртуальным общением. Пока мы вынуждены, из-за своего невежества, снимать театр. Когда изобрели кино, то не изобрели еще крупного плана Эйзенштейна, и других эффективных приемов, которые сейчас применяются повсеместно. Попросту не знали, что делать с кино. Так и с виртуальным общением. Пока мы к нему подходим со своими старыми взглядами. Главное достоинство виртуального общения – возможность каждого человека принимать участие в практически неограниченном количестве проектов. Современные социальные сети только отчасти решают эти проблемы. Instagram, позволяющий делиться творчеством с друзьями, Twitter …. – только первые ласточки. Главное достоинство виртуальных сетей – возможность бороться с проклятьем бесконечности при друзей-экспертов в самых разнообразных областях предметной деятельности. В ближайшие годы мы будем наблюдать появление социальных сетей нового типа, обобщающие возможности научных конференций, типа четвергов у Ландау, и объединяющие миллионы к созидательному творчеству в самых разнообразных областях предметной деятельности. Безусловно, новые общения имеют недостатки с точки зрения тех, кто привык к традиционным методам. Но, это только в Египте ученики на протяжении 2 тысяч лет учились по неизменному учебнику «Послание отца сыну». Сейчас, в эпоху информационного взрыва старший брат не может понять младшего, не говоря о более солидном поколении. Такая судьба современного человека. Все, к сожалению, происходит почти в соответствии с древним китайским пожеланием врагу: «Чтоб ты жил в эпоху перемен». Но мы должны мужественно принимать удары судьбы, потому что у нас нет выбора, или прогресс, или гибель будущих поколений.
Const PTR = 10; type razbivka = array[0..PTR] of byte; var n, i, z, k: byte; x: razbivka; procedure p(var x: razbivka; var z: byte); var i, j, s: byte; begin i := z - 1; s := x[z]; while (i > 1) and ( x[i - 1] <= x[i] ) do begin s := s + x[i]; dec(i); end; inc( x[i] ); z := i + s - 1; for j := i + 1 to z do x[j] := 1; end; begin write('Введите число: '); readln(n); write(n,' = '); z := n; for i := 1 to z do x[i] := 1; for i := 1 to n do begin if i > 1 then write(' + '); write( x[i], '' ); end; writeln; repeat p( x, z ); inc(k); write( n,' = ' ); for i := 1 to z do begin if i > 1 then write(' + '); write( x[i], '' ); end; writeln; until z = 1; end.
p.s: нашел в интернете для вас вариант с рекурсией. Сами можете убедиться, что с ней только хуже (по быстродействию уж точно)
const m = 100; var a: array[1..m] of integer; k, n: integer; procedure p(j,n: integer); var i: integer; begin if ( n = 0 ) and ( k > 1 ) then begin for i := 1 to k do write( a[i] : 4 ); writeln; end else for i := j to n do begin Inc(k); a[k] := i; p( j, n - i ); Dec(k); end; end; begin write('Введите число: '); readln(n); k := 0; p(1,n); end.
значения PTR и m можно поставить и больше, но тогда я не ручаюсь)
// Функция для определения из двух чисел минимальное function min(a, b: real): real; begin if (a > b) then min := b else min := a end;
// Функция для определения из двух чисел максимальное function max2(a, b: real): real; begin if (a > b) then max2 := a else max2 := b end;
// Функция для определения из трех чисел максимальное function max3(a, b, c: real): real; begin // Сначала определяем максимальное из первых двух чисел, // затем у нас останется два числа и нам остается определить // максимальное из них max3 := max2(max2(a, b), c); end;
var x, y, z, d, max_int: real; begin writeln('Введите 4 числа'); readln(x, y, z, d); max_int := max3(min(x, y), min(x, z), min(z, d)); writeln(max_int); end.