Структурированная запись основного алгоритма 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структурированная запись основного алгоритма



1. Ввести a, b и n

2. Вычислить S = | Integral (F1, a, b, n) - Integral (F2, a, b, n) |

3. Вывести S

Схема алгоритма

Программа на языке Си

#include <stdio.h>

#include <math.h>

double f1 (double);

double f2 (double);

double integral (double (*)(double),

            double, double, unsigned);

int main (void)

{

double a, b, s;

unsigned n;

printf (״Введите значения a и b\n”);

scanf (״%lf%lf”, &a, &b);

printf (״Введите число разбиений интервала\n”);

scanf (״%u”, &n);

s = fabs(integral(f1,a,b,n)-integral(f2,a,b,n));

printf(״S = %lf”, s);

return 0:

}

 

double f1 (double x)

{

return sqrt(exp(x))+3*sin(x);

}

 

double f2 (double x)

{

return x*x/2-2*x+3

}

 

double integral (double (*f)(double),

            double a, double b, unsigned n)

{

double s=0, h, x;

h = (b-a)/n;

for (x = a+h/2; n>0; --n, x += h)

s += f(x);

s *= h;

return s;

}

Программа на языке Паскаль

Program Main_53;

Type

Func = function (real): real;

Var

a, b, S: real;

n: integer;

 

function F1(x:real):real; far;

begin

F1:= sqrt(exp(x))+3*sin(x)

end;

 

function F2(x:real):real; far;

begin

F2:= x*x/2-2*x+3

end;

function Integral (f: Func; a, b: real, n: integer):real; far;

var

i: integer;

S, h, x: real;

begin

h:= (b-a)/n;

S:= 0; x:= a+h/2;

for i:=1 to n do

begin

S:= S+f(x);

x:= x+h

end;

S:= S*h;

Integral:= S

end;

 

BEGIN

writeln ('Введите значения a и b');

readln (a, b);

writeln ('Введите число разбиений');

read (n);

S:= abs(Integral(F1,a,b,n)-Integral(F2,a,b,n));

writeln ('S = ', S:8:3)

END.

Программа на языке Фортран

Program Main_53

Implicit none

real a, b, S, Integral

integer n

real,external:: F1, F2  

print *,'Введите значения a и b'

read *, a, b

print *, 'Введите число разбиений'

read *, n

S = abs(Integral(F1,a,b,n)-Integral(F2,a,b,n))

print *, 'S = ', S

end

 

real function F1(x)

real, intent(in):: x

F1 = sqrt(exp(x))+3*sin(x)

end

 

real function F2(x:real):real; far;

real, intent(in):: x

F2 = x*x/2-2*x+3

end

 

real function Integral (f, a, b, n)

real, intent(in):: a, b

integer, intent(in):: n

real f

integer i

real S, h, x

h = (b-a)/n

S = 0

x:= a+h/2

do i=1, n 

S = S+f(x)

x = x+h

enddo

S = S*h

Integral = S

end

Программа на языке Python

from math import sqrt, exp, sin

def integral(f, a, b, n):

h=(b-a)/n; s=0; x=a+h/2

for i in range(n):

s+=f(x)

x+=h

s*=h

return s   

 

def f1(x):

res=sqrt(exp(x))+3*sin(x)

return res

 

def f2(x):

res=x*x/2-2*x+3 

return res

 

a=float(input("Введите значение a:"))

b=float(input("Введите значение b:"))

n=int(input("Введите число разбиений интервала:"))

s=abs(integral(f1,a,b,n)-integral(f2,a,b,n))

print("S=", s)

Программа в системе Матлаб

Вариант с передачей имени функции как строкового данного

a=input('Введите a=');

b=input('Введите b=');

n=input('Введите число разбиений n=');

s=abs(Integral('f1',a,b,n)-Integral('f2',a,b,n));

disp(sprintf('s=%f',s));

 

function f=f1(x);

f=sqrt(exp(x))+3*sin(x);

end

 

function f=f2(x);

f=x^2/2-2*x+3;

end

 

function s=Integral(f,a,b,n);

% Имя функции f передается как строковое данное

h=(b-a)/n;

s=0;

x=a+h/2;

for i=1:n

s=s+feval(f,x);

x=x+h;

end

s=s*h;

end

Вариант с передачей указателя на функцию

a=input('Введите a=');

b=input('Введите b=');

n=input('Введите число разбиений n=');

f1=@(x) sqrt(exp(x))+3*sin(x);

f2=@(x) x^2/2-2*x+3;

s=abs(Integral(f1,a,b,n)-Integral(f2,a,b,n));

disp(sprintf('s=%f',s));

 

function s=Integral(f,a,b,n);

h=(b-a)/n;

s=0;

x=a+h/2;

for i=1:n

s=s+ f(x);

x=x+h;

end

s=s*h;

end

 


Библиографический список

1. ЕСПД. ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. М.,2010.

