Практическое занятие № 4

ТЕМА: Обработка массивов в программах на С++

ЦЕЛЬ РАБОТЫ: получить практические навыки по описанию и обработке одномерных и двумерных массивов на языке C++

 

Ход работы

1. Одномерные массивы:    

Составить программу,  выполняющую следующие функции

1.1. Дан массив целых чисел. Заполнить массив случайными значениями, выдать массив на экран

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

1.3.   Все элементы меньше 5, уменьшить на минимальный элемент массива

2. Двумерные массивы: 

      Составить программу, выполняющую следующие функции:

2.1.   Дан двумерный массив вещественных чисел. Заполнить массив случайными числами, выдать на экран в виде матрицы

2.2.   В массиве найти минимальный элемент и прибавить его к элементам первого столбца

2.3. В массиве найти количество отрицательных элементов в нечетных столбцах и среднее значение элементов в четных столбцах

 

Выполнение работы

 

Одномерные массивы

   //подключаем заголовочные файлы

#include <iostream.h>

#include <stdlib.h>

int main()

{

    //подключаем русский язык

    system("chcp 1251>nul");

   

    //описываем динамический массив

    int *mas;

    //описываем начало и конец отрезка формирования массива, сумму массива

    float a,b, sum;

    //описываем переменные

    int n,i,min,kol1,kol2;

   

    //вводим концы отрезка   

    cout<<"Введите концы отрезка: ";

    cin>>a>>b;

 

    //вводим размер массива   

    cout<<"Введите размер массива: ";

    cin>>n;

    

     //выделяем память для массива размера n

     mas=new int[n];

    

    cout<<"Исходный массив:\n";

    //обнуляем базы для генерирования разных случайных чисел

    srand(time(0));

    //заполняем массив и выводим его на экран

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

    {

        mas[i]=(b-a)*rand()/32767+a;

        cout<<"mas["<<i+1<<"] = "<<mas[i]<<"\n";

    }

    

    //находим среднее положительных элементов массива

    //и количество отрицательных элементов массива   

    for (sum=0, kol1=0, kol2=0, i=0; i<=n-1; i++)

        if (mas[i]>=0)  //если элемент положительный

        {

            sum+=mas[i];    //считаем сумму положительных элементов

            kol1++;              //наращиваем количество положительных элементов

        }

        else  //иначе, если элемент отрицательный, наращиваем количество отрицательных элементов

            kol2++;

 

    //выводим найденные значения на экран

    cout<<"Среднее положительных элементов = "<<sum/kol1<<"\n";

    cout<<"Количество отрицательных элементов = "<<kol2<<"\n";

 

    //находим минимальное значение массива

    for (min=mas[0], i=0; i<=n-1; i++)

        if (mas[i]<min)

            min=mas[i];

    //выводим найденное значение на экран   

    cout<<"Минимальный элемент = "<<min<<"\n";

 

    //элементы, меньшие 5, уменьшаем на min   

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

        if (mas[i]<5)

            mas[i]=mas[i]-min;

 

    //выводим полученный после уменьшения массив   

    cout<<"Массив после уменьшения на min:\n";

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

        cout<<"mas["<<i+1<<"] = "<<mas[i]<<"\n";

    //удаляем массив из памяти

    delete[] mas;

    //делаем паузу для просмотра   

    system("pause");

    //завершаем работу программы

    return 0;

} 

Двумерные массивы

//подключаем заголовочные файлы

#include <iostream.h>

#include <stdlib.h>

int main()

{

    //подключаем русский язык

    system("chcp 1251>nul");

   

    //описываем динамический массив

    float **mas;

    //описываем переменные

    float a,b,min,sum;

    int n,m,i,j,kol1,kol2;

 

    //вводим концы отрезков

    cout<<"Введите концы отрезка: ";

    cin>>a>>b;

   

    //вводим размер массива

    cout<<"Введите количество строк и столбцов массива: ";

    cin>>n>>m;

 

    //выделяем память под динамический массив

     mas=new float *[n];

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

         mas[i]=new float [m];

 

    //обнуляем базы для генерирования разных случайных чисел

    srand(time(0));

 

    //формируем массив и выводим на экран

    cout<<"Исходный массив:\n";

    cout.precision(2);

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

    {

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

        {

            mas[i][j]=(b-a)*rand()/32767+a;

            cout.width(6);

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

        }

        cout<<"\n";

    }

   

    //находим минимальный элемент в массиве

    for (min=mas[0][0], i=0; i<=n-1; i++)

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

            if (mas[i][j]<min)

                min=mas[i][j];

    cout<<"Минимальный элемент равен: "<<min<<"\n";

    

    //прибавляем min к первому столбцу массива

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

        mas[i][0]+=min;

    

    //выводим полученный массив на экран

    cout<<"Массив после прибавления min к первому столбцу:\n";

    cout.precision(2);

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

    {

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

        {

            cout.width(6);

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

        }

        cout<<"\n";

        }

 

    //находим среднее в четных столбцах и

    //количество отрицательных элементов в нечетных столбцах

    for (sum=0, kol1=0, kol2=0, i=0; i<=n-1; i++)

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

            if (j%2!=0) //если остаток от деления на 2 не равен нулю, т.е. столбец четный

            {

                sum+=mas[i][j];      

                kol1++;

            }

            else   //иначе, если остаток от деления на 2 равен нулю, т.е. столбец нечетный

                if (mas[i][j]<0)      //если элемент отрицательный

                    kol2++;

   

    //выводим найденные значения на экран

    cout<<"Количество отрицательных элементов в нечетных столбцах = "<<kol2<<"\n";

    cout<<"Среднее значение элементов в четных столбцах = "<<sum/kol1;

 

    //удаляем массив из памяти

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

         delete[] mas[i];

     delete[] mas;

    //делаем паузу для просмотра    

     system("pause");

     //завершаем работу программы

     return 0;

}

 

Решить самостоятельно:

1. Одномерные массивы:

1.1. Сформировать динамический одномерный массив действительных чисел. Массив заполнить случайными числами на отрезке [a, b]. Концы отрезков и размер массива ввести с клавиатуры.

1.2. Определить, сколько элементов массива находятся в диапазоне [c,d].

1.3. Сформировать новый массив из положительных элементов исходного массива.

1.4. В новом массиве из всех четных элементов вычесть  3.

2. Двумерные массивы:

2.1. Сформировать динамический двумерный массив целых чисел. Массив заполнить случайными числами на отрезке [a, b]. Концы отрезков и размер массива ввести с клавиатуры.

2.2. Заменить 1 строку массива значением max, последний столбец – значением min.

2.3. Нечетные элементы 1 и 3 строк записать в одномерный массив R.