97007

Решение комплексных задач

Курсовая

Информатика, кибернетика и программирование

Лучшее качества компьютеров проявляются не тогда, когда они рассчитывают значения сложных выражений, а когда многократно, с незначительными изменениями, повторяют сравнительно простые операции. Даже очень простые расчеты могут поставить человека в тупик, если их надо повторить тысячи раз, а повторять операции миллионы раз человек совершенно не способен.

Русский

2015-10-13

613 KB

0 чел.

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Сибирский государственный технологический университет

Факультет автоматизации информационных технологий

Кафедра информационных технологий

Решение комплексных задач

 

Пояснительная записка

(СТ.000000.008 ПЗ)

Проверил:

_____________ Е.М. Товбис

     (подпись)

_________________________

                  (оценка, дата)

Выполнил студент группы 21-01

___________  Шинкарук О.А.

     (подпись)


СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Студент: Шинкарук Олег Анатольевич

Факультет: автоматизации и информационных технологий, 1 курс, гр. 21-01

Тема курсовой работы:  Решение комплексных задач

Провести исследование языка программирования С++. После исследования решить задачи согласно выданного варианта.


РЕФЕРАТ

Целью курсовой работы является исследование языка программирования С++. Пояснительная записка содержит 2 раздела. Содержит 21 страницу текста, 2 источника данных.

КЛЮЧЕВЫЕ СЛОВА:  АЛГОРИТМИЗАЦИЯ, ЦИКЛЫ, ПРОГРАММИРОВАНИЕ, УСЛОВИЯ,  С++.


Содержание

[1] Содержание

[2] Линейные алгоритмы.

[2.1] Задача 1

[2.2] 1. Вычислить выражения по предложенным формулам.

[3] Условный алгоритм, цикл

[3.1] Задача 2

[3.1.1] 1. Протабулировать кусочную функцию F на интервале Xs до Xf с шагом dx, где a,b,c ,Xs,Xf,dx –действительные числа.

[4] Массивы

[4.1] Задача 4

[4.1.1] 2. Упорядочить элементы массива по возрастанию.

[4.1.2] Код программы:

[4.2] Задача 4

[4.3] Двумерные массивы:

[5] СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


Линейные алгоритмы.

Линейный алгоритм описание действий, которые выполняются однократно в заданном порядке. Исполнитель выполняет действия последовательно, одно за другим в том порядке в котором они следуют.

Задача 1

1. Вычислить выражения по предложенным формулам.

Код программы:

#include <math.h>

#include "stdafx.h"

#include <iostream>

#include <conio.h>

void main()

{

float a,b,x,y;

printf("Enter a and b");

scanf("%e",&a);

  scanf("%e",&b);

x=sin(a)+cos(2*b-a)/cos(a)-sin(2*b-a)

y=1+sin(2*b)/cos(a)-sin(2*b-a);

printf("Answer x: %e",&x);

printf(" Answer y: %e",&y);

getch();

return 0;

}

Блок схема программы:


В данной задаче использовались следующие функции:

1.  printf().

Функция printf() является функцией стандартного вывода. С помощью этой функции можно вывести на экран монитора строку символов, число, значение переменной... 

Функция printf() имеет прототип в файле stdio.h

В случае успеха функция printf() возвращает число выведенных символов.

Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и спецификаторы формата, определяющие, как выводить аргументы.

Функция printf() это функция форматированного вывода. Это означает, что в параметрах функции необходимо указать формат данных, которые будут выводиться. Формат данных указывается спецификаторами формата. Спецификатор формата начинается с символа % за которым следует код формата.

Спецификаторы формата:

символ

%d

целое десятичное число

%i

целое десятичное число

%e

десятичное число в виде x.xx e+xx

%E

десятичное число в виде x.xx E+xx

%f

десятичное число с плавающей запятой xx.xxxx

%F

десятичное число с плавающей запятой xx.xxxx

%g

%f или %e, что короче

%G

%F или %E, что короче

%o

восьмеричное число

%s

строка символов

%u

беззнаковое десятичное число

%x

шестнадцатеричное число

%X

шестнадцатеричное число

%%

символ %

%p

указатель

%n

указатель

2. Функция scanf() - функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели.

Функция scanf() имеет следующий прототип в файле stdio.h

Функция возвращает число переменных которым было присвоено значение.

Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Спецификаторы формата начинаются с символа %.

Спецификаторы формата:

%c

чтение символа

%d

чтение десятичного целого

%i

чтение десятичного целого

%e

чтение числа типа float (плавающая запятая)

%h

чтение short int

%o

чтение восьмеричного числа

