Var s,sr:string; i,j,n:integer; pr:array of char=('.',',',';',':','!','?'); begin readln(s); s:=s.Trim; var ars:=s.ToWords(); s:=''; for i:=0 to ars.Length-1 do s+=ars[i]+' '; s:=s.Trim; i:=0; while i<>s.Length do begin inc(i); if (s[i] in pr) and (s[i-1]=' ') then delete(s,i-1,1); end; i:=0; while i<>s.Length-1 do begin inc(i); if (s[i] in pr) and (s[i+1]<>' ') then insert(' ',s,i+1); end; s:=s.Trim; writeln(s); end.
Пример ввода: Очень, очень ,очень , очень ,очень,очень много слов. Пример вывода: Очень, очень, очень, очень, очень, очень много слов.
ЯП: С++
#include <iostream>
int main() {
const int N = 5;
int arr[N][N] = {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}; // создаем и заполняем двумерный массив 5x5
for (int i = 0; i < N; i++) // выводим на экран 2-мерный массив;
{
for (int j = 0; j < N; j++)
{
std::cout << arr[i][j] << "\t";
}
std::cout << std::endl;
}
std::cout << "Result #1: ";
for (int i = 0; i < N; i++) // вывод в консоль главной диагонали
{
std::cout << arr[i][i] << "\t";
}
std::cout << "\nResult #2: ";
for (int i = 0; i < N; i++) // вывод в консоль побочной диагонали
{
std::cout << arr[i][N - 1 - i] << "\t";
}
return 0;
}
Объяснение:
Var
s,sr:string;
i,j,n:integer;
pr:array of char=('.',',',';',':','!','?');
begin
readln(s);
s:=s.Trim;
var ars:=s.ToWords();
s:='';
for i:=0 to ars.Length-1 do
s+=ars[i]+' ';
s:=s.Trim;
i:=0;
while i<>s.Length do
begin
inc(i);
if (s[i] in pr) and (s[i-1]=' ') then delete(s,i-1,1);
end;
i:=0;
while i<>s.Length-1 do
begin
inc(i);
if (s[i] in pr) and (s[i+1]<>' ') then insert(' ',s,i+1);
end;
s:=s.Trim;
writeln(s);
end.
Пример ввода:
Очень, очень ,очень , очень ,очень,очень много слов.
Пример вывода:
Очень, очень, очень, очень, очень, очень много слов.