
ИТиУвТС / Оаип 1 курс 1 семестр
.docЛАБОРАТОРНАЯ РАБОТА №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;
};
Скриншот работы программы:
Вывод: Научился создавать функции, обрабатывать параметры, которые эти функции принимают, а также возвращать значение. Выполнил индивидуальное задание.