В программе организовать меню, позволяющие выбрать один или несколько инструментов
МЕНЮ ПРОГРАММЫ:
1.Переводчик - находит во входных данных число представленное в двоичной системе счисления и переводит в десятичное.
2.Тример - удаляет в предложении лишние пробелы.
3.Шифратор - переписывает слово наоборот.
4.Сортировщик - упорядочивает слова в предложении по алфавиту (по первой букве в слове).
5.Дублекатор-находит и удаляет повторяющие слова в предложении (знаки препинания не учитывается).
В программе организовать меню, позволяющие выбрать один или несколько инструментов.
ВХОДНЫЕ ДАННЫЕ. Предложение содержащие текст на русском языке (файл «1.txt»).
Анализ произведённых вычислений показал, что 101 человек не смогли произвести таких вычислений. ВЫХОДНЫЕ ДАННЫЕ
1.Вывод на экран преобразованного предложения при выборе одного из инструментов.
2.Вывод преобразованных предложений в файл «222.txt».
Program fgyr; var g,f:text; isxs:string; i,p,kolvopr,func:integer; slova:array [1..300] of string; znaki_prepin:set of char; procedure rec_in_massiv(s:string); var vr_slovo:string; i,p,iforsl:integer; begin iforsl:=0; for i:=1 to length(s) do begin p:=pos(' ',s); if p>0 then begin vr_slovo:=copy(s,1,p-1); inc(iforsl); if vr_slovo[length(vr_slovo)] in znaki_prepin then begin slova[iforsl]:=copy(vr_slovo,1,length(vr_slovo)-1); inc(iforsl); slova[iforsl]:=vr_slovo[length(vr_slovo)]+'*7*7*'; end else slova[iforsl]:=vr_slovo; delete(s,1,p); end; end; inc(iforsl); if s[length(s)] in znaki_prepin then begin slova[iforsl]:=copy(s,1,length(s)-1); inc(iforsl); slova[iforsl]:=s[length(s)]+'*7*7*'; end else slova[iforsl]:=s; kolvopr:=iforsl; {********* } end; function pow(x,n:integer):integer; var i,r:integer; begin r:=x; for i:=1 to n-1 do r:=r*x; pow:=r; end; procedure dvoicnaia; function dv(s:string):boolean; var rez: boolean; i:integer; begin rez:=true; for i:=1 to length(s) do if ((s[i]<>'0') and (s[i]<>'1')) then rez:=false; dv:=rez; end; function dv_podscet(s:string):integer; var i,code,n,sum,cislo:integer; vector:array[1..250] of integer; begin for i:=1 to length(s) do val(s[i],vector[i],code); sum:=0; n:=length(s); for i:=1 to n do sum:=sum+(vector[i]*pow(2,abs(i-n))); dv_podscet:=sum; end; var i:integer; begin for i:=1 to kolvopr do if length(slova[i])>1 then if dv(slova[i]) then begin writeln(g,slova[i],' = ',dv_podscet(slova[i])); writeln(slova[i],' = ',dv_podscet(slova[i])); end; end; {///////////////} procedure delPROB (var s:string); var i:integer; begin i:=1; repeat if copy(s,i,2)=' ' then delete(s,i,1) else inc(i); until i>length(s); end; {///////////////} procedure naoborot; function ex(s:string):string; var i:integer; x:string; begin x:=''; For i:=1 to length(s) do x:=s[i]+x; ex:=x; end; {***} var i,j:integer; begin for i:=1 to kolvopr do begin if pos('*7*7*',slova[i])>0 then delete(slova[i],2,5); begin write(g,ex(slova[i])); write(ex(slova[i])); end; if pos('*7*7*',slova[i+1])=0 then begin write(' '); write(g,' '); end; end; end; {///////////////} procedure exchange(var a,b:string); var c:string; begin c:=a; a:=b; b:=c; end; procedure sorting; var i:integer; swop:boolean; vrs1,vrs2:string; n:integer; begin n:=kolvopr; repeat swop:=false; for i:=1 to n-1 do begin vrs1:=slova[i]; vrs2:=slova[i+1]; if ord(vrs1[1])>ord(vrs2[1]) then begin {esli "<" togda po ubivaniiu } exchange(slova[i],slova[i+1]); swop:=true; end; end; n:=n-1; until not swop; for i:=1 to kolvopr do begin if pos('*7*7*',slova[i])>0 then delete(slova[i],2,5); write(g,slova[i]); if pos('*7*7*',slova[i+1])=0 then write(g,' '); end; end; {///////////////} procedure dublikator; var i, j,k,n: Integer; s: Boolean; vector_for_dubl:array [1..300] of string; begin k:=0; n:= kolvopr; for i:=1 to n do begin s := true; for j:=1 to i-1 do if slova[j]=slova[i] then s:=false; if s then begin inc(k); vector_for_dubl[k]:=slova[i]; end; end; for i:=1 to k do begin if pos('*7*7*',vector_for_dubl[i])>0 then delete(vector_for_dubl[i],2,5); begin write(vector_for_dubl[i]); write(g,vector_for_dubl[i]); end; if pos('*7*7*',vector_for_dubl[i+1])=0 then begin write(' '); write(g,' '); end; end; end; {********************************************************************************************************************************} begin writeln; assign (f,'1.txt' ); reset (f); assign (g,'222.txt' ); rewrite (g); znaki_prepin:=['.','!',',','-']; writeln('Menyu programmy:'); writeln('1. Perevodchik'); writeln('2. Trimmer'); writeln('3. Shifrator'); writeln('4. Sortirovschik'); writeln('5. Dublikator'); writeln; write('Vvedite nuzhnuyu vam funktsiyu (ot 1 do 5):'); readln(func); while not eof(f) do begin {***начало считывания с файла***} readln(f,isxs); rec_in_massiv(isxs); {записываем слова в массив slova} if func = 1 then dvoicnaia(); {fail} if func = 2 then begin delPROB(isxs); writeln(isxs); writeln(g,isxs); end; if func = 3 then naoborot();{fail} if func = 4 then sorting(); if func = 5 then dublikator(); end; {***конец считывания с файла***} {for i:=1 to kolvopr do begin if pos('*7*7*',slova[i])>0 then delete(slova[i],2,5); write(g,slova[i]); if pos('*7*7*',slova[i+1])=0 then write(g,' '); end; } writeln(); writeln('Poluchennye dannye uspeshno zapisany v fail'); close(f); close(g); readln; end.