Здравствуйте, Тисенков!
В приложении примерная реализация программы с "меню" и выполненными задачами 1 и 3.
Алгоритм для 2 задачи: находим 0 и сдвигаем все элементы перед ним, а его ставим в начало. Для отрицательных чисел аналогично, только само число надо запоминать.
Для 4 задачи ответ - RTFM
Тем более, что почитать, Вам предложил предыдущий эксперт. Если будет время, выложу решения ост. задач в мини-форум. Но уже не сегодня.
Приложение:
program Project2;uses crt,sunit;procedure chisla;var c: char; f: boolean; a, b: integer; res: real;begin writeln(‘Введите символ‘); readln(c); writeln(‘Введите 2 числа‘); readln(a, b); f := true; case c of ‘+‘: res := a + b; ‘-‘: res := a - b; ‘*‘: res := a * b; ‘/‘: if b <> 0 then res := a / b else f := false; ‘^‘: res := exp(b * ln(a)); else writeln (‘Операция не поддерживается‘); end; if f then writeln(res) else writeln(‘Delenie na nol‘);end;procedure mass;var m: array[1..45] of integer;beginend;procedure stroka;var s: string; i, l: byte;begin writeln(‘Введите строку‘); readln(s); i := 1; l := length(s); while (i <= l) do begin if s[i] = ‘a‘ then s[i] := ‘o‘ else if s[i] = ‘.‘ then begin insert(‘..‘, s, i); inc(i, 2); end; inc(i); end; writeln(s);end;procedure spisok;beginend;procedure file_;beginend;var i: integer;al:array [0..5] of string;begin i := 0; al[0] := ‘ Числа ‘; {создаем массив из строк меню} al[1] := ‘ Массив ‘; {все строки одинаковой длины} al[2] := ‘ Строка ‘; {иначе добавляем пробелы} al[3] := ‘ Список ‘; al[4] := ‘ Файл ‘; al[5] := ‘ Выход ‘; repeat menu(i, 6, al); case i of 1: begin clrscr; chisla; readkey end; 2: begin clrscr; mass; ReadKey; end; 3: begin clrscr; stroka; ReadKey; end; 4: begin clrscr; spisok; ReadKey; end; 5: begin clrscr; file_; ReadKey; end; end; until i = 6;end.*****sunit****{ Модуль Sunit Copyrigth (C) 1999-2001 Сиротов Алексей e-mail: sss@hostmos.ru e-mail: prsir@mail.ru sirsoft.boom.ru sss.hostmos.ru Процедуры: menu - процедура работы с меню; HideCursor - убрать курсор; ShowCursor - показать курсор;}unit Sunit;interfaceuses crt;var ko:string; q,j,i,n,x1,y1,y,ve,ggr,gr:integer; al:array[0..5] of string; procedure menu(var y:integer;n:integer; var al:array of string ); procedure HideCursor; procedure ShowCursor;implementationprocedure HideCursor;begin asm mov ah,1 mov ch,$20 int $10 end;end;procedure ShowCursor;begin asm mov ah,1 mov ch,5 mov cl,7 int $10 end;end;procedure menu(var y:integer;n:integer; var al:array of string );beginclrscr;if y=0 thenbeginy1:=(25 div 2)-(n div 2); {начальное значение курсора по ос ОY}x1:=33; {координата кусора по оси ОХ}ve:=y1;gr:=y1;end;n:=n-1;{n:=5; {кол-во строк в меню}TextColor(0);TextBackground(0); repeat HideCursor; {Убираем мигающий курсор } clrscr; {Шапка меню} TextBackground(15);gotoxy(30,ve-1);writeln(‘г========================¬‘); {Элементы меню} j:=ve;for i:=0 to n do begin TextBackground(0); write(‘ ‘:30);TextBackground(15);gotoxy(30,j);write(‘¦ ‘,al[i],‘ ¦‘); TextBackground(0); j:=j+1;end; {Конец таблицы} TextBackground(15);gotoxy(30,ve+n+1);writeln(‘L========================-‘);{----------Вывожу на экран движение курсора-------------------------}ko:=al[y1-gr]; GotoXY(x1,y1); TextColor(15); TextBackground(0); write(ko); TextColor(0); TextBackground(0);{---------Считывание клвиш с клавиатуры-----------------------------} case ReadKey of #72:begin y1:=y1-1;if y1<gr then y1:=gr+n;end;{курсор вверх} #80:begin y1:=y1+1;if y1>gr+n then y1:=gr;end; {курсор вниз} #13:q:=1; {нажать ENTER} end; ShowCursor; {Показываем мигающий курсор } until q=1; {Выход если нажато ENTER} TextColor(15);q:=0;y:=y1+1-ve;end {menu};end.