Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2 Программирование.doc
Скачиваний:
24
Добавлен:
17.03.2015
Размер:
285.18 Кб
Скачать

ОбрабоТка двумерных числовых массивов

(на примере матриц)

Цель работы

1. Научиться:

–объявлять матрицу в программе статически и динамически;

– вводить матрицу или объявлять с инициализацией;

– писать стандартный цикл обработки матрицы;

–обращаться к элементам матрицы по имени и через адрес.

2. Составить, выполнить и протестировать указанную задачу с помощью компьютера.

Порядок написания программы

1. Выделить память под матрицу статически или динамически.

2. Ввести матрицу с клавиатуры или заполнить случайными числами.

3. Провести указанную обработку матрицы.

4. Вывести на экран матрицу в матричном виде.

5. Вывести результат обработки.

6. Освободить динамическую память (если она выделялась).

Примеры написания программ

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

Этапы решения задачи:

- объявить матрицу;

-заполнить матрицу числами с клавиатуры;

-вывести матрицу в матричном виде;

-вычислить количество положительных элементов произвольного столбца матрицы;

-вывести результат.

.

Примечание. Вызов функцииRusперед строками-константами с русским текстом осуществляйте самостоятельно.

1 вариант решения – обращение к элементу массива идет через имя элемента массива, память выделяется статически, массив заполняется с клавиатуры.

Программа будет строиться в виде проекта.

Текст функции main будет выглядеть так:

//содержимое файла main.cpp

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include<iomanip> //для форматированного вывода матрицы

#include "Rus.h" //прототип функции русификации

#define STR 3 //задаем количество строк в массиве

#define STLB 4 //задаем количество столбцов в массиве

#define NSTLB 2 //задаем номер анализируемого столбца

int main(void)

{

int matr[STR][STLB]; //объявляем массив

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

int i, j, J;

//заполнения двумерного массива числами с клавиатуры;

cout<<"\nВведите массив";

for(i=0; i<STR; i++) //перебор элементов массива построчно

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

cin>>matr[i][j]);

//вывода двумерного массива;

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

for(i=0; i<STR; i++) //перебор элементов массива построчно

{

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

cout<<setw(8)<< matr[i][j]); //выводим элемент массива

cout<<endl; //переводим курсор на след строку

}

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

J= NSTLB-1; //номер столбца превращаем в индекс

for(i=0; i<n; i++) // перебор строк одного столбца с индексом J

if matr[i][ J]>0) // если элемент массива положительный

kol++; //количество увеличиваем на 1

cout<< "\nКоличество равно" << kol<<endl;

return 0;

}

2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, заполняется массив с клавиатуры.

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include<iostream> //для форматированного вывода матрицы

#include "Rus.h" //прототип функции русификации

#define STR 3 //задаем количество строк в массиве

#define STLB 4 //задаем количество столбцов в массиве

#define NSTLB 2 //задаем номер анализируемого столбца

int main(void)

{

int *matr=new int[STR*STLB];//объявляем массив

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

int i, j, J;

int *p=matr; //адрес первого элемента в матрице.

//заполнения двумерного массива числами с клавиатуры;

cout<<"\nВведите массив";

for(i=0; i<STR; i++) //перебор элементов массива

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

cin>>*( p+i*STLB+j);

//вывода двумерного массива;

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

for(i=0; i<STR; i++) //перебор элементов массива

{

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

cout<<setw(8)<< *(p+i*STLB+j); //выводим элемент массива

cout<<endl; //переводим курсор на след строку

}

//вычисления количества положительных элементов произвольного //столбца матрицы;

J=NSTLB-1; //номер столбца превращаем в индекс

for(i=0; i<n; i++) // перебор строк одного столбца с индексом J

if(*(p+i*STLB+J)>0) // если элемент массива положительный

kol++; //количество увеличиваем на1

cout<< "\nКоличество равно "<< kol<<endl;

return 0;

}