Лекции.Орг


Поиск:




Пример программы на обработку двумерного массива (матрицы)




 

//Массивы динамические двумерные

//Программа находит строку введенного с клавиатуры

//двумерного массива целых чисел, содержащую максимальную

//сумму элементов

 

#include<iostream.h>

#include <locale.h>

//using namespace std;

 

typedef int telem; //определение типа элементов массива

typedef telem *tstr; //определение типа "указатель на telem"

typedef tstr *tmatr; //определение типа "указатель на указатель на telem"

void inputmatr(tmatr a, int str, int sto);

void outputmatr(tmatr a, int str, int sto);

telem poisk_str(tmatr a, int str, int sto, int &imax);

 

int main()

{ int i, j;

int imax; //номер строки с максимальной суммой элементов

int n; //число строк матрицы

int m; //число столбцов матрицы

tmatr a; //объявляется переменная-указатель на указатель на telem

telem max; //максимальная сумма элементов

setlocale(LC_ALL,"Russian");

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

cin >> n >> m;

a = new tstr [n]; //выделение динамической памяти под массив

//указателей на строки массива

for(i = 0; i < n; i++) //цикл выделения памяти под каждую строку

*(a + i) = new telem [m]; //каждому элементу массива указателей

//на строки присваивается адрес начала

//области памяти, выделяемой под строку

inputmatr(a, n, m);

cout << "Исходная матрица:\n";

outputmatr(a, n, m);

max = poisk_str(a, n, m, imax);

cout << "Максимальная сумма=" << max << " элементов строки содержится";

cout << endl << "в " << imax << "-й строке исходного массива " << endl;

cout << endl << "Для завершения нажмите <Enter>";

//Освобождение динамической памяти

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

delete a[i];

delete a;

return 0;

}

 

void inputmatr(tmatr a, int str, int sto)

{ cout << "Введите построчно через пробел элементы" << endl;

cout << "двумерного массива размера " << str << "x" << sto << endl;

cout << "После ввода строки нажимайте <Enter>" << endl;

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

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

cin >> *(*(a + i) + j);

}

 

telem poisk_str(tmatr a, int str, int sto, int &imax)

{telem max, //максимальная сумма элементов

pr; //текукущая сумма

imax = 0; //предполагаем, что максимальная сумма элементов в 0-ой строке

max = 0;

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

max += *(*(a + 0) + j);

for(int i = 1; i < str; i++)

{pr = 0;

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

pr += *(*(a + i) + j);

if(max < pr)

{imax = i;

max = pr;

}

}

return max;

}

 

void outputmatr(tmatr a, int str, int sto)

{ int i, j;

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

{for(j = 0; j < sto; j++)

cout << *(*(a + i) + j) << ' ';

cout << '\n';

}

}


Лабораторная работа №6





Поделиться с друзьями:


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


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

789 - | 799 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.