Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИТиУвТС / Оаип 1 курс 1 семестр

.doc
Скачиваний:
173
Добавлен:
01.04.2014
Размер:
125.44 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА №1

Тема: Среда программирования VISUAL C++. Программирование линейных алгоритмов.

Цель: Сформировать умения построения линейных алгоритмов и их практического применения.

Индивидуальное задание: Написать программу вычисления значения выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом.

Выражение:

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

#include <math.h>

#include <iostream.h>

int main()

{

double x,y,z,s;

cout << "x=";

cin >> x;

cout << endl <<"y=";

cin >> y;

cout << endl <<"z=";

cin >> z;

s=(2*cos(x-2./3.))/(1./2.+pow(sin(y),2))*(1+pow(z,2)/(3-pow(z,2)/5.));

cout<<endl<<"s="<<s<<endl;

return 0;

};

Скриншот работы программы:

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

ЛАБОРАТОРНАЯ РАБОТА №2

Тема: Программирование разветвляющихся алгоритмов.

Цель: Сформировать умения построения разветвляющихся алгоритмов и их практического применения.

Индивидуальное задание: Составить программу вычисления выражения, указанного ниже. Предусмотреть вывод информации о выбранной ветви вычислений.

Выражение:

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

#include <math.h>

#include <iostream.h>

int main()

{

double x,y,s;

cout << "x=";

cin >> x;

cout << endl <<"y=";

cin >> y;

if (x*y>0)

{

s=pow(x+y,2)-pow(fabs(x),1./3.);

cout<<endl<<"xy>0";

}

else if (x*y<0)

{

s=pow(x+y,2)+sin(x);

cout<<endl<<"xy<0";

}

else

{

s=pow(x+y,2)+pow(y,3);

cout<<endl<<"xy=0";

}

cout<<endl<<"s="<<s<<endl;

return 0;

};

Скриншот работы программы:

Вывод: Развил навыки составления разветвляющихся алгоритмов, а также практически применил умения при выполнении лабораторной работы.

ЛАБОРАТОРНАЯ РАБОТА №3

Тема: Программирование циклических алгоритмов.

Цель: Научиться применять циклы при построении алгоритмов.

Индивидуальное задание: Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1.

#include <math.h>

#include <iostream.h>

int main()

{

double x,y,a,b;

a=0.1;

b=1.2;

y=0;

for (x=a;x<=b;x+=0.1)

{

y=0;

for (int n=1;n<=20;n++)

{

y+= (pow(x,n-1))/(2*n+1);

}

cout<<"x="<<x<<'\t'<<"sum(y)="<<y<<endl;

}

return 0;

};

Скриншот работы программы:

Вывод: Сформировал умения и навыки работы с циклическими алгоритмами, выполнил индивидуальное задание.

ЛАБОРАТОРНАЯ РАБОТА №4

Тема: Программирование с использованием одномерных массивов.

Цель: Сформировать умения и навыки работы с одномерными массивами.

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

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

#include <math.h>

#include <iostream.h>

int main()

{

int k,j;

cout<<"size ";

cin>>k;

double mas[10];

double a[10];

j=0;

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

{

cout<<endl<<"mas["<<i+1<<"]=";

cin>>mas[i];

if (mas[i]<0)

{

a[j]=mas[i];

j++;

}

}

cout<<endl<<"isxodnij massiv: "<<'\t';

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

{

cout<<mas[i]<<'\t';

}

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

{

if (mas[i]>=0)

{

a[j]=mas[i];

j++;

}

}

cout<<endl<<"otsortirovannij massiv: ";

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

{

cout<<a[i]<<'\t';

}

cin>>k;

return 0;

};

Скриншот работы программы:

Вывод: Развил умения составления программ с использованием одномерных массивов.

ЛАБОРАТОРНАЯ РАБОТА №5

Тема: Указатели. Программирование с использованием динамических двумерных массивов.

Цель: Сформировать умения и навыки работы с динамической памятью.

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

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

#include <iostream.h>  #include <iomanip.h>  #include <math.h>  int main() {  double **a, kol; int i, j, n;  cout << "Vvedite razmernost" << endl;  cin >> n;  a = new double*[n]; // Выделение памяти под массив указателей  for(i=0; i<n; i++) // Выделение памяти под соответствующие  a[i] = new double[n]; // этим указателям строки матрицы  for (i=0; i<n; i++) // Ввод двумерного массива  { for (j=0; j<n; j++)  {  cout << "Vvedite a[" << i+1 << "][" << j+1 << "]: " ;  cin >> a[i][j];  } } kol=0; for (i=1; i<n; i++) for (j=n-i; j<n; j++)  {  if (a[j][i]<0) // поиск отрицательных элементов ниже побочной диагонали { kol++;  } } cout << "Massiv A:" << endl; // Вывод двумерного массива  for (i=0; i<n; i++)  {  for (j=0; j<n; j++)  cout << setw (9) << a[i][j] << " ";  cout << endl;  }  cout << "Result :" << endl; // Вывод результата cout << "kolichestvo otritsatelnih elementov nizhe pobochnoj diagonali ravno: "<<kol<<endl;  for(i=0; i<n; i++) // Освобождение выделенной памяти  delete [] a[i];  delete []a; a = NULL;  kol = NULL; cin>>i; return 0;  }

Скриншот работы программы:

Вывод: Научился работать с динамической памятью на примере выполнения индивидуального задания.

ЛАБОРАТОРНАЯ РАБОТА №8

Тема: Программирование с использованием функций.

Цель: Сформировать навыки работы с функциями, а также понять принцип их организации.

Индивидуальное задание: Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1.

Вычисление y(x) оформить в виде функции.

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

#include <math.h>

#include <iostream.h>

double func(double);

int main()

{

for (double x=0.1;x<=1.2;x+=0.1)

{

cout<<"x="<<x<<'\t'<<"sum(y)="<<func(x)<<endl;

}

return 0;

};

double func(double xx)

{

double y=0;

for (int n=1;n<=20;n++)

{

y+= (pow(xx,n-1))/(2*n+1);

}

return y;

};

Скриншот работы программы:

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