Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Доп-1.2. Пример выполнения задания



В целочисленном двухмерном динамическом массиве (матрице) размером N ´ М найти сумму четных элементов и их количество. Ввод исходных данных (размеры массива и его элементы) и вывод результатов выполнить в основной функции. Решение поставленной задачи оформить в функции пользователя.

Текст программы может иметь следующий вид:

#include <iostream.h>

#include <conio.h>

int Fun_Sum_Kol(int, int, int**, int*); // Описание прототипа функции

void main()

{

int **a, i, j, n, m, sum, kol;

cout << "\t Input N, M: ";

cin >> n >> m;

a = new int*[n]; // Захват памяти под указатели

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

a[i] = new int[m]; // Захват памяти под элементы

cout <<"\n Input A" << endl;

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

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

cout << "\t a[" << i+1 << "][" << j+1 << "] = ";

cin >> a[i][j];

}

cout <<"\n Matrix A:" << endl;

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

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

cout << "\t" << a[i][j];

cout << endl;

}

// Обращение к функции с указанием фактических аргументов

sum = Fun_Sum_Kol(n, m, a, &kol);

cout << "\n Kol-vo = " << kol << "\t Summa = " << sum << endl;

delete []a; // Освобождение памяти

cout << "\n\t Delete!" << endl;

cout << " Press any key... " << endl;

getch();

}

/* Реализация (определение) описанной выше функции, в заголовке которой указаны формальные параметры, идентификаторы которых обрабатываются в ее коде */

int Fun_Sum_Kol(int a, int b, int **x, int *k)

{

int i, j, s = 0;

*k = 0;

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

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

if(x[i][j] % 2 ==0){

(*k)++; // Скобки обязательны

s += x[i][j];

}

return s;

}

Обратите внимание на то, что из функции мы должны получить два скалярных результата – посчитанные сумму и количество четных чисел. С помощью оператора return мы возвращаем первое значение (сумму), а второе значение мы передаем в точку вызова с помощью указателя (адреса): при обращении к функции в качестве четвертого параметра передаем адрес & kol, а в функции используем «значение, находящееся по указанному адресу» * k (* – операция разадресации).

При вводе значений элементов массивов в одной строке через пробелы должен получиться следующий результат:





Дата публикования: 2015-02-22; Прочитано: 199 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...