- •Лабораторный практикум основы программирования
- •Содержание
- •Предисловие
- •Лабораторная работа №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. Постановка задачи:
Составить программу с использованием динамических массивов для решения задачи.
Задача: составить программу, выдающую индексы заданного элемента или сообщающую, что такого элемента в массиве нет.
1.2. UML-диаграмма:
1.3. Листинг программы:
// Лабораторная работа №5
// Индивидуальное задание №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 N = 1000;
int n, i, a;
float *C = new float[N];
bool flag = false;
cout<<"Лабораторная работа № 5\n";
cout<<"\nГорошко А.А., БАС-051\n";
cout<<"\nВариант № 6\n";
cout<<"\n\nИндивидуальное задание № 1:\n";
cout<<"\nСоставить программу с использованием динамических\n";
cout<<"\nмассивов для решения задачи.\n";
cout<<"\n\nЗадача: составить программу, выдающую индексы заданного элемента\n";
cout<<"\nили сообщающую, что такого элемента в массиве нет.\n";
cout<<"\n\nРабота программы:\n";
A:
cout<<"\nВведите количество элементов: ";
cin >> n;
if(n <= 0 || n > N)
{
cout<<"\nНеверный размер массива!"<< "\n";
goto A;
}
cout<<"\nВведите элементы массива: \n\n";
for(i = 0; i < n; i++) cin >> C[i];
if(false)
{
B:
cout<<"\nТакого элемента в массиве нет!"<< "\n";
}
cout<<"\nВведите элемент массива, индексы которого хотите узнать: ";
cin >> a;
for(i = 0; i < n; i++)
{
if (C[i] == a)
{
cout<<"\nИндекс заданного элемента: ";
cout << "[" << i << "]" << "\n";
flag = true;
}
else if((i+1) == n && flag == false)
goto B;
}
delete[] C;
getch();
return 0;
}
1.4. Результаты работы программы:
2. Индивидуальное задание №2:
2.1. Постановка задачи:
Составить программу с использованием динамических массивов для решения задачи на переупорядочивание элементов массива. В качестве алгоритма сортировки использовать метод быстрой сортировки массива. В одномерном массиве, состоящем из n вещественных элементов, вычислить:
максимальный по модулю элемент массива;
сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
2.2. UML-диаграмма:
2.3. Листинг программы:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <tchar.h>
using namespace std;
int sortirovka(float array[],int numberel)
{
int j=0;
float sum=0;
cout<<endl;
/********Алгоритм быстрой сортировки*******/
float middle,temp;
int *stackl=new int [numberel], *stackr=new int [numberel];
int sp,i,left,right;
sp=1;
stackl[1]=0; stackr[1]=numberel-1;
while(sp>0)
{
left=stackl[sp];
right=stackr[sp];
sp--;
while(left<right)
{
i=left;j=right;
middle=array[(left+right)/2];
while(i<j)
{
while(array[i]<middle) i++;
while(middle<array[j]) j--;
if (i<=j)
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
i++;j--;
}
}
if (i<right)
{
sp++;
stackl[sp]=i;
stackr[sp]=right;
}
right=j;
}
}
cout <<"Результат быстрой сортировки: "<<endl;
for(i=0;i<numberel;i++) cout << array[i]<<" ";
cout<<endl;
delete [] stackl;
delete [] stackr;
/*******Сумма первых неотрицательных чисел******/
sum=0;
for(int i=0;i<numberel;++i)
{
if (array[i]>0)
{
while (array[i]>0 && i<numberel)
{
sum+=array[i];
++i;
}
break;
}
}
cout<<"Сумма первых неотрицательных чисел = "<<sum<<endl;
j=0;
cout<<endl;
for(int i=0;i<numberel;++i)
if (array[i]!=0) {array[j]=array[i]; ++j;}
for(int i=j;i<numberel;++i)
array[i]=0;
/*********Массив с нулями в конце************/
cout<<"Массив с нулями в конце: "<<endl;
cout<<endl;
for(int i=0;i<numberel;++i)
{
cout<<array[i]<<"\t";
}
cout<<endl;
delete [] array;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int metod=0;
int n=13,max,j=0;
cout<<"Способ заполнения массива: "<<endl;
cout<<"\t1-Вручную\n";
cout<<"\t2-Случайное заполнение\n";
cin>>metod;
if (metod==1)
{
cout<<"Введите число элементов ";
cin>>n;
float *m=new float [n],sum;
cout<<endl;
for(int i=0;i<n;++i)
{
++j;
cout<<"Введите "<<j<<" элемент массива: ";
cin>>m[i];
}
sortirovka(m,n);
}
if (metod==2)
{
cout<<"генерация массива"<<endl;
float *l=new float [n];
for(j=0;j<n;++j)
l[j]=rand() %13;
cout<<"Полученный массив"<<endl;
for(j=0;j<n;++j)
cout<<l[j]<<"\t";
cout<<endl;
sortirovka(l,n);
}
return 0;
}