2. Кнут Д. Искусство программирования. Т.1. Основные алгоритмы. М.,2006.

3. Керниган Б., Ритчи Д. Язык программирования С: Пер. с англ. М., 2013.

4. Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Free Pascal и Lazarus: Учебник по программированию. М., 2010.

5. Бартеньев О.В. Современный Фортран. М., 2000.

6. Саммерфильд М. Программирование на Python 3. Подробное руководство.: Пер. с англ. СПб, 2009.

7. Алексеев Е.Р., Чеснокова О.В. MATLAB 7. М., 2006.


ОГЛАВЛЕНИЕ

Введение.. 3

ПОНЯТИЕ АЛГОРИТМА И ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ.. 4

алгоритмы РЕШЕНИЯ ТИПОВЫХ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ.. 13

Последовательные алгоритмы.. 13

Задача 1. Вычисление значения арифметического выражения. 15

Задача 2. Использование целочисленного деления. 18

Задача 3. Работа с цифрами целого числа. 21

Разветвляющиеся алгоритмы.. 29

Задача 4. Поиск максимального из трех чисел. 31

Задача 5. Использование составного условия. 38

Задача 6. Использование вложенных условных конструкций для решения уравнения. 42

Циклические алгоритмы.. 46

Задача 7. Простейший цикл. 48

Задача 8. Получение таблицы значений функции. 50

Задача 9. Поиск максимального значения функции. 54

Задача 10. Нахождение суммы.. 60

Задача 11. Нахождение суммы.. 63

Задача 12. Нахождение суммы.. 66

Задача 13. Нахождение суммы.. 71

Задача 14. Вычисление факториала. 75

Задача 15. Вычисление произведения. 78

Задача 16. Вычисление значения интеграла. 81

Задача 17. Определение количества чисел, удовлетворяющих условию.. 86

Задача 18. Нахождение среднего арифметического последовательно вводимых чисел. 91

Задача 19. Нахождение суммы цифр в числе. 96

Задача 20. Поиск делителей числа. 100

Задача 21. Проверка простого числа. 103

Задача 22. Вычисление суммы бесконечного ряда с использованием рекуррентной формулы.. 110

Задача 23. Вычисление суммы бесконечного ряда. Частично рекуррентные вычисления. 116

Задача 24. Решение уравнения методом половинного деления. 126

Задача 25. Нахождение суммы. Вложенные циклы.. 132

Основные алгоритмы обработки массивов.. 142

Одномерные массивы.. 142

Задача 26. Нахождение среднего арифметического элементов массива. 144

Задача 27. Нахождение среднего арифметического элементов, удовлетворяющих условию.. 148

Задача 28. Проверка наличия определенных элементов в массиве. 155

Задача 29. Вычисление значения полинома. 160

Задача 30. Поиск максимального элемента в массиве. 164

Задача 31. Поиск минимума в массиве и его перестановка. 169

Задача 32. Поиск минимального из элементов, удовлетворяющих условию.. 174

Задача 33. Удаление максимального элемента из массива. 181

Задача 34. Вставка элемента в массив. 187

Задача 35. Формирование нового массива на основе исходного. 193

Задача 36. Перебор всех пар элементов в массиве. Вложенные циклы.. 200

Задача 37. Сортировка массива методом попарно-обменных перестановок. 206

Задача 38. Сортировка массива методом поиска максимума. 219

Многомерные массивы. Матрицы.. 226

Задача 39. Вычисление среднего арифметического в строках матрицы.. 229

Задача 40. Поиск максимального по модулю элемента в столбцах матрицы.. 234

Задача 41. Преобразование строки и столбца, где находится минимум матрицы.. 240

Задача 42. Перестановка столбцов матрицы.. 248

Задача 43. Работа с элементами главной диагонали квадратной матрицы.. 257

Задача 44. Проверка элементов в части матрицы, ограниченной диагональю.. 262

Задача 45. Поиск упорядоченных по возрастанию строк матрицы.. 268

Задача 46. Обработка трехмерного массива. 274

ВсПОМОГАТЕЛЬНЫЕ АЛГОРИТМЫ... 280

Задача 47. Использование вспомогательных алгоритмов. Поиск минимального из двух значений 285

Задача 48. Использование вспомогательных алгоритмов. Поиск минимальных элементов двух массивов 290

Задача 49. Использование вспомогательных алгоритмов. Обработка массива по частям.. 301

Задача 50. Вспомогательные алгоритмы. Обработка двух массивов с получением новых массивов 310

Задача 51. Вспомогательные алгоритмы. Работа с диагоналями двух квадратных матриц. 326

Задача 52. Использование вспомогательных алгоритмов. Обработка отдельных столбцов матрицы 342

Задача 53. Использование вспомогательных алгоритмов. Передача функции как параметра в другую функцию. Нахождение площади между двумя кривыми. 357

Библиографический список. 368

 



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.6.75 (0.026 с.)