%s

чтение строки

%x

чтение шестнадцатеричного числа

%p

чтение указателя

%n

чтение указателя в увеличенном формате

3. Функция getch();  Прототип: conio.h

Функция getch() возвращает очередной символ, считанный с консоли, но не выводит этот символ на экран.

Условный алгоритм, цикл

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

Во многих случаях требуется, чтобы при одних условиях выполнялась одна последовательность действий, а при других – другая.

Разветвляющийся алгоритм - алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.

Эти предложения начинаются с проверки какого-либо условия: пошел дождь, прозвенел будильник, встретил Сашу… Далее в зависимости мы либо вылиняем какое-либо действие, либо не выполняем его (или выполняем какое-то другое действие).

Компьютер тоже в зависимости от какого-либо условия может выполнять или не выполнять те или иные действия. Алгоритм, в котором используется условие, получил название разветвляющегося, так как в зависимости от значения условия выбираются те или иные действия.

Циклический алгоритм:

Лучшее качества компьютеров проявляются не тогда, когда они рассчитывают значения сложных выражений, а когда многократно, с незначительными изменениями, повторяют сравнительно простые операции. Даже очень простые расчеты могут поставить человека в тупик, если их надо повторить тысячи раз, а повторять операции миллионы раз человек совершенно не способен.

Циклический алгоритм – описание действий, которые должны повторяться указанное число раз или пока не выполнено заданное условие.

Перечень повторяющихся действий называют телом цикла.

Циклические алгоритмы бывают двух типов:

Циклы со счетчиком, в которых какие-то действия выполняются определенное число раз;

Циклы с условием, в которых тело цикла выполняется, в зависимости от какого-либо условия. Различают циклы с предусловием и постусловием.

Циклы со счетчиком используют когда заранее известно какое число повторений тела цикла необходимо выполнить.

Часто бывает так, что необходимо повторить тело цикла, но заранее не известно, какое количество раз это надо сделать. В таких случаях количество повторений зависит от некоторого условия. Такие циклы называются циклы с условием. Циклы в которых сначала проверяется условие, а затем, возможно, выполняется тело цикла называют циклы с предусловием. Если условие проверяется после первого выполнения тела цикла, то циклы называются циклы с постусловием.

Задача 2

1. Протабулировать кусочную функцию F на интервале Xs до Xf с шагом dx, где a,b,c ,Xs,Xf,dx –действительные числа.

Код программы:

#include "stdafx.h"

#include <conio.h>

#include <math.h>

#include <iostream>

int _tmain(int argc, _TCHAR* argv[])

{float F,a,b,c,Xs,Xf,dX,x;

printf("Enter a b c Xs Xf dX \n");

scanf("%f%f%f%f%f%f",&a,&b,&c,&Xs,&Xf,&dX);

for(x=Xs; x<Xf; x+=dX)

{ if (a<0 && x!=0)

{

 F=a*(pow(x,2))+(b*x)+c;

 printf("Answer F: %f",F);

}

 else if(a>0 && x==0)

{

 F=(-a)/(x-c);

 printf(" Answer F: %f",F);

}

 else

{

 F=(x/c)-3;

 printf(" Answer F: %f",F);

 

}

}

getch();

 return 0;

}

Блок-схема программы:

В данной задаче использовались следующие функции:

  •  Условный оператор if

Для организации вычислений в зависимости от какого-либо условия в C++ предусмотрен условный оператор if, который в общем виде записывается следующим образом:

if (условие) оператор_1; else оператор_2;

Здесь условие - это логическое выражение, переменная или константа.

Работает условный оператор следующем образом. Сначала вычисляется значения выражения, записанного в виде условия. Если оно имеет значение истина (true), выполняется оператор_1. В противном случае (значение ложное (false) ) оператор_2. 

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

if (условие) { оператор_1;  оператор_2; … }

else { оператор_1; оператор_2; … }

Альтернативная ветвь else в условном операторе может отсутствовать, если в ней нет необходимости.

  •  Оператор цикла for:

Операторы цикла используются для организации многократно повторяющихся вычислений.

Любой цикл состоит из тела цикла, то есть тех операторов, которые выполняются несколько раз, начальных установок, блокамодификации параметра цикла и проверки условия выхода из цикла, которая может размещаться либо до тела цикла(тогда говорят о цикле с предусловием ), либо после тела цикла (цикл с постусловием ).

Один проход цикла называется итерацией. Переменные, принудительно изменяющиеся в цикле и использующиеся при проверке условия выхода из него, называются параметрами цикла. Целочисленные параметры цикла, изменяющиеся на целое число на каждойитерации, называются счетчиками цикла.

