Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
профорг поясняет.doc
Скачиваний:
4
Добавлен:
14.08.2019
Размер:
752.13 Кб
Скачать
    1. Результат работы программы

Рис 4. Результат работы программы 3

  1. Лабораторная работа №4 «Работа с одномерными массивами»

4.1 Постановка задачи

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить 5 первых элементы массива.

  4. Добавить в конец массива 3 новых элемента.

  5. Распечатать полученный массив.

    1. Программа решения задачи

#include <vcl.h>

#pragma hdrstop

#include <conio.h>

#include <iostream.h>

#include <math.h>

#include <windows.h>

/* 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить 5 первых элементы массива.

4) Добавить в конец массива 3 новых элемента.

5) Распечатать полученный массив.

*/

#pragma argsused

char* Rus(const char* text);

int fill (int *a,int);

void newmas(int *a, int *anew, int, int);

int newel (int *anew,int);

int main(int argc, char* argv[])

{

const int N=100;

int a[N];

int p;

cout << Rus("Введите длину массива: ");

cin >> p;

cout << endl << Rus("Массив: ");

fill (a,p);

for (int i=0;i<p;i++) //Выводим массив

{

cout << a[i] << " ";

}

const int M=100;

int anew[M];

int pnew=p-2;

newmas(a, anew, p, pnew);

newel(anew,pnew);

cout << endl << endl << Rus("Новый массив: ");

for (int l=0;l<pnew;l++) //Выводим массив

{

cout << anew[l] << " ";

}

getch();

return 0;

}

int fill (int *a, int p1) //заполнение массива

{

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

a[i]=rand()%100;

}

void newmas(int *a, int *anew, int p1, int pnew1) //новый массив без первых 5-ти

{

int k=5;

for (int j=0;j<pnew1-3;j++)

{

anew[j]=a[k];

k++;

}

}

int newel (int *anew, int pnew1) //добавление новых 3-х

{

for (int z=pnew1-3;z<pnew1;z++)

anew[z]=rand()%100;

}

char bufrus[256];

char* Rus(const char* text)

{

CharToOem(text,bufrus);

return bufrus;

}

    1. Результат работы программы

Рис. 5 Результат работы программы 4

  1. Лабораторная работа №5 «Функции и массивы»

    1. Постановка задачи

Написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элементами, удаленная строка заполняется 0 и переносится в конец массива.

    1. Программа решения задачи

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#pragma hdrstop

/*10. Написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного массива.

Удалить из массива все строки с отрицательными элементами, уда-ленная строка заполняется 0 и переносится в конец мас-сива. */

#pragma argsused

char bufRus[256];

char* Rus(const char* text)

{

CharToOem(text, bufRus);

return bufRus;

}

void show(int**,int,int); // Функция вывода матрицы

void delzer(int**,int,int); // Функция для удаления строки

//---------------------------------------------------------------------------

int main(int argc, char* argv[])

{

int strok,stolb,num,num1;

int **matr;

cout<<Rus("Введите размерность массива: ") << endl;

cout<<Rus(" количество строк: ");

cin>>strok;

cout<<Rus(" количество столбцов: ");

cin>>stolb;

matr=new int*[strok];

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

{

matr[i]=new int[stolb];

for(int j=0;j<stolb;j++)

matr[i][j]=rand()%401 - 30;

}

show(matr,strok,stolb); //выводим массив

delzer(matr,strok,stolb);

//удаляем дин. массив

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

delete matr[i];

delete [] matr;

getch();

return 0;

}

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

void show(int** matr,int strok,int stolb)

{

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

{

for(int k=0;k<stolb;k++)

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

cout<<endl;

}

}

//функция для удаления строк с отр.элементами

void delzer(int** matr,int strok,int stolb)

{

int sch=0; //счетчик для количества строк с отр.эл.

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

{

for(int j=0;j<stolb;j++)

{

if(matr[i][j]<=0) //ищем отр.эл.

{

for(int l=0;l<stolb;l++) matr[i][l]=0; //в старом мапссиве заполняем эту строку нулями

j=stolb; //переходим к след.строке

sch++;

}

}

}

int strok2=strok-sch; //количество строк с неотр.эл.

int i1=0; //переменная для продвижения по строкам старого массива

int **matr2; //создаем новый массив

matr2=new int*[strok];

for(int i=0;i<strok;i++) matr2[i]=new int[stolb];

for(int i=0;i<strok2;i++) //копируем строки с числами

{

while (matr[i1][0]==0) i1++; //если начинается с нуля - пропускаем

for(int j=0;j<stolb;j++)

{

matr2[i][j]=matr[i1][j];

}

i1++; //переходим на след.строку в старом массиве

}

for (int i=strok2;i<strok;i++) //дозаполняем оставшиеся строки в новом массиве нулями

{

for (int j=0;j<stolb;j++)

matr2[i][j]=0;

}

cout<<endl;

show(matr2,strok,stolb); //выводим новый массив

}