- •Лабораторный практикум основы программирования
- •Содержание
- •Предисловие
- •Лабораторная работа №1. Интегрированная среда разработки Microsoft Visual Studio. Программирование алгоритмов линейной структуры
- •1. Формулировка индивидуального задания:
- •2. Листинг программы:
- •3. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •3.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.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. Листинг программы:
- •2.4. Результаты работы программы:
- •1. Индивидуальное задание №1:
- •1.1. Постановка задачи:
- •1.3. Листинг программы:
- •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. Постановка задачи:
Составить программу с использованием двумерных локальных массивов для решения задачи. Размерности локальных массивов задавать именованными константами, значения элементов массива - в списке инициализации.
Задача: дана целочисленная прямоугольная матрица. Определить:
сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
номера строк и столбцов всех седловых точек матрицы.
Примечание. Матрица А имеет седловую точку As, если As является минимальным элементом в i-й строке и максимальным в j-м столбце.
1.2. UML-диаграмма:
1.3. Листинг программы:
// Лабораторная работа №6
// Индивидуальное задание №1
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "math.h"
#include "windows.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale( LC_ALL, "Russian" );
const int nrow = 3, ncol = 5;
int A[nrow][ncol];
int i, j, summ;
cout<<"Лабораторная работа № 6\n"
<<"\nГорошко А.А., БАС-051\n"
<<"\nВариант № 6\n"
<<"\n\nИндивидуальное задание № 1:\n"
<<"\nСоставить программу с использованием двумерных локальных массивов для\n"
<<"\nрешения задачи. Размерности локальных массивов задавать именованными\n"
<<"\nконстантами, значения элементов массива - в списке инициализации.\n"
<<"\n\nЗадача: дана целочисленная прямоугольная матрица. Определить:\n"
<<"сумму элементов в тех строках, которые содержат хотя бы один\n"
<<"\nотрицательный элемент;\n"
<<"\n2) номера строк и столбцов всех седловых точек матрицы.\n"
<<"\n\nПримечание: матрица А имеет седловую точку As, если Аs является\n"
<<"\nминимальным элементом в i-й строке и максимальным в j-м столбце.\n"
<<"\n\nРабота программы:\n"
<<"\nВведите элементы массива: \n\n";
for (i = 0; i < nrow; i++)
{
for (j = 0; j < ncol; j++)
{
cout << "A[" << i << "][" << j << "] = ";
cin >> A[i][j];
}
}
cout << "\n1) ";
for (i = 0; i < nrow; i++)
{
bool flag = false;
summ = 0;
for (j = 0; j < ncol; j++)
{
summ += A[i][j];
if(A[i][j] < 0)
flag = true;
}
if(flag == true)
{
cout<<"Сумма элементов строки "<< i;
cout<<" с отрицательным элементом"<< " = " << summ << "\n\n";
}
}
cout<<"\n2) ";
for (i = 0; i < nrow; i++)
{
int min, max;
int tempValue; // временная переменная
min = 0;
tempValue = A[i][0];
// поиск минимального в строке элемента
for (j = 0; j < ncol; j++)
{
if(A[i][j] < tempValue)
{
min = j;
tempValue = A[i][j];
}
}
// поиск максимального в столбце элемента
max = 0;
tempValue = A[0][min];
for(j = 0; j < nrow; j++)
{
if(A[j][min] > tempValue)
{
max = j;
tempValue = A[j][min];
}
}
if(i == max)
{
cout<<"Седловая точка: "<< "As[" << max << "][" << min << "]";
}
}
getch();
return 0;
}
1.4. Результаты работы программы:
2. Индивидуальное задание №2:
2.1. Постановка задачи:
Составить программу с использованием двумерных динамических массивов для решения задачи индивидуального задания №1.
2.2. UML-диаграмма:
2.3. Листинг программы:
// Лабораторная работа №6
// Индивидуальное задание №2
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "math.h"
#include "windows.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale( LC_ALL, "Russian" );
int nrow, ncol, i, j, summ;
cout<<"Лабораторная работа № 6\n";
cout<<"\nГорошко А.А., БАС-051\n";
cout<<"\nВариант № 6\n";
cout<<"\n\nИндивидуальное задание № 2:\n";
cout<<"\nСоставить программу с использованием двумерных динамических\n";
cout<<"\nмассивов для решения задачи индивидуального задания №1.\n";
cout<<"\n\nРабота программы:\n";
cout<<"\nВведите количество строк и столбцов:\n\n"<< "i = " ;
cin >> nrow;
cout<< "j = ";
cin >> ncol;
int **A = new int *[nrow];
cout<<"\nВведите элементы массива: \n\n";
for (i = 0; i < nrow; i++)
{
A[i] = new int[ncol];
for (j = 0; j < ncol; j++)
{
cout << "A[" << i << "][" << j << "] = ";
cin >> A[i][j];
}
}
cout<<"\n1) ";
for (i = 0; i < nrow; i++)
{
bool flag = false;
summ = 0;
for (j = 0; j < ncol; j++)
{
summ += A[i][j];
if(A[i][j] < 0)
flag = true;
}
if(flag == true)
{
cout<<"Сумма элементов строки "<< i;
cout<<" с отрицательным элементом"<< " = " << summ << "\n\n";
}
}
cout<<"\n2) ";
for (i = 0; i < nrow; i++)
{
int min, max;
int tempValue; // временная переменная
min = 0;
tempValue = A[i][0];
// поиск минимального в строке элемента
for (j = 0; j < ncol; j++)
{
if(A[i][j] < tempValue)
{
min = j;
tempValue = A[i][j];
}
}
// поиск максимального в столбце элемента
max = 0;
tempValue = A[0][min];
for(j = 0; j < nrow; j++)
{
if(A[j][min] > tempValue)
{
max = j;
tempValue = A[j][min];
}
}
if(i == max)
{
cout<<"Седловая точка: "<< "As[" << max << "][" << min << "]";
}
}
getch();
return 0;
}