Нельзя передавать управление извне внутрь цикла. Выход из цикла возможен как при выполнении условия выхода, так и  по операторам break, return или безусловного перехода.

  •  Цикл с параметром (for)

Цикл с параметром имеет следующий формат:

for ( инициализация; выражение; модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой.

Выражение определяет условие выполнения цикла: если оно не равно 0 (истинно), цикл выполняется.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую.

Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!). В любой части можно использовать операцию "запятая" (последовательное вычисление).

Задача №3

«Вложенные циклы (вычисление суммы ряда)»

Вычислить и вывести на экран в виде таблицы значения функции заданной с помощью ряда Тейлора.

Код программы:

#include <math.h>

#include <iostream>

#include <stdio.h>

using namespace std;

int main()

{

const int MaxIter=10;

float x, eps;

cout<<" \n Vvedite argument i tochnost:";

cin>>x>>eps;

int flag= 1;

float y=x, ch=x;

for (int n=0; fabs(ch)>eps; n++)

{

ch*=x*x/(2*n+2);

y+=ch;

if (n>MaxIter)

{

cout <<"\n Ryad rashoditsya!";

flag = 0;

break;

}

}

if (flag)

cout<<"\n Znachenie fynkcii:"<<y;

getchar ();

return 0;

}

Массивы

Массив — упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив (колонка, столбец) нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Задача 4

Дан массив, состоящий из n вещественных элементов, вычислить:

  1.  Номер минимального  элемента массива:

Код программы:

#include <iostream>

using namespace std;

void main()

{

int a[100], p, r, nmin, min2, min, sum;

cout << "Введите количество элементов массива ";

 cin >> r;

 cout << "Заполните массив ";

 for (int i = 0; i < r; i++)

 {cin >> a[i];}  //Ишем номер минимального элемента

 nmin = 1;

min = a[0];

for (int i = 0; i < r; i++)

{if (min>a[i])

{min = a[i];

nmin = i + 1;}

}

cout << "\n Минимальный элемент =" << min << endl;

 cout << "Его номер =" << nmin <<"\n"<<endl;

 system("pause");

}

Блок-схема программы:

2. Произведение элементов массива расположенных между максимальным и минимальным элементами.

Код программы:

#include <iostream>

using namespace std;

void main()

{

setlocale(LC_ALL, ".1251");

int a[100], p, r, nmin, min2, min, sum;

cout << "Введите колличество элементов массива ";

 cin >> r;

 cout << "Заполняй массив давай! ";

//Заполняем массив

for (int i = 0; i < r; i++)

 {

 cin >> a[i];

}

//Поиск нулевых элементов

 min2 = 0;

 min = 0;

for (int i = 0; i < r; i++)

{

 if (a[i] == 0)

 {

  min = i;

  break;

 }

}

for (int i = r; i > 0; i--)

{

 if (a[i] == 0)

 {

  min2 = i;

  break;

 }

 }

}

//Ишем Сумму между нулевыми элементами

 if (min2 == min)

{cout << "\n Произведение между нулевыми элементами = Нулю!";}

 else

{

 sum = 1;

 for (int i = min+1; i <= min2-1; i++)

 {

  sum = sum * a[i];

 }

 cout << "\n Произведение между нулевыми элементами = " << sum << "\n";

 system("pause");

}

Блок схема программы:

2. Упорядочить элементы массива по возрастанию.

Код программы:

#include <iostream>

using namespace std;

void main()

{int a[100], p, r, nmin, min2, min, sum;

cout << "Введите колличество элементов массива ";

 cin >> r;

 cout << "Заполняй массив давай! ";

//Заполняем массив

for (int i = 0; i < r; i++)

 {cin >> a[i];}

//Сортируем по модулю не привышаюшие 1

 p = 0;

for (int i = r - 1; i >= 0; i--)

{for (int j = 0; j < i; j++)

{if (abs(a[j]) > 1)

{p = a[j];

a[j] = a[j + 1];

a[j + 1] = p;

p = 0;}} }

 cout << "\nСначало не превышающие один по модуля! Потом остальные! ";

for (int i = 0; i < r; i++)

{cout << " " << a[i]; }

cout << ("\n");

system("pause");

}

Блок-схема  программы:

В данной задаче использовались следующие функции:

Cin - это объект входного потока пространства имен std:

std::cin >> x;

В данном коде программы используется оператор cin, операция взятия из потока >>чтобы получить от пользователя введенное им значение. Объектstd::cin забирает вводимую пользователем информацию из стандартного потока ввода, который обычно является клавиатура. Функция Cinдостаточно интелектуальна, чтобы понять, какая информация введена с клавиатуры. Ведь мы можем ввести целое число, а также можем ввести дробное, сивмольное или текст.

Cout - это объект выходного потока пространства имен std::. Это необъявленный идентификатор. Его не нужно объявлять. Его нужно только подключать к программе при помощи слова include: #include <iostream>

std::cout <<"Выходной поток"; В данном коде программы используется оператор cout, операция поместить в поток<<, чтобы вывести на экран пользователю определенную информацию. В данном случае на экран выводится Выходной поток. cout достаточно умный, чтобы определить, что нужно вывести на экран, то есть это будет переменная дробного числа или целого или символьного.

Задача 4

Двумерные массивы:

Определить:

Характеристикой столбца целочисленной матрицы назовем сумму его отрицательных

нечетных элементов. Переставляя столбцы заданной матрицы расположить их в соответствии с

ростом характеристик.

Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент

Код программы:

#include <iostream>

using namespace std;

void main(){

int a[8][8] = { {  1,  2,  3,  4,  5,  6, },

                { -2, -2,  2,  0,  0, -6 },

                { -9,  2,  1,  2,  0,  9, },

                { -4,  0,  2,  3,  1,  5, },

                  {  5,  2,  3,  1,  5,  9, },

                {  6,  2,  3,  5, -3,  6, }};

cout << "Наша матрица_\n ";

for (int i = 0; i < 6; i++)

{ cout << "\n";

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

 {cout << a[i][j] << "\t ";

 }

}

 1)Характеристикой столбца целочисленной матрици назовём сумму модулей его отрицательных нечётных элементов

 cout << "\n";

int sum = 0;

int b[10];

for (int i = 0; i < 6; i++)

{ sum = 0;

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

 { if (a[j][i]<0)

  {sum = sum + a[j][i]; }

  if (j == 5)

  {b[i] = sum;}

 }

}

cout << "\n= ";

for (int i = 0; i < 6; i++)

{cout << b[i] << " \t"; }

cout << "\n ";

int c[10];

int p = 0;

for (int i = 0; i < 6; i++)

{for (int j = 0; j < 5; j++)

 {if (abs(b[j])> abs(b[j + 1]))

   {p = b[j];

   b[j] = b[j + 1];

   b[j + 1] = p;

   for (int x = 0; x < 6; x++)

   {c[x] = 0;}

   for (int x = 0; x < 6; x++)

   {c[x] = a[x][j];}

   for (int x = 0; x < 6; x++)

   {a[x][j] = a[x][j+1];}

   for (int x = 0; x < 6; x++)

   {a[x][j+1] = c[x];}

  }

 }

}

for (int i = 0; i < 6; i++)

{cout << "\n";

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

{cout << a[i][j] << "\t";}

}

cout << "\n\n= ";

for (int i = 0; i < 6; i++)

{cout << b[i] << " \t"; }

 2)Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

cout << "\nCумма элементов в тех Столбцах, ";

cout << "\nкоторые содержат хотя бы один отрицательный элемент= \n";

 for (int i = 0; i < 6; i++)

{for (int j = 0; j < 6; j++)

 { sum = 0;

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

  {for (int k = 0; k < 6; k++)

   {sum = sum + a[k][i]; }

   cout << "Cтолбца " << i +1 << " = " << sum << endl;

   break;}}}

cout << "\n";

system("pause");

 return;

}

Функции

Функция - это модуль в с++. Функции в языке си позволяют создавать модульные программы, то есть программы состоящие из модулей. Для написания программ, лучше использовать готовые стандартные функции библиотеки c++. Если же вы хотите в программе использовать свою функцию, то необходимо объявить прототип функции, после этого в конце программы написать реализацию функции.

Функция может принимать значения или не принимать вообще. Если функция не принимает параметры, то пишется имя функции и пустые скобки, если функция принимает параметры, то в скобках через запятую пишутся параметры. Функция может принимать параметры такие, как: массив, указатель, ссылку, целочисленные переменные, дробные и т. д.

Задача №5

Даны действительные числа s,t. Получить h(s,t)+max(h*h(s-t,s*t),h*h*h*h(s-t,s+t))+h(1,1), где 

#include<iostream>

#include<conio.h>

#include<math.h>

using namespace std;

double h(double a, double b) {

return (a/(1+b*b))+(b/(1+a*a))-pow((a-b),3);

}

double max (double a, double b) {

if (a > b) return a;

return b;

}

