КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пример выполнения задания. В целочисленном двухмерном динамическом массиве (матрице) размером N´М найти сумму четных элементов и их количествоВ целочисленном двухмерном динамическом массиве (матрице) размером 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 ( * – операция разадресации). При вводе значений элементов массивов в одной строке через пробелы должен получиться следующий результат:
|