Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Часть 2. Вычислить сумму положительных элементов третьей четверти массива



 
 

где […] – округление до целого.

Часть 3. Определить наибольший элемент среди нечетных по номеру элементов второй трети массива.

 
 

 

Часть 4. Упорядочить нечетные по номеру элементы второй половины массива по убыванию квадратов значений.

 

3.2. Алгоритм решения

 

3.2.1. Структура алгоритма

 

Алгоритм состоит из основного алгоритма (для основной программы) и вспомогательных алгоритмов (для подпрограмм) для решения задач:

- вычисление вектора – процедура vector (n, a, b, f);

- вычисление параметра вектора – функция sum (n, f);

- определение параметра вектора – функция max (n, f);

- сортировка массива – процедура porjadok (n, f);

где n – размерность вектора, a, b – интервал значений элементов вектора (a, b вводится при запуске программы);

F – вектор из n элементов.

Кроме того используется процедура вывода: вектора – writevect (n, k, f);

k – число выводимых строк.

 

 

Алгоритм основной программы

 
 

 

 


 

                           
   
 
   
 
vector (n, a, b, f)
 
 
 
 
   
  s=sum(n, f)
 
   
 
   
 
   
  mx=max(n, f)
 
   
     
 

 

 


           
   
   
 
porjadok (n, f)
 
 

 

 


Таблица переменных

 

Имя Тип Назначение Параметр
n     целый размерность     глобальный
a, b интервал
f[1..n] вектор
s сумма
mx максимум

 

begin

clrscr;

write('Введите размерность вектора'); readln(n);

write('Интервал значений от '); read(a);

write('до '); readln(b);

writeln; writeln(' ': 25, ’Исходные данные’);

writeln('Размерность вектора n = ', n);

writeln('Интервал [', a, ', ', b, ']'); writeln;

writeln(' ': 26, 'Результаты расчета');

randomize;

writeln('-----------------Часть 1---------------------');

writeln(‘Вектор F из ‘, n, ’ элементов в интервале [‘, a, ’, ’, b, ’], полученных’);

writeln(‘при помощи генератора случайных чисел’);

vector(n, a, b, f);

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);

writevect(n, 2, f);

writeln('---------------Конец задачи----------------');

end.

 

Алгоритмы подпрограмм

 

Получение элементов вектора

 
 
Вычислить значения 30 элементов одномерного целочисленного массива F в интервале (-7, 8) с использованием генератора случайных чисел

 


Алгоритм процедуры vector

 

       
 
   
 


n, a, b

 
 


f[i..n]

Таблица переменных

Имя Тип Назначение Параметр
n     целый размерность формальный
i параметр цикла локальный
a, b интервал формальный
f[1..n] вектор

 

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;

Вычисление параметра вектора

 

Вычислить сумму положительных элементов третьей четверти массива

 


 
 

Алгоритм функции sum

       
 
   
 


n, f[i..n]

 

 
 

 


нет

 

да

       
 
   
s=s+fi
 

 


 
 

 


sum

 

Таблица переменных

 

Имя Тип Назначение Параметр
n     целый размерность формальный
f[1..n] вектор
i параметр цикла локальный
s вспомогательное
sum имя функции  

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; {sum}

 

Определение параметра вектора

 
 
Определить наибольший элемент среди нечетных по номеру элементов второй трети массива

 

 
 


Алгоритм функции max

 
 


n, f[1..n]

       
   
 
 

 

 


нет

 
 


 

да

нет

           
   
max=mx
   
 
 
 

 


да

 
 
mx=fi


ma max

Таблица переменных

Имя Тип Назначение Параметр
n целый размерность формальный
f[1..n] вещественный вектор
i   целый параметр цикла   локальный
mx вспомогательное
max имя функции  

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{max};

4.2.3.4. Упорядочение элементов вектора

 
 
Упорядочить нечетные по номеру элементы второй половины массива по убыванию квадратов значений

 

 


Алгоритм процедуры porjadok

       
 
   
 


n, f[1..n]

 
 

 


       
   
 
 


нет f[1..n]

 

да

       
   
 
 

 

 


 
 

 


Нет нет

           
 
   
 
   
 

 


да да

 
 
c=fi fi=fk fk=c


k=j
нет да

       
   
 
 

 


Таблица переменных

Имя Тип Назначение Параметр
N   целый размерность формальный
f[1..n] вектор
i, j параметр цикла локальный
k, c вспомогательное

 

 

procedure porjadok(n: integer; var f: vect);

var i, 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 {porjadok};

 

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};

 

Паскаль-программа

 

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.

 

3.4. Распечатка результатов

 

Исходные данные

 

Размерность вектора n = 30

Интервал [-7, 8]

Результаты расчета

 

--------------------------------Часть 1-------------------------------

 

Вектор F из 30 элементов в интервале [-7, 8], полученных

при помощи генератора случайных чисел

 