void main () {

double s,t;

cout << "Enter s, t" << endl;

cin >> s >> t;

cout << endl << "h(s,t)= " << h(s,t) + max(pow(h(s-t,s*t), 2), pow(h(s-t, s+t),4)) + h(1,1);

getch();

}

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1.  О FreeBSD [Электронный ресурс] – режим доступа: http://www.freebsd.org/ru/about.html
  2.  FreeBSD vs Linux [Электронный ресурс] – режим доступа:http://www.freebsd.org/doc/ru/articles/explaining-bsd/compairing-bsd-and-linux.html
  3.  Arch Compared to Other Distributions [Электронный ресурс] – режим доступа: https://wiki.archlinux.org/index.php/Arch_Compared_to_Other_Distributions_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)


 

А также другие работы, которые могут Вас заинтересовать

47865. Інформаційні системи та технології в торгівлі 623.5 KB
  Між керуючою системою і керованою системою здійснюється взаємозв'язок через інформаційну систему під якою розуміють комунікаційну систему із збору передачі переробки інформації про об'єкт яка постачає працівникам різного рангу інформацію для реалізації функції управління. Друга відмінність полягає у формі передавання інформації. Для АСУТП основною формою передавання інформації є сигнали в АСОУ документи. Роль та місце АСДС в ієрархії управління визначається тим що вона є основним джерелом статистичної інформації конче потрібної для...
47866. Організаційна структура та бюджетні повноваження Державного казначейства України. Функції Державного казначейства України 72 KB
  Саме останні дають нам можливість оцінити якість дії Державного казначейства а також його завдання та обовязки які повязані з його діяльністю. Більше того через функції визначається сутність та основна мета діяльності певного об'єкта в нашому випадку Державного казначейства. На Державне казначейство в Україні покладено виконання таких функцій: здійснення касового виконання державного бюджету та бюджетів самоврядування за доходами та видатками; здійснення контролю за цільовим спрямуванням бюджетних коштів на стадії проведення...
47867. Предмет і метод політичної економіки 1.86 MB
  Сукупність економічних відносин між людьми у сфері виробництва розподілу обміну і споживання продукції що утворюють певну економічну систему. Юм Фізіократи 1718 ст питання походження багатства перенесено із сфери обігу в сферу виробництва. Основні риси виробництва Стадії суспільного виробництва Основні елементи процесу виробництва Праця –це свідома доцільна діяльність людини яка спрямована на створення тих чи інших благ з метою задоволення потреб.
47868. Проектний аналіз 1.67 MB
  Він дає інформаційну базу у вигляді проекту як спеціально оформленого інвестиційного плану чи результатів проведеної експертизи проекту для ухвалення рішення щодо включення проекту в інвестиційний портфель підприємства початку його інвестування постійного моніторингу реалізації. Аналіз інвестиційних проектів – це комплекс методичних та практичних прийомів розробки обґрунтування й оцінки доцільності реалізації проекту. Більшість проектів що виявилися збитковими могла бути не допущена до реалізації за умови якісного попереднього аналізу з...
47869. Міжнародна економіка. Конспект лекцій 905.5 KB
  Конспект лекцій містить зміст лекційного курсу, завдання до самостійного вивчення теоретичного матеріалу курсу, що вивчається в позааудиторний час, список рекомендованої літератури і ресурсів Інтернет, ілюстративний матеріал до лекцій
47870. Многочлени. Властивості многочленів 5.51 MB
  Ділення многочлена на лінійний двочлен. Розклад многочлена за степенями лінійного двочлена. Означення многочлена Вираз виду: Повністю визначається коефіцієнтами. Многочленомполіномомвід однієї змінної над областю цілісності К називається вираз виду 3 де довільне ціле невід’ємне число елементи К а деякі символи; називається степенем змінної або невідомого а м коефіцієнтом многочлена 3 або коефіцієнтом при .
47871. Основи геометрії 63.5 KB
  Історичний нарис обґрунтування геометрії Предмет основ геометрії. Відкриття неевклідової геометрії.
47872. Основи державного регулювання економіки 303 KB
  Об’єктивна необхідність і теоретичні основи державного регулювання економіки. Моделі державного регулювання економіки в зарубіжних країнах. Таким чином метою державного регулювання економіки є досягнення ефективного поступального та стабільного економічного соціального наукового розвитку України.
47873. МЕТОДИ НАВЧАННЯ 393.5 KB
  Методи цієї групи насамперед характеризують логіку руху змісту навчального матеріалу – від конкретного до загального, від загального до конкретного, за аналогією. Залежно від того, як логічно побудований зміст, виділяють індуктивний, дедуктивний, традуктивний, аналітичний і синтетичний методи навчання