Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Козырева И., лабораторные работы.doc
Скачиваний:
4
Добавлен:
16.04.2019
Размер:
2.95 Mб
Скачать

Лабораторная работа №2 Работа с массивами. Одномерные статические массивы. Многомерные динамические массивы

Цель работы

Изучение способов определения и обработки одномерных и многомерных массивов. Освоение двух форм выделения памяти под массив: статического и динамического, правил использования указателей для доступа к элементам массива.

Задание №1

Вариант №1

Определить в программе одномерный массив Х размера n. Сформировать из него 4 массива. Первый должен содержать записанные подряд положительные элементы массива Х. Второй - отрицательные элементы массива Х. Третий - подряд запиcанные индексы элементов первого массива, которые они имели в массиве Х. Четвертый cодержит подряд записанные индексы элементов второго массива, которые они имели в массиве Х.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

#include <stdlib.h>

using namespace std;

#include <time.h>

Void main()

{

setlocale(LC_ALL,"Russian");

srand((unsigned)time(NULL));//использование времени

const int n=10;//объявление переменных и констант

int mas[n];//основной массив

int p[n];//массив положительных

int pi[n];//массив индексов полож.

int o[n];//массив отрицательных

int oi[n];//массив индексов отриц.

int k=0;//счетчики

int l=0;

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

mas[i]=rand()%100-50;//задание случайных значений

cout<<mas[i]<<"\t";//вывод исходного массива

if (mas[i]>0){//проверка для положительных

p[k]=mas[i];

pi[k]=i;

k++;

}

else {//операции для отрицательных

o[l]=mas[i];

oi[l]=i;

l++;

}

}

cout<<endl;

for (int i=0; i<k; i++)//вывод

cout<<p[i]<<" - "<<pi[i]+1<<"-й"<<endl;

cout<<endl;

for (int i=0; i<l; i++)//вывод

cout<<o[i]<<" - "<<oi[i]+1<<"-й"<<endl;

}

Вариант №2

В одномерном массиве D размера n, значения элементов которого вводятся с клавиатуры, определить количество элементов, которые входят в массив более, чем по одному разу.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

//#include <stdlib.h>

using namespace std;

Void main()

{

setlocale(LC_ALL,"Russian");

const int n=10;//объявление переменных и констант

int mas[n];//основной массив

int k=0;

for (int i=0; i<n; i++){//диалог с пользователем

cout<<"Введите "<<i+1<<"-й элемент массива"<<endl;

cin>>mas[i];

}

for (int i=0;i<n;i++){//проверка

for (int j=i+1;j<n;j++){

if (mas[i]==mas[j])

k++;

}

}

cout<<k<<" чисел(ла) входит в массив дважды"<<endl;//вывод

}

Вариант №3

Найти минимальный среди положительных элементов определенного в программе одномерного массива Х размера n. Вывести на печать индексы отрицательных элементов массива, а также индекс минимального элемента.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

#include <stdlib.h>

using namespace std;

#include <time.h>

Void main()

{

setlocale(LC_ALL,"Russian");

srand((unsigned)time(NULL));//использование времени

const int n=10;//объявление переменных и констант

int mas[n];//основной массив

int p[n];//массив положительных

int o[n];//массив отрицательных

int oi[n];//массив индексов отриц.

int k=0;//счетчики

int l=0;

int h=0;//переменная-индекс мин.эл-та

int u=50;//пер. для нахожд. мин.эл-та

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

mas[i]=rand()%100-50;//задание случайных значений

cout<<mas[i]<<"\t";//вывод исходного массива

}

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

if (mas[i]>0){//проверка для положительных

p[k]=mas[i];

k++;

}

}

for (int i=0; i<k;i++){//нахожд. мин. эл-та

if (p[i]<u)

u=p[i];

}

for (int i=0;i<n;i++)//нахожд. индекса мин. эл-та

if (u==mas[i])

h=i;

for (int i=0;i<n;i++){//проверка для отриц.

if (mas[i]<0){

o[l]=mas[i];

oi[l]=i;

l++;

}

}

cout<<endl;//вывод

cout<<u<<" - "<<h+1<<"-й"<<endl;

cout<<endl;

for (int i=0; i<l; i++)

cout<<o[i]<<" - "<<oi[i]+1<<"-й"<<endl;

}

Вариант №4

Дан одномерный массив Y размера n. Все положительные элементы массива возвести в квадрат, а отрицательные в куб. Отпечатать старый и новый массив, а также сумму элементов в старом и новом массиве отдельно.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

#include <stdlib.h>

using namespace std;

#include <time.h>