-6 -6 -4
-4 -4 -6
-6
-3 -2 -2    

 

---------------------------------Часть 2------------------------------

 

Сумма положительных элементов третьей четверти вектора

 

s=40

 

---------------------------------Часть 3------------------------------

 

Наибольший элемент второй трети среди нечетных по номеру

 

-6 -6 -4 -4 -4
-6
-6 -3 -2 -2

 

mх=7

 

---------------------------------Часть 4------------------------------

 

Вектор F с упорядоченными по убыванию квадратов значений нечетными по номеру элементами второй половины

 

-6 -6 -4 -4 -4 -6
-6 -3 -2 -2

 

-----------------------------Конец задачи---------------------------

 

 

4. Задание 2. Обработка двумерных массивов.

4.1. Постановка задачи.

Часть 1. Вычислить элементы матрицы А по формуле

 

, i, , где

; ; .

Часть 2. Используя известную матрицу А, вычислить вектор ( ) как

наибольший среди принадлежащих отрезку [-10, 10] элементов i-го

столбца.

Часть 3. Вычислить Z= ,

где , - вектор;

, , - квадратная матрица;

, - единичная матрица;

– транспонированная матрица , , ;

– инвенторованный вектор , .

 

Часть 4. Упорядочить по убыванию положительные элементы последнего

столбца матрицы А.

 

Часть 5. Вычислить значение функции

4.2. Алгоритм решения.

4.2.1. Структура алгоритма.

Алгоритм состоит из основного алгоритма (для основной программы) и вспомогательных алгоритмов (для подпрограмм):

- вычисление матрицы – процедура matrica (n, a);

- вычисление вектора – процедура vector (n, a, x);

- матричные операции – процедура matoper (n, x, a, z);

- сортировка массива – процедура porjadok (n, a, b);

- вычисление значение функции - функция – znachf (n, a, x),

где n – размерность матрицы, вектора (вводится в начале);

A, B, Z– квадратные матрицы размерности n;

X – вектор из n элементов.

 

Кроме того используются процедуры вывода:

- матрицы - writmatr ( ’A’, n, a);

- вектора - writvect ( ’X’, n, x);

‘A’, ‘X’ – имена соответственно матрицы A, вектора X.

 

4.2.2. Алгоритм основной программы

 

 

 

 

 


Таблица переменных

 

Имя Тип Назначение Параметр
n целый размерность глобальный
a[1..n, 1..n]   вещественный матрица
x[1..n] вектор
z[1..n, 1..n] матрица
y скаляр
simbol символьный символ
namber целый номер
b[1..n, 1..n] вещественный матрица

begin{Основная программа}

clrscr;

write(' Введите размерность матрица n '); readln(n);

writeln(' ': 25, 'Исходные данные');

writeln('размерность матрицы n=', n);

writeln(' ': 20, 'результаты расчетов');

writeln('------------------ часть 1--------------------------');

writeln('Вычислить элементы матрицы А по формуле');

matrica(n, a); writmatr('А', n, a);

writeln('------------------- часть 2--------------------------');

writeln('Из матрицы А получить вектор Х, ');

writeln('элемент которого х[i] определяется как наибольший ');

writeln('среди принадлежащих отрезку [-10, 10] ');

writeln('элементов i-го столбца. ');

vector(n, a, x); writevect('X', n, x);

writeln('------------------- часть 3--------------------------');

writeln(' ': 7, 'Вычислить Z=(At-E)(A-E)(X-Xи)');

matoper(n, a, x, z);

write('Результат: ');

writmatr('Z', n, z);

writeln('------------------- часть 4--------------------------');

writeln('Упорядочить по убыванию положительные элементы');

writeln('последнего столбца мартицы А');

porjadok(n, a, b);

writmatr('B', n, b);

writeln('-------------------- часть 5------------------------ ');

writeln('Вычислить значение функции y=y1+y2');

y: =znachf(n, a, x); writeln('y=', y: 6: 3);

writeln('------------------конец задачи---------------------');

end.

 

4.2.3. Алгоритмы подпрограмм.

 

4.2.3.1. Получение матрицы.

 
 
Вычислить матрицу А по формуле , i, , где ; ; .

 

 


Алгоритм процедуры matrica

   
 
 
 

 

 


Таблица переменных.

 

Имя Тип Название Параметр
n   целый размерность матрицы формальный
a[1..n, 1..n]   вещественный матрица
i, j   целый параметр цикла локальный

 

procedure matrica(n: integer; var a: matr);

var i, j: integer; f1, f2, f3: real;

begin

for i: =1 to n do

for j: =1 to n do

begin

f1: =cos(pi*(8.25+(i+j)/2))/sin(pi*(8.25+(i+j)/2));

f2: =pi*i*(1+i/j);

f3: =ln(sqr(n)-i/j+1)/ln(2);

