1. составьте программу вычисления суммы чисел в диапазоне от 15 до 65.15+16+17+ +652 а) составьте программу вычисления суммы при заданном k.б)составьте программу вычисления произведения при заданном k.ps: фото к 2-му
var a: array[1..n, 1..n] of integer; i, j: integer; HasNull: Boolean;
begin Randomize; writeln('Исходная матрица'); HasNull := False; for i := 1 to n do begin for j := 1 to n do begin a[i, j] := Random(100) - 50; if a[i, j] = 0 then HasNull := True; write(a[i, j]:5); end; writeln end; if HasNull then writeln('Матрица имеет нулевые элементы') else writeln('Матрица не имеет нулевых элементов') end.
procedure GetWord(s: string; var ib: integer; var pWord: string; var l: integer); // Возвращает слово pWord, которое является подстрокой s // Разделителем слов являются один и более пробелов. // ib при вызове процедуры указывает на позицию в строке s, // начиная с которой ведется поиск слова. // При выходе из процедуры ib - позиция начала найденного слова, // l- длина найденного слова, l=0 если слово не найдено. var i, n: integer; w: string; begin n := Length(s); l := 0; w := ''; if ib >= n then begin ib := n; pWord := '' end else begin i := ib; while (s[i] = ' ') and (i < n) do i := i + 1; ib := i; w := ''; while (s[i] <> ' ') and (i < n) do begin w := w + s[i]; i := i + 1 end; if i < n then begin l := i - ib; pWord := w end else begin l := i - ib + 1; pWord := w + s[n] end; if pWord[l]='.' then pWord:=Copy(pWord,1,l-1) end end;
procedure SortWords(n:integer); // Сортировка первых n элементов массива ast var i,j:integer; s:string; begin for i:=1 to n-1 do begin if ast[i]>ast[i+1] then begin s:=ast[i]; ast[i]:=ast[i+1]; ast[i+1]:=s; j:=i; while j>1 do if ast[j]<ast[j-1] then begin s:=ast[j]; ast[j]:=ast[j-1]; ast[j-1]:=s; j:=j-1 end else j:=0 end end end;
var s,st:string; p,n,i,len:integer; Flag:Boolean; begin st:=' aquila non captat muscas '; st:=st+'dolus an virtus quis in hoste requirat '; st:=st+'de mortuis aut bene aut nihil '; st:=st+'esse oportet ut vivas non vivere ut edas.'; p:=1; i:=1; len:=1; n:=0; while len>0 do begin GetWord(st,p,ast[i],len); if len>0 then begin p:=p+len; n:=n+1; i:=i+1 end end; for i:=1 to n do write(ast[i],' '); SortWords(n); writeln; writeln; s:=ast[1]; Flag:=True; for i:=2 to n do if ast[i]<>s then begin If Flag then write(s,' ') else Flag:=True; s:=ast[i]; end else Flag:=False; if Flag then write(ast[n],' '); writeln end.
Тестовое решение: aquila non captat muscas dolus an virtus quis in hoste requirat de mortuis aut bene aut nihil esse oportet ut vivas non vivere ut edas
an aquila bene captat de dolus edas esse hoste in mortuis muscas nihil oportet quis requirat virtus vivas vivere
n = 15;
var
a: array[1..n, 1..n] of integer;
i, j: integer;
HasNull: Boolean;
begin
Randomize;
writeln('Исходная матрица');
HasNull := False;
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] := Random(100) - 50;
if a[i, j] = 0 then HasNull := True;
write(a[i, j]:5);
end;
writeln
end;
if HasNull then writeln('Матрица имеет нулевые элементы')
else writeln('Матрица не имеет нулевых элементов')
end.
Тестовое решение:
Исходная матрица
16 23 -50 14 -44 15 -28 8 40 -43 -4 31 -11 -24 -15
31 -37 -42 2 15 23 -8 -19 14 -35 -5 -30 41 11 -18
-44 -3 30 -34 40 39 -7 -8 -6 -16 29 -11 -43 39 28
5 37 42 46 13 -27 -39 2 -19 -45 -27 -8 -14 -2 11
-6 -20 47 8 -49 48 -50 -28 -15 -4 -13 20 14 -32 35
-17 -16 -8 35 10 7 -22 45 47 -41 45 45 -2 -39 17
-3 -43 43 32 39 -2 -9 -1 37 29 4 15 7 0 -24
2 -4 -17 -5 21 38 49 0 37 -47 -34 -15 -50 -2 -45
-47 2 -40 18 48 -20 27 31 -21 -13 42 35 4 -45 -44
42 20 -6 21 6 -2 11 -48 -10 28 -3 6 -45 29 22
-38 -9 -50 32 26 -49 4 38 1 46 24 15 -46 -42 29
-47 -5 -6 31 -39 -5 40 -21 41 7 -9 -1 20 39 1
23 21 -48 6 -26 0 35 22 -21 -46 -12 32 42 24 32
32 7 44 11 25 -49 -38 -26 17 -24 -28 -38 -42 -25 -16
2 33 48 -50 -27 -47 13 -2 34 -22 -32 23 -35 26 22
Матрица имеет нулевые элементы
ast:array[1..30] of string;
procedure GetWord(s: string; var ib: integer; var pWord: string; var l: integer);
// Возвращает слово pWord, которое является подстрокой s
// Разделителем слов являются один и более пробелов.
// ib при вызове процедуры указывает на позицию в строке s,
// начиная с которой ведется поиск слова.
// При выходе из процедуры ib - позиция начала найденного слова,
// l- длина найденного слова, l=0 если слово не найдено.
var
i, n: integer;
w: string;
begin
n := Length(s);
l := 0;
w := '';
if ib >= n then begin
ib := n;
pWord := ''
end
else begin
i := ib;
while (s[i] = ' ') and (i < n) do i := i + 1;
ib := i;
w := '';
while (s[i] <> ' ') and (i < n) do
begin
w := w + s[i];
i := i + 1
end;
if i < n then begin
l := i - ib;
pWord := w
end
else begin
l := i - ib + 1;
pWord := w + s[n]
end;
if pWord[l]='.' then pWord:=Copy(pWord,1,l-1)
end
end;
procedure SortWords(n:integer);
// Сортировка первых n элементов массива ast
var
i,j:integer;
s:string;
begin
for i:=1 to n-1 do
begin
if ast[i]>ast[i+1] then
begin
s:=ast[i]; ast[i]:=ast[i+1]; ast[i+1]:=s;
j:=i;
while j>1 do
if ast[j]<ast[j-1] then
begin
s:=ast[j]; ast[j]:=ast[j-1]; ast[j-1]:=s;
j:=j-1
end
else j:=0
end
end
end;
var
s,st:string;
p,n,i,len:integer;
Flag:Boolean;
begin
st:=' aquila non captat muscas ';
st:=st+'dolus an virtus quis in hoste requirat ';
st:=st+'de mortuis aut bene aut nihil ';
st:=st+'esse oportet ut vivas non vivere ut edas.';
p:=1; i:=1; len:=1; n:=0;
while len>0 do
begin
GetWord(st,p,ast[i],len);
if len>0 then begin
p:=p+len;
n:=n+1;
i:=i+1
end
end;
for i:=1 to n do write(ast[i],' ');
SortWords(n);
writeln;
writeln;
s:=ast[1];
Flag:=True;
for i:=2 to n do
if ast[i]<>s then
begin
If Flag then write(s,' ')
else Flag:=True;
s:=ast[i];
end
else Flag:=False;
if Flag then write(ast[n],' ');
writeln
end.
Тестовое решение:
aquila non captat muscas dolus an virtus quis in hoste requirat de mortuis aut bene aut nihil esse oportet ut vivas non vivere ut edas
an aquila bene captat de dolus edas esse hoste in mortuis muscas nihil oportet quis requirat virtus vivas vivere