Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования Республики Беларусь
УО “Барановичский государственный университет”
Инженерный факультет
Кафедра информационный систем и технологий (ИСТ)
Объектно-ориентированное программирование
Вариант №3
Группа Ист-21
Ф.И.О. студента Ревинский В.О
Ф.И.О. преподавателя Рогозик А.С.
Подпись преподавателя _______________
Барановичи, 2014
ЛАБОРАТОРНАЯ РАБОТА №2
Статические и динамические массивы. Указатели. Ссылки. Модульное ПРОГРаммирование.
Задание1
1) Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры).
2) Распечатать полученный массив.
3) Выполнить удаление указанных элементов из массива.
4) Вывести полученный результат.
5) Выполнить добавление указанных элементов в массив.
6) Вывести полученный результат.
7) Выполнить перестановку элементов в массиве.
8) Вывести полученный результат.
9) Выполнить поиск указанных в массиве элементов и подсчитать количество сравнений, необходимых для поиска нужного элемента.
10) Вывести полученный результат.
11) Выполнить сортировку массива указанным методом.
12) Вывести полученный результат.
13) Выполнить поиск указанных элементов в отсортированном массиве и подсчитать количество сравнений, необходимых для поиска нужного элемента.
14) Вывести полученный результат.
Код:
#include "stdafx.h"
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ locale::global(locale("rus"));
int a,b,c,x;
int *ptr=NULL;
int z[100];
while(true){
cout<<"1)Создание массива и просмотр"<<endl;
cout<<"2)Удаление максимального"<<endl;
cout<<"3)Добавить К элементов в начало"<<endl;
cout<<"4)Перевернуть массив"<<endl;
cout<<"5)Найти первый четный "<<endl;
cout<<"6)Сортировка "<<endl;
cout<<"7)Выход "<<endl;
cout<<"выберите действие ";
cin>>x;
if(x==1){
system("cls");
cout<<"Введите кол-во элементов= ";
cin>>a;
ptr=new int[a];
for(int i=0;i<a;i++){ //заполнение случайными числами
ptr[i]=rand()%100-50;
z[i]=ptr[i];
cout<<ptr[i]<<" ";
}
cout<<endl;}
if(x==2){system("cls");
b=ptr[0];
for(int i=0;i<a;i++){ //поиск максимального
if(b<ptr[i]){ b=ptr[i]; c=i; }
}
cout<<b<<" -максимальный элемент"<<endl;
int *q=NULL;
int y=0;
q=new int[a];
for(int i=0;i<a;i++){ //удаление максимального елемента
if(c!=i){q[y]=ptr[i]; y++;}
}
delete [] ptr; //удаление старого массива
ptr=new int[a-1];
for(int i=0;i<a-1;i++){
ptr[i]=q[i]; // вывод редактированного массива
cout<<ptr[i]<<" ";
}
cout<<endl;
a=a-1;
delete []q;
}
//-------------------------------------------------
if(x==3){
system("cls");
int t,t1,e;
int *q1=NULL;
cout<<"Кол-во добовляемых эле-тов ";
cin>>t;
a=t+a;
q1=new int[a];
for(int i=0;i<t;i++){
cout<<"Введите добовляемый елемент ";
cin>>q1[i];
}e=0;
for(int i=t;i<a;i++){
q1[i]=ptr[e];e++;
}
delete []ptr;
ptr=new int[a];
for(int i=0;i<a;i++){
ptr[i]=q1[i];
cout<<ptr[i]<<" ";
}
delete []q1;
cout<<endl;
}
//--------------------------------------
if(x==4){
system("cls");
int n;
int *q2=NULL;
q2=new int[a];
n=a-1;
for(int i=0;i<a;i++){
q2[i]=ptr[n];n--;
}
for(int i=0;i<a;i++){
ptr[i]=q2[i];
cout<<ptr[i]<<" ";
}cout<<endl;
delete []q2;
}
if(x==5){system("cls");
for(int i=0;i<a;i++){
if(ptr[i]%2==0){cout<<ptr[i]<<"--Первый четный!"<<endl;break;}
}
}
if(x==6){
int count,key;
for (int i=0;i<a-1;i++)
{
for (int j=0; j<a-(i+1); j++)
{
key=j+1;
count=ptr[key];
if (ptr[j]>ptr[key])
{
ptr[key]=ptr[j];
ptr[j]=count;}}}
for(int i=0;i<a;i++){cout<<ptr[i]<<" ";}cout<<endl;
}
if(x==7){break;}
}
system("pause");
return 0;}
Задание 2
1. Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать.
2. Выполнить указанное в варианте задание и вывести полученный массив на печать.
3. Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
4. Выполнить указанное в варианте задание и вывести полученный массив на печать.
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (LC_ALL, "RUS");
int i,e, j, N,q, M,n;
int *c=NULL,*x=NULL;
double *a,*b,*d;
//ввод размеров матрицы
cout<<"vvedite razmer odnomernogo massiva";
cin>>n;
c=new int[n];
for(int i=0;i<n;i++){
c[i]=rand()%100-50;
cout<<c[i]<<" ";
}
cout<<endl;
for(int i=0;i<n;i++){
if(c[i]%2==0){q=i;break;}
}
x=new int[n-1];
e=0;
for(int i=0;i<n;i++){
if(q!=i){x[e]=c[i];e++;}
}
for(int i=0;i<n-1;i++){
cout<<x[i]<<" ";
}
delete []c;
delete []x;
cout<<endl;
cout<<"vvedite razmer matricy ";
cout<<"N = "; cin>>N;
cout<<"M = "; cin>>M;
//выделение памяти для матриц
a=new double[N*M];
b=new double[N*M];
//ввод матрицы А
cout<<"введите матрицу А"<<endl;
for (i=0; i<N; i++)
for (j=0; j<M; j++)
{
*(a+i*M+j)=rand()%100-50;
}
for (i=0; i<N; cout<<endl, i++)
for (j=0; j<M; j++)
cout<<*(a+i*M+j)<<"\t";
int s;
cout<<"Vvedite nomer stroki dla dobavlenia ";
cin>>s;
N=N+s;
d=new double[N*M];
for (i=0; i<N-s; i++)
for (j=0; j<M; j++)
{
*(d+i*M+j)=*(a+i*M+j);
}
for (i=N-s; i<N; i++)
for (j=0; j<M; j++)
{
*(d+i*M+j)=rand()%100-50;
}
for (i=0; i<N; cout<<endl, i++)
for (j=0; j<M; j++)
cout<<*(d+i*M+j)<<"\t";
//освобождение памяти
delete []a;
delete []b;
delete []d;
system("pause");
return 0;
}
Вывод: Я получил практические навыки при работе со статическими и динамическими массивами, указателями, ссылками и функциями на языке программирования Visual C++.