Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


ДИНАМИЧЕСКИЕ МАССИВЫ




Цель работы : Изучение динамических массивов в языке С++.

Задание: Составить алгоритм и написать программу на языке С++ решения задачи согласно своего варианта.

Длительность:4 часа.

Теоретические основы:

Операция new при использовании с массивами имеет следующий формат:

new тип_массива

Такая операция выделяет для размещения массива участок динамической памяти соответствующего размера, но не позволяет инициализировать элементы массива. Операция new возвращает указатель, значением которого служит адрес первого элемента массива. При выделении динамической памяти размеры массива должны быть полностью определены.

Примеры:

1. int *a=new int[100];//выделение динамической памяти размером 100*sizeof(int) байтов double *b=new double[10];// выделение динамической памяти размером 10*sizeof(double) байтов

2. long(*la)[4];//указатель на массив из 4 элементов типа long

lа=new[2][4];//выделение динамической памяти размером 2*4*sizeof(long) байтов

3. int**matr=(int**)new int[5][10];//еще один способ выделения памяти под двумерный //массив

4. int **matr;

matr=new int*[4];//выделяем память под массив указателей int* их n элементов

for(int I=0;I<4;I++)matr[I]=new int[6];//выделяем память под строки массива

 

Указатель на динамический массив затем используется при освобождении памяти с помощью операции delete.

Примеры:

delete[] a;//освобождает память, выделенную под массив, если а адресует его начало

delete[]b;

delete[] la;

for(I=0;I<4;I++)delete [] matr[I];//удаляем строки

delete [] matr;//удаляем массив указателей

Пример

Удалить из матрицы строку с номером K

#include <iostream.h>

#include <string.h>

 

#include <iostream.h>

#include <stdlib.h>

void main()

{

int n,m;//размерность матрицы

int i,j;

cout<<"\nEnter n";

cin>>n;//строки

cout<<"\nEnter m";

cin>>m;//столбцы

//выделение памяти

int **matr=new int* [n];// массив указателей на строки

for(i=0;i<n;i++)

matr[i]=new int [m];//память под элементы матрицы

//заполнение матрицы

for(i=0;i<n;i++)

for(j=0;j<m;j++)

matr[i][j]=rand()%10;//заполнение матрицы

//печать сформированной матрицы

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

cout<<matr[i][j]<<" ";

cout<<"\n";

}

//удаление строки с номером к

int k;

cout<<"\nEnter k";

cin>>k;

int**temp=new int*[n-1];//формирование новой матрицы

for(i=0;i<n;i++)

temp[i]=new int[m];

//заполнение новой матрицы

int t;

for(i=0,t=0;i<n;i++)

if(i!=k)

{

for(j=0;j<m;j++)

temp[t][j]=matr[i][j];

t++;

}

 

//удаление старой матрицы

for(i=0;i<n;i++)

delete matr[i];

delete[]matr;

n--;

//печать новой матрицы

 

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

cout<<temp[i][j]<<" ";

cout<<"\n";

}

}

 

Задания по вариантам к лабораторной работе №8:

№ варианта Одномерный массив Двумерный массив
Удалить первый четный элемент Добавить строку с заданным номером
Удалить первый отрицательный элемент Добавить столбец с заданным номером
Удалить элемент с заданным ключом (значением) Добавить строку в конец матрицы
Удалить элемент равный среднему арифметическому элементов массива Добавить столбец в конец матрицы
Удалить элемент с заданным номером Добавить строку в начало матрицы
Удалить N элементов, начиная с номера K Добавить столбец в начало матрицы
Удалить все четные элементы Добавить К строк в конец матрицы
Удалить все элементы с четными индексами Добавить К столбцов в конец матрицы
Удалить все нечетные элементы Добавить К строк в начало матрицы
Удалить все элементы с нечетными индексами Добавить К столбцов в начало матрицы
Добавить элемент в начало массива Удалить строку с номером К
Добавить элемент в конец массива Удалить столбец с номером К
Добавить К элементов в начало массива Удалить строки, начиная со строки К1 и до строки К2
Добавить К элементов в конец массива Удалить столбцы, начиная со столбца К1 и до столбца К2
Добавить К элементов, начиная с номера N Удалить все четные строки
Добавить после каждого отрицательного элемента его модуль Удалить все четные столбцы
Добавить после каждого четного элемента элемент со значением 0 Удалить все строки, в которых есть хотя бы один нулевой элемент
Добавить по К элементов в начало и в конец массива Удалить все столбцы, в которых есть хотя бы один нулевой элемент
Добавить элемент с номером К Удалить строку, в которой находится наибольший элемент матрицы
Удалить элемент с заданным номером Добавить строки после каждой четной строки матрицы
Удалить N элементов, начиная с номера K Добавить столбцы после каждого четного столбца матрицы
Удалить все четные элементы Добавить К строк, начиная со строки с номером N
Удалить все элементы с четными индексами Добавить К столбцов, начиная со столбца с номером N
Удалить все нечетные элементы Добавить строку после строки, содержащей наибольший элемент
Удалить все элементы с нечетными индексами Добавить столбец после столбца, содержащего наибольший элемент

 

Требования к отчёту по лабораторной работе:

1. оформить отчет по соответствующим требованиям (титульный лист)

2. сформулировать цель работы

3. задание;

4. схема алгоритм программы;

5. текст программы;

6. выводы по результатам выполнения лабораторной работы;

7. список используемой литературы (обязательно из электронной библиотеки).

 


Поделиться:

Дата добавления: 2015-02-09; просмотров: 143; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты