- •Лабораторный практикум основы программирования
- •Содержание
- •Предисловие
- •Лабораторная работа №1. Интегрированная среда разработки Microsoft Visual Studio. Программирование алгоритмов линейной структуры
- •1. Формулировка индивидуального задания:
- •2. Листинг программы:
- •3. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •2.4. Результаты работы программы:
- •3. Индивидуальное задание №3:
- •3.1. Постановка задачи:
- •3.3. Листинг программы:
- •3.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •3. Табуляция функции:
- •3.1. Постановка задачи:
- •3.3. Листинг программы:
- •3.4. Результаты работы программы:
- •4. Индивидуальное задание №3:
- •4.1. Постановка задачи:
- •4.3. Листинг программы:
- •4.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •2.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •1. Присваивание указателю адреса существующего объекта:
- •2. Присваивание указателю адреса области памяти в явном виде:
- •3.Присваивание пустого значения:
- •4. Выделение участка динамической памяти и присваивание ее адреса указателю:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •I. Исходные данные, результаты и промежуточные величины.
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •2. Индивидуальное задание №2:
- •2.1. Постановка задачи:
- •2.3. Листинг программы:
- •2.4. Результаты работы программы:
- •3. Индивидуальное задание №3:
- •3.1. Постановка задачи:
- •3.2. Листинг программы:
- •4. Индивидуальное задание №4:
- •4.1. Постановка задачи:
- •4.4. Листинг программы:
- •4.5. Результаты работы программы:
- •I. Исходные данные и результаты
- •II. Алгоритм решения задачи
- •III. Программа и тестовые примеры
- •I. Исходные данные и результаты
- •II. Алгоритм решения задачи
- •III. Программа и тестовые примеры
- •I. Исходные данные и результаты
- •III. Программа и тестовые примеры
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •1.4. Результаты работы программы:
- •I. Исходные данные, результаты и промежуточные величины
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •2.4. Результаты работы программы:
- •Список рекомендуемой литературы
1. Индивидуальное задание №1:
1.1. Постановка задачи:
Выполнить задание, оформив каждый пункт в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
Задача: построить результат сглаживания заданной вещественной матрицы размером 10 на 10. В сглаженной матрице найти сумму модулей элементов, расположенных выше главной диагонали. Ввод и вовод данных в программе осуществить с помощью файла.
Примечание. Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.
1.2. UML-диаграмма:
1.3. Листинг программы:
// Лабораторная работа №7
// Индивидуальное задание №1
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int sort_array(int ncol, int nrow);
int sort_array(int ncol, int nrow)
{
ifstream fin("input.txt",ios::in);
if (!fin)
{
cout << "Can't find input.txt" << endl;
return 1;
}
ofstream fout("output.txt");
if (!fout)
{
cout << "Write falure: check permission" <<endl;
return 1;
}
int k, l, k1, l1, counter, i, j;
double sum,sumdiag = 0;
double a[nrow][ncol];
cout << "Чтение данных из файла..." << endl;
for(i = 0; i < nrow; i++)
for(j = 0; j < ncol; j++)
fin >> a[i][j];
cout << "Обработка данных..." << endl;
counter = 0;sum = 0; l = 0; l1 = 0;
double m[nrow][ncol];
//calculate neighbour' sum & sum diagonalies
for(i = 0; i < nrow; i++)
for(j = 0; j < ncol; j++)
{
k = i -1;
k1 = i + 1;
if (k<0) k++;
if (k1 > nco l- 1) k1--;
if ((j <= ncol - 1)&&(j >= ncol - i)) sumdiag = sumdiag+a[i][j];
for(k; k <= k1; k++)
{
l = j - 1;
l1 = j + 1;
if (l < 0) l++;
if (l1 > ncol - 1) l1--;
for(l; l <= l1; l++)
if ((k == i) && (l == j)) continue;
else
{
sum = sum + a[k][l];
counter++;
}
}
m[i][j] = (float) sum/counter;
sum = 0;
counter = 0;
}
for(i = 0; i < nrow; i++)
{
for(j = 0; j < ncol; j++)
fout << setw(5) << left << setprecision(3) << m[i][j] <<" " << endl;
}
fout << endl;
fout << "Сумма эл-ов ниже главной диагонали: " << setw(5) << setprecision(9) << sumdiag << endl;
return 0;
}
int main()
{
const int nrow = 10;
const int ncol = 10;
if (!sort_array(ncol,nrow))
{
cout<<"Запись результатов обработки в файл..."<<endl;
cout<<"Обработка успешно закончена!"<<endl;
return 0;
}
else
{
cout<<"Ошибка обработки данных!"<<endl;
return 1;
}
}
1.4. Результаты работы программы:
Рисунок 7.1 – Файл для входных данных
Рисунок 7.2 – Файл для выходных данных
Рисунок 7.3 – Вывод программы на экран
2. Индивидуальное задание №2:
2.1. Постановка задачи:
Выполнить задания согласно варианта индивидуального задания №1 лабораторной работы №7, оформив в виде функций законченные последовательности действий. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
2.2. UML-диаграмма: