Никитина Д.С. Отчет по лабораторным работам
.docxНациональный исследовательский университет «МИЭТ»
Факультет дистанционного обучения
Направление: «Программная инженерия»
«Практикум по программированию на С»
Отчёт по лабораторным работам
Выполнил: Никитина Д.С.
08.10.2019 г.
Лабораторная работа №1
Знакомство со средой разработки программ MS Visual Studio 2015.
Программирование линейных алгоритмов
Задание:
Код программы:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int a, b, c;
cout << "Программа вычисления площади треугольника по длинам сторон a,b,c"<< endl;
cout << endl << "Введите сторону a:" << endl;
cin >> a;
cout << endl << "Введите сторону b:" << endl;
cin >> b;
cout << endl << "Введите сторону c:" << endl;
cin >> c;
float p, s;
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));
cout << endl << "Площадь треугольника равна: " << s << endl;
return 0;
}
Скриншот выполнения программы:
Лабораторная работа №2
Программирование ветвящихся алгоритмов
Задание 1:
Код программы:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
float x, y;
cout << "Введите значение х:" << endl;
cin >> x;
if (x > 14.5)
{
y = 1 + x;
cout << endl << "y = 1 + x = " << y << endl;
}
else
if (x < 3)
{
y = cos(x);
cout << endl << "y = cos(x) = " << y << endl;
}
else
{
y = exp(-x);
cout << endl << "y = exp(-x) = " << y << endl;
}
return 0;
}
Скриншот выполнения программы:
Задание 2:
Код программы:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
char x;
cout << "Введите символ для проверки на принадлежность к арифметическим операциям:" << endl;
cin >> x;
if ((x == '+') || (x == '-') || (x == '/') || (x == '*') || (x == '%'))
cout << "Данный символ является арифметическим действием" << endl;
else
cout << "Данный символ НЕ является арифметическим действием" << endl;
return 0;
}
Скриншот выполнения программы:
Лабораторная работа №3
Программирование циклических алгоритмов
Задание 1:
Код программы:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
double x = 1, a = 2.5, d, w;
d = 1.0 / 10.0;
cout << "Множество значений функции:" << endl << "W = {";
while (x < a)
{
w = exp(-a * x) * cos(a * x);
cout << w << ", " << endl;
x += d;
}
w = x * sin(a * x);
cout << w;
x += d;
do
{
w = x * x * x * sqrt(x - a);
cout << ", " << endl << w;
x += d;
} while (x < 5);
cout << "}";
return 0;
}
Скриншот выполнения программы:
Задание 2:
Код программы:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите последовательность чисел. Признак окончания ввода - '10':" << endl;
float x;
int k = 0;
cin >> x;
while (x != 10)
{
if (x > 0)
k++;
cin >> x;
}
cout << endl << "Количество положительных чисел: " << k;
return 0;
}
Скриншот выполнения программы:
Лабораторная работа №4
Программирование задач с использованием одномерных массивов
Задание:
Код программы:
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int const l = 30;
int x[l];
srand((unsigned)time(NULL));
cout << "Случайный массив:" << endl;
for (int i = 0; i < l; i++) //формируем рандомный массив
{
x[i] = rand() / 100 - 100;
cout << x[i] << ' ';
}
float sum = 0;
for (int i = 0; i < l; i++)
if (sin(x[i]) < 0)
sum += sin(x[i]);
cout << endl << "Сумма отрицательных элементов последовательности синусов: " << sum;
return 0;
}
Скриншот выполнения программы:
Лабораторная работа №5
Программирование задач с использованием матриц
Задание:
Код программы:
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int m, n;
cout << "Введите кол-во строк в матрице (не больше 10):" << endl;
cin >> m;
cout << "Введите кол-во столбцов в матрице (не больше 10):" << endl;
cin >> n;
int i, x[10][10];
for (i = 0; i < m; i++)
for (int j = 0; j < n; j++)
x[i][j] = rand() / 100 - 100;
cout << "Случайный массив:" << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
cout << setw(5) << x[i][j];
cout << endl;
}
int imax = 0;
i = 0;
while (i < n && i < m)
{
if (x[i][i] > x[imax][imax])
imax = i;
i++;
}
cout << endl << "Наибольший элемент на главной диагонали:" << endl << "x[" << imax << "][" << imax << "]= " << x[imax][imax] << endl;
int imin = 0, leght;
if (n < m)
leght = n-1;
else
leght = m-1;
i = 0;
while (i <= leght)
{
if (x[leght - i][i] < x[leght - imin][imin])
imin = i;
i++;
}
cout << endl << "Наименьший элемент на побочной диагонали:" << endl << "x[" << leght-imin << "][" << imin << "]= " << x[leght - imin][imin] << endl;
return 0;
}
Скриншот выполнения программы:
Лабораторная работа №6
Программирование задач с использованием функций
Задание:
Код программы:
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
double** RezervMatr(int n)
{
double** a = new double* [n];
for (int i = 0; i < n; i++)
a[i] = new double[n];
return a;
}
void DeleteMatr(double** a, int n)
{
for (int i = 0; i < n; i++)
delete[] a[i];
delete a;
}
void RandMatr(double** a, int n)
{
for (int i = 0; i < n; i++)
for(int j=0;j<n;j++)
a[i][j] = (double)(rand() / 100 - 100)/(double)10;
}
void OutputMass(double* a, int n)
{
for (int i = 0; i < n; i++)
cout << setw(6) << setprecision(1) << fixed << a[i];
cout << endl << endl;
}
void OutputMatr(double** a, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << setw(6)<< setprecision(1) << fixed << a[i][j];
cout << endl;
}
cout << endl;
}
void MainDiagonal(double** a, double* x, int n)
{
for (int i = 0; i < n; i++)
x[i] = a[i][i];
}
void main()
{
setlocale(LC_ALL, "Russian");
int const n = 4;
double** A = RezervMatr(n);
RandMatr(A, n);
cout << "Матрица А:" << endl;
OutputMatr(A, n);
double X[n];
MainDiagonal(A, X, n);
cout << "Массив Х (главная диагональ матрицы А):" << endl;
OutputMass(X, n);
double** B = RezervMatr(n);
RandMatr(B, n);
cout << "Матрица B:" << endl;
OutputMatr(B, n);
double Y[n];
MainDiagonal(B, Y, n);
cout << "Массив Y (главная диагональ матрицы B):" << endl;
OutputMass(Y, n);
DeleteMatr(A, n);
DeleteMatr(B, n);
}
Скриншот выполнения программы:
Лабораторная работа №7
Программирование задач с использованием структур
Задание:
Код программы:
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
struct Shoes
{
char art[8];
char name[12];
int sum;
int price;
};
void OutputShoes(Shoes a[], int n)
{
cout << setw(9) << "Артикул" << "|" << setw(13) << "Наименование" << "|" << setw(7) << "Кол-во" << "|" << setw(6) << "Цена" << "|" << endl;
for (int i = 0; i < n; i++)
{
cout << "______________________________________" << endl;
cout << setw(9) << a[i].art << "|" << setw(13) << a[i].name << "|" << setw(7) << a[i].sum << "|" << setw(6) << a[i].price << "|" << endl;
}
}
void OutputWoman(Shoes a[], int n)
{
cout << setw(9) << "Артикул" << "|" << setw(13) << "Наименование" << "|" << setw(7) << "Кол-во" << "|" << setw(6) << "Цена" << "|" << endl;
for (int i = 0; i < n; i++)
{
if (a[i].art[0] == 'Д')
{
cout << "______________________________________" << endl;
cout << setw(9) << a[i].art << "|" << setw(13) << a[i].name << "|" << setw(7) << a[i].sum << "|" << setw(6) << a[i].price << "|" << endl;
}
}
}
void SortShoes(Shoes a[], int n)
{
Shoes Max;
int nmax;
for (int i = 0; i < n; i++)
{
Max = a[i];
nmax = i;
for (int j = i; j < n; j++)
{
if (a[j].price > a[nmax].price)
{
Max = a[j];
nmax = j;
}
}
a[nmax] = a[i];
a[i] = Max;
}
}
void main()
{
setlocale(LC_ALL, "Russian");
int const n = 12;
Shoes a[n] =
{
"Д456","ghji88yd",19,4999,
"М789","ertwertf",12,5999,
"П123","erwefsw",35,6999,
"Д741","erdgvsdgf",5,14999,
"М852","eftwfc",95,8999,
"П963","efrwefas",46,999,
"Д159","efesfwe",23,1999,
"М753","efwefwe",71,2999,
"П167","effcdfwe",96,3999,
"Д349","yjtygb",6,7999,
"М759","rgergdesr",58,9999,
"М153","rgdergr",16,12999,
};
cout << "Ассортимент магазина обуви:" << endl << endl;
OutputShoes(a, n);
cout << endl << "Ассортимент магазина обуви в порядке убывания цены:" << endl << endl;
SortShoes(a, n);
OutputShoes(a, n);
cout << endl << "Женский ассортимент магазина обуви:" << endl << endl;
OutputWoman(a, n);
}
Скриншот выполнения программы: