Автор работы: Пользователь скрыл имя, 02 Июня 2013 в 13:44, курсовая работа
1. Имеется файл, в котором содержится размерность массива и его элементы. Вычислить:
А. максимальный по модулю элемент массива;
В. сумму элементов массива, расположенных между первым и вторым положительными элементами.
Полученные результаты записать в новый файл.
1. Имеется файл, в котором содержится размерность массива и его элементы. Вычислить:
А. максимальный по модулю элемент массива;
В. сумму элементов массива, расположенных между первым и вторым положительными элементами.
Полученные результаты записать в новый файл.
Блок-схема
Текст программы (Pascal)
program zadacha_1;
var
a: array [0..1000] of longint;
i,j,max_index: integer;
first_index, second_index: integer;
max: longint;
summa: longint;
t: text;
begin
write('В файл zad1_in.txt внесите длину массива и его элементы и нажмите Enter');
assign(t,'zad1_in.txt');
reset(t);
read(t,a[0]);
if a[0]>0 then begin
for i:= 1 to a[0] do begin
read(t,a[i]);
end;
end
else begin
writeln('Некорректные данные (длина массива)!');
end;
close(t);
if a[0]>0 then begin
max:=abs(a[1]);
max_index:=1;
for i:= 1 to a[0] do begin
if abs(a[i]) > max then begin
max:=abs(a[i]);
max_index:=i;
end;
end;
end;
if a[0]>0 then begin
first_index:=0;
second_index:=0;
summa:=0;
i:=1;
while (i<=a[0]) and (second_index=0) do begin
if a[i]>0 then begin
if first_index=0 then begin
first_index:=i;
i:=i+1;
end
else begin
second_index:=i;
end
end
else begin
i:= i+1;
end;
end;
if (first_index<>0) and (second_index<>0) then begin
for i:= first_index+1 to second_index-1 do begin
summa:= summa + a[i];
end;
end;
end;
assign(t,'zad1_out.txt');
rewrite(t);
writeln(t,'Максмальный элемент стоит на ',max_index,' позиции');
writeln('Максмальный элемент стоит на ',max_index,' позиции');
writeln(t,'И равен ',a[max_index]);
writeln('И равен ',a[max_index]);
writeln(t);
writeln(t,'Сумма элементов между первыми двумя положительными элементами равна ',summa);
writeln('Сумма
элементов между первыми двумя
положительными элементами
close(t);
writeln('* Ответ содержится в zad1_out.txt');
end.
Тест
В файл zad1_in.txt вводим сначала размерность массива, в данном случае – 25, и его элементы.
Затем запускаем программу ZAD1.exe
Находим решение задачи в файле zad1_out.txt
2. Соседями элемента Aij в матрице назовем элементы Akl где i-1 ≤ k ≤ i+1, j-1 ≤ l ≤ j+1, (k,l) ≠ (i,j). Операция сглаживания даёт новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.
А. построить результат
Б. в сглаженной матрице найти
сумму модулей элементов
Блок-схема
Текст программы (Pascal)
program zadacha_2;
type
matrix= array [0..11,0..11] of real;
var
a,b: matrix;
i,j: integer;
t: text;
summa_modulei: real;
procedure sglajivanie_ij(var x,y: integer);
var
i,j: integer;
summa: real;
elementov: shortint;
begin
summa:=0;
elementov:=0;
for i:= x-1 to x+1 do begin
for j:= y-1 to y+1 do begin
if (i=x) and (j=y) then begin
end
else begin
if (i=0) or (i=11) or (j=0) or (j=11) then begin
end
else begin
summa:= summa + a[i,j];
elementov:= elementov + 1;
end;
end;
end;
end;
b[x,y]:= summa/elementov;
end;
function modul_ij(var x,y: integer): real;
var
i: integer;
begin
modul_ij:=abs(b[x,y]);
end;
begin
for i:= 0 to 11 do
for j:= 0 to 11 do begin
a[i,j]:=0;
b[i,j]:=0;
end;
assign(t,'zad2_in.txt');
reset(t);
for i:= 1 to 10 do begin
for j:= 1 to 10 do begin
read(t,a[i,j]);
end;
end;
i:=1;
while i<=10 do begin
j:=1;
while j<=10 do begin
sglajivanie_ij(i,j);
j:=j+1;
end;
i:=i+1;
end;
summa_modulei:=0;
i:=1;
while i<=10 do begin
j:=i-1;
while j>=1 do begin
summa_modulei:= summa_modulei + modul_ij(i,j);
j:=j-1;
end;
i:=i+1;
end;
assign(t,'zad2_out.txt');
rewrite(t);
for i:= 1 to 10 do begin
for j:= 1 to 10 do begin
write(t,b[i,j]:0:2,' ');
end;
writeln(t);
end;
writeln(t);
write(t,'Сумма модулей элементов сглаженной матрицы, лежащих ниже главной диагонали, равно
',summa_modulei:0:2);
writeln('Сумма модулей элементов сглаженной матрицы, лежащих ниже главной диагонали, равно
',summa_modulei:0:2);
close(t);
writeln('Ответ содержится в zad2_out.txt');
writeln('Нажмите Enter');
end.
Тест
В файл zad2_in.txt вводим матрицу размером 10x10
Затем запускаем программу ZAD2.exe
Находим решение задачи в файле zad2_out.txt