a[i, j]: =f1/f2*f3;

end;

end{matrica};

4.2.3.2. Получение вектора.

 

Используя известную матрицу А, вычислить вектор X, если xi(i=1, 2..n) вычисляется как наибольший среди принадлежащих отрезку [-10, 10] элементов i-го столбца матрицы.

Математическая формулировка задачи

, , i=

Таблица переменных

 

Имя Тип Назначение Параметр
n целый размерность вектора формальный
i, j параметр цикла локальный
m   вещественный вспомогательный
a[1..n, 1..n] матрица формальный
x[1..n] вектор

 

 

n, a[1..n, 1..n]
Алгоритм процедуры vector

 
 

нет

 


да

m=

 

 


m

 

 


нет

 


да

 

 


procedure vector(n: integer; a: matr; var x: vect);

var i, j: integer; m: real;

begin

for i: =1 to n do

begin

m: =-exp(30);

for j: =1 to n do

if abs(a[j, i])< =10 then if a[j, i]> m then m: =a[j, i];

x[i]: =m;

end;

end{vector};

 

4.2.3.3. Матричные операции.

 

Выполнить матричную операцию Z=

 

Х – вектор - инвентированный вектор А - матрица - транспонированная матрица Е – единичная матрица Z – матрица – результат    
Математическая формулировка задачи

 

1) ;

 

2) U=A - E ;

 

3) V=A-E ;

 

4) C=U.V ;

 

5) ;

6) .

Таблица переменных

 

Имя Тип Назначение Параметр
n целый размерность формальный
a[1..n, 1..n] вещественный матрица   вектор
z[1..n, 1..n] х[1..n]
i, k, j целый параметр цикла локальный
s вещественный вспомогательный скаляр
y
b[1..n, 1..n] матрица
u[1..n, 1..n]
v[1..n, 1..n]
c[1..n, 1..n]

 

Алгоритм процедуры matoper

       
 
   
 


n, a[1..n, 1..n], x[1..n]

 

 
 


               
   
   
   
 
 
 


  y=0

       
   
 
 


       
   
 
 


 

s=0
=

       
 
   
 


 

                   
   
 
         
y=y +
 
 
 


 

       
   
 
 

нет

               
   
   
 
 
   
 
 

 


да

                             
   
 
   
     
 
 
   
   
 
 
 
   
 
 

 

 


y

 

 


 


           
   
     
 
 


 

 

           
 
   
 
 
   

 

 


procedure matoper(n: integer; a: matr; x: vect; var z: matr);

var i, k, j: integer; s, y: real; b, u, v, c: matr;

begin

for i: =1 to n do

for j: =1 to n do

begin

b[i, j]: =a [j, i];

u[i, j]: =b[i, j];

v[i, j]: =a[i, j];

if i=j then

begin

u[i, j]: =b[i, j]-1;

v[i, j]: =a[i, j]-1;

end;

end;

for i: =1 to n do

for j: =1 to n do

begin

s: =0;

for k: =1 to n do s: =s+u[i, k]*v[k, j];

c[i, j]: =s;

end;

y: =0;

for i: =1 to n do y: =y+x[i]*(-x[i]);

for i: =1 to n do

for j: =1 to n do z[i, j]: =c[i, j]*y;

writeln('B=At': 20);

writmatr('b', n, b); readln;

writeln('U=B-E': 21);

writmatr('u', n, u); readln;

writeln('V=A-E': 21);

writmatr('v', n, v); readln;

writeln('C=U*V': 21);

writmatr('c', n, c); readln;

writeln('скаляр y=X*Xи': 26);

writeln('y=', y: 6: 3);

end{matoper};

 

4.2.3.4. Упорядочение матрицы.

Упорядочить по убыванию положительные элементы последнего столбца матрицы А.

 

Алгоритм процедуры porjadok


Поделиться:



Популярное:

  1. G. Доходный метод оценки, определяющий сумму дисконтированного денежного потока
  2. H) доходный метод оценки, определяющий сумму дисконтированного денежного потока
  3. O.felineus (взрослая особь, часть)
  4. А. Расчёт железобетонных элементов по первой группе
  5. Абонемент на космические путешествия и другие религиозные убеждения, которые заставляют вас препятствовать собственному успеху и счастью
  6. Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
  7. Алгоритмы поиска и присвоения значений элементам массива
  8. Алгоритмы формирования одномерного массива
  9. Анализ состояния оборудования, эффективности работы элементов технологической схемы
  10. Анализ уровней элементов системы коммерческой логистики
  11. Аппаратная и программная часть задачи
  12. Арбитражный суд не вправе по собственной инициативе уменьшать взыскиваемую в пользу комитента сумму на размер комиссионного вознаграждения, причитающегося комиссионеру.


Последнее изменение этой страницы: 2016-06-04; Просмотров: 665; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.365 с.)
Главная | Случайная страница | Обратная связь