АРЗАМАССКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ)




Институт АПИ НГТУ, Арзамасский политехнический институт (филиал) Нижегородскогогосударственного технического университета им. Р.Е. Алексеева

сокращенное и полное наименование института

 

Кафедра ____ ПМ_ «Прикладная математика »

сокращенное и полное наименование кафедры

 

Курсовая работа по дисциплине

«Технологии программирования»

 

 

Выполнил: студент

группы АЗИС-2016-1

Кпылов П.А.

 

Проверил:

доцент кафедры ПМ

к.т.н. Лазарева А.Б.

 

Арзамас 2018

 

Содержание

Формулировка задачи № 1. 3

Блок-схема для решения задачи № 1. 3

Листинг программы и результат выполнения. 6

Формулировка задачи № 2. 8

Блок-схема для решения задачи № 2. 8

Листинг программы и результат выполнения. 11

Формулировка задачи № 3. 13

Листинг программы и результат выполнения. 14

 


Формулировка задачи № 1

Начертить блок схему и написать программу:

Дан вектор

 

 

Необходимо найти сумму координат этого вектора.

Для решения задачи необходимо написать функции:

1) Для ввода вектора

2) Для вывода вектора

3) Для нахождения суммы координат вектора

Блок-схема для решения задачи № 1

Объявление заданного вектораdoubley[10] и переменной doublesy –суммы координат    
Обращение функции для ввода вектора inputv (y, 10); (Приложение №1)
Обращение функции для вывода вектораoutputv (y, 10);  
Обращение к функции для вычисления суммы координатsy=summa (y,10);
SY



Входные параметры: doublex[]; intn
x[i]
i<n
i=0
i++
Блок-схема ввода вектора:

 

да

 

нет

 

Блок схема вывода вектора:

Входные параметры: doublex[]; intn
i<n
i=0
i++
x[i]

 

 


 

 

 


да

 

нет


 

Блок-схема вычисления суммы координат вектора:

Входные параметры:doublex[]; intn; Выходныепараметры: double s;  
i<n
i=0
S=S+x[i]
s=0
x++
return s

 

 


 

да

нет


 

Листинг программы и результат выполнения

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

#include<iostream>//библеотека

#include<iomanip>

usingnamespacestd;//пространство имён

//прототипы функций

voidinputv(double x[],int n);

voidoutputv(double x[], int n);

double summa(double x[], int n);

//главнаяфунция

voidmain()

{//руссификация

setlocale(LC_ALL, "RUS");

//объявление переменных

doubley[10],sy;

//Вычисление

cout<<"\nВвести через пробел 10 координат\n";

inputv(y, 10);

cout<<"\n********************Вектор*****************\n";

outputv(y, 10);

sy = summa(y, 10);

cout<<"\n\nСуммакоординат ="<<sy;

cout<<endl;

}

//функция дел или вычисление "/"

voidinputv(doublex[], intn)

{

inti;

for (i = 0; i <n; i++)

cin>>x[i];

}

voidoutputv(doublex[], intn)

{

inti;

for (i = 0; i <n; i++)

{

if (i % 5 == 0)cout<<endl;

cout<<setw(10) <<x[i];

}

}

double summa(doublex[], intn)

{

double s;

inti;

s = 0;

for (i = 0; i <n; i++)

s = s + x[i];

return s;

}



 

Формулировка задачи № 2

Начертить блок схему и написать программу:

Дан вектор

 

Необходимо найти max-ю координату и индекс этой координаты.

Для решения задачи необходимо написать функции:

4) Для ввода вектора

5) Для вывода вектора

6) Для поиска максимальной координаты вектора и её индекса

Блок-схема для решения задачи № 2

Объявление заданного вектораdoubley[10] и переменных doublemy –максимальная координата intky – её индекс  
Обращение функции для ввода вектора inputv (y, 10);
Обращение функции для вывода вектораoutputv (y, 10);  
Обращение к функции для поиска максимально координаты poisk (y, 10, my, ky)
my, ky
Блок-схема главной функции

 

Входные параметры: doublex[]; intn
x[i]
i<n
i=0
i++
Блок-схема ввода вектора:

 

да

 

нет

 

Блок схема вывода вектора:

Входные параметры: doublex[]; intn
i<n
i=0
i++
x[i]

 

 


 

 

 


да

 

нет

Блок-схема для поиска максимальной координаты вектора и её индекса:

Входные параметры: doublex[]; intn Выходные параметры: double&p; double&p
p=x[i]; k=[i]
x[i]>p
i++
i<n
i=1
p=x[i];k=[i]

 

 


 

