- •Уфимский государственный нефтяной технический
- •Университет
- •Кафедра вычислительной техники и инженерной кибернетики
- •Учебно-методическое пособие
- •К выполнению заданий по информатике
- •Введение
- •1. Состав работы
- •2. Требования к оформлению отчета
- •Часть 3. Определить наибольший элемент среди нечетных по номеру элементов второй трети массива.
- •Часть 4. Упорядочить нечетные по номеру элементы второй половины массива по убыванию квадратов значений.
- •3.2. Алгоритм решения
- •3.2.1. Структура алгоритма
- •3.2.2. Алгоритм основной программы
- •3.2.3. Алгоритмы подпрограмм
- •3.2.3.1. Получение элементов вектора
- •3.2.3.2. Вычисление параметра вектора
- •Вычислить сумму положительных элементов третьей четверти массива
- •3.2.3.3. Определение параметра вектора
- •4.2.3.4. Упорядочение элементов вектора
- •4.2.3.5. Вывод информации Алгоритм процедуры writevect
- •3.3. Паскаль-программа
- •3.4. Распечатка результатов
- •Результаты расчета
- •4. Задание 2. Обработка двумерных массивов.
- •4.1. Постановка задачи.
- •4.2. Алгоритм решения.
- •4.2.1. Структура алгоритма.
- •4.2.2. Алгоритм основной программы
- •4.2.3. Алгоритмы подпрограмм.
- •4.2.3.1. Получение матрицы.
- •Вычислить матрицу а по формуле
- •4.2.3.2. Получение вектора.
- •А n, a[1..N, 1..N] лгоритм процедуры vector
- •4.2.3.3. Матричные операции.
- •4.2.3.4. Упорядочение матрицы.
- •4.2.3.5. Вычисление параметра массива.
- •Вычислить значение функции
- •4.2.3.6. Вывод информации. Алгоритм процедуры вывода матрицы writematr
- •4.3. Паскаль-программа.
- •4.4. Распечатка результатов.
- •Список рекомендуемой литературы
- •Символы к блок-схемам по гост 19.003-80
4.2.3.5. Вывод информации Алгоритм процедуры writevect
n ,k,f [1..n]
нет
д а
Таблица результатов
Имя |
Тип |
Назначение |
Параметр |
n |
целый |
размерность |
формальный |
f[1..n] |
вектор |
||
i |
параметр цикла |
локальный |
|
k |
кол-во строк |
procedure writevect(n,k:integer; f:vect);
var i:integer;
begin
for i:=1 to n do
begin
write(f[i]:5);if i mod round(n/k)=0 then writeln;
end;
writeln;
end {writevect};
3.3. Паскаль-программа
program kurslab1;{Хасанов А. А. ст.гр. АГ 98-02 вар. 111}
uses crt;
type vect=array[1..99] of integer;
var f: vect; n,a,b,s,mx:integer;
{-----------Часть 1--------------}
procedure vector(n,a,b:integer;var f:vect);
var i:integer;
begin
for i:=1 to n do f[i]:=round((b-a)*random(100)/100+a);
end;
{-----------Часть 2--------------}
function sum(n:integer;f:vect):integer;
var i,s:integer;
begin
s:=0;
for i:=round(n/2)+1 to round(3*n/4) do
if f[i] > 0 then s:=s+f[i];
sum:=s;
end;
{-----------Часть 3-------------}
function max(n:integer; f:vect):integer;
var i,mx:integer;
begin
mx:=-1000;
for i:=round(n/3)+1 to round(2*n/3) do
if odd(i) then
if f[i] > mx then mx:=f[i];
max:=mx;
end;
{-----------Часть 4----------------}
procedure porjadok(n:integer;var f:vect);
var k,j,c:integer;
begin
for i:=round(n/2)+1 to n-1 do
if odd(i) then
begin k:=i;
for j:=i+2 to n do
if odd(j) then
if sqr(f[j]) > sqr(f[k]) then k:=j;
if i <> k then
begin
c:=f[i];
f[i]:=f[k];
f[k]:=c;
end;
end;
end;
{--------Вывод вектора--------------}
procedure writevect(n,k:integer; f:vect);
var i:integer;
begin
for i:=1 to n do
begin
write(f[i]:5);if i mod round(n/k)=0 then
writeln;
end;
if n mod k <> 0 then writeln;
end;
{----------Основная программа-----}
begin
clrscr;
write('Введите размерность вектора ');readln(n);
write('Интервал значений от ');read(a);
write('до ');readln(b);
writeln;writeln(' ':25,’Исходные данные’);
writeln('Размерность вектора n = ',n);
writeln('Интервал [',a,',',b,']');writeln;
writeln(' ':26,'Результаты расчета');
randomize;
vector(n,a,b,f);
writeln('--------------------Часть 1---------------------------');
writeln(‘Вектор F из ‘,n,’ элементов в интервале [‘,a,’,’,b,’], полученных’);
writeln(‘при помощи генератора случайных чисел’);
writevect(n,4,f);
writeln('--------------------Часть 2---------------------------');
writeln('Сумма положительных элементов третьей четверти вектора');
s:=sum(n,f); writeln(‘ s=’,s);
writeln('--------------------Часть 3---------------------------');
writeln('Наибольший элемент второй трети среди нечетных по номеру');
writevect(n,3,f);
mx:=max(n,f);writeln(‘ mx=’,mx);
writeln('--------------------Часть 4---------------------------');
writeln(‘Вектор F с упорядоченными по убыванию квадратов значений’);
writeln(‘нечетными по номеру элементами второй половины’);
porjadok(n,f);
writeln('Упорядоченный вектор F’);
writevect(n,2,f);
writeln('----------------Конец задачи-----------------------');
end.