да

 

нет

 

 

да

 

нет


 

 

Листингпрограммыирезультатвыполнения

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

#include<iostream>//библеотека

#include<iomanip>

usingnamespacestd;//пространство имён

//прототипы функций

voidinputv(double x[], int n);

voidoutputv(double x[], int n);

voidpoisk(double x[], int n, double& p, int& k);

//главнаяфунция

voidmain()

{//руссификация

setlocale(LC_ALL, "RUS");

//объявление переменных

doubley[10], my; intky;

//Вычисление

cout<<"\nВвести через пробел 10 координат\n";

inputv(y, 10);

cout<<"\n********************Вектор*****************\n";

outputv(y, 10);

poisk(y, 10, my, ky);

cout<<"\n\nМаксимальная координата ="<<my;

cout<<"\tИндекс максимальной координаты = "<<ky+1;

cout<<endl;

}

//функция дел или вычисление "/"

voidinputv(doublex[], intn)

{

inti;

for (i = 0; i <n; i++)

cin>>x[i];

}

voidoutputv(doublex[], intn)

{

inti;

for (i = 0; i <n; i++)

{

if (i % 5 == 0)cout<<endl;

cout<<setw(10) <<x[i];

}

}

voidpoisk(doublex[], intn, double&p, int&k)

{

inti;

p = x[0]; k = 0;

for (i = 1; i <n; i++)

{

if (x[i]>p){

p = x[i];

k = i;

}

}

}

 


Формулировка задачи № 3

 

Передача многомерных статических массивов в функцию.

Многомерный массив – это массив, элементами которого служат массивы.

Объявляются многомерные массивы так:

тип └┘имя массива [размер 1][размер 2]…[размер N ].

Оператор doublea[30][100];

Это объявление двумерного массива из вещественных чисел. Первый индекс принимает значение от 0 до 29, а второй от 0 до 99. Элементыэтогомассива:

 

a[0][0]a[0][1]…….a[0][99]

a[1][0]a[1][1]….…a[1][99]

…………………….....……

a[29][0]a[29][1]…a[29][99]

При передаче двумерного массива в качестве параметра максимальное значение первого индекса не учитывается, поэтому необходимо объявить дополнительные параметры типа int, указывающий значение первого и второго индекса массива.

Компилятор позволяет указывать максимальное значение первого индекса массива в квадратных скобках, однако это число является фактически только комментарием и будет проигнорировано компилятором.

Максимальное значение второго индекса (и других, если их более двух) указывается после параметра массива.


 

Листинг программы и результат выполнения

#include<iostream>

#include<iomanip>

#include<windows.h>

usingnamespacestd;

//Прототип функции для ввода матрицы

voidvivodm(doublea[][5], intn, intm);

//Прототип функции для вывода матрицы

voidvvodm(doublea[][5], intn, intm);

//Функция для удаления строки из матрицы

voidudal(doublea[][5], int&n, intm)

{

inti, j, l, r;

i = 0;

do

{

for (j = 0; j <m; j++)

{

if (a[i][j] == 0)

{

n--;

for (l = i; l <n; l++)

{

for (r = 0; r <m; r++)

a[l][r] = a[l + 1][r];

}

goto y;

}

}

i++;

y:;

} while (i <n);

}

void main()

{

//Руссификация

setlocale(LC_ALL, "rus");

double a[5][5];

intn = 3, m = 4;

//Ввод матрицы А

//Вывод результата с 2 знаками после точки

cout.setf(ios::fixed);

cout.setf(ios::showpoint);

cout.precision(2);

cout<<"\n ВвестиматрицуА\n";

vvodm(a, 3, 4);

//Удаление строки

udal(a, n, m);

cout<<"\n Матрица А\n";

cout<<"*********************\n";

vivodm(a, n, m);

//Вывод изменёной матрицы А

cout<<"\n\n\n Изменёная матрица А\n";

cout<<"*********************\n";

vivodm(a, n, m);

cout<<endl;

system("pause");

}

voidvivodm(doublea[][5], intn, intm)

{

for (inti = 0; i <n; i++)

{

for (int j = 0; j <m; j++)

{

if (j % 4 == 0)cout<<endl;

cout<<setw(8) <<a[i][j];

}

}

}

voidvvodm(doublea[][5], intn, intm)

{

for (inti = 0; i <n; i++)

{

cout<<"\n Ввести "<< i <<" строку\n";

for (int j = 0; j <m; j++)

cin>>a[i][j];

}

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-03-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: