Использование имени процедуры в качестве параметра другой процедуры - C (СИ) (71371)
Формулировка задачи:
Составить программу по заданному условию. Первая часть условия является заданием на разработку процедур для любой функции f1, f2. Условие второй части задания предполагает обязательное использование разработанной процедуры. В качестве исходного данного в большинстве заданий используется квадратная матрица А.
Для элементов двух массивов P и B разной длины составить процедуру, определяющую максимальное значение f(H[i]), где в качестве H[i] выступают элементы из P и B.
В матрице А найти номера строки и столбца, на пересечении которых находится минимальный элемент. Затем среди элементов найденных строки и столбца определить максимальный элемент.
Решение задачи: «Использование имени процедуры в качестве параметра другой процедуры»
textual
Листинг программы
#include <stdio.h>
//Для элементов двух массивов P и B разной длины составить процедуру,
//определяющую максимальное значение f(H[i]), где в качестве H[i] выступают
//элементы из P и B.
//В матрице А найти номера строки и столбца, на пересечении которых находится
// минимальный элемент. Затем среди элементов найденных строки и столбца определить
// максимальный элемент.
int f1(int P[], int N)
{
int i, max;
max = P[0];
for(i = 0; i < N; i++)
if(P[i] > max)
max = P[i];
return max;
}
void f2(int A[][5], int N)
{
int i, j, max, min, x, y, k, z, flag = 0;
min = A[0][0];
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
if(A[i][j] < min){
min = A[i][j];
x = i;
y = j;
}
}
}
printf("The minimum element of A matrix is A[%d][%d] = %d\n", x, y, min);
max = min;
for(j = 0; j < N; j++){
if(A[x][j] > max){
max = A[x][j];
k = j;
}
}
for(i = 0; i < N; i++){
if(A[i][y] > max){
max = A[i][y];
z = i;
flag = 1;
}
}
if(flag == 1)
printf("Maximum row %d and column %d element is A[%d][%d] = %d\n", x, y, z, y, max);
else
printf("Maximum row %d and column %d element is A[%d][%d] = %d\n", x, y, x, k, max);
}
int main()
{
int P[5] = {-8,12,0,36,-42};
int B[10] = {56,345,765,-234,53,1267,8798,64,756,-4567};
int A[5][5] = {{456,23,34,67,6},{75,244,123,98,0},{3453,765,4,-234,5},
{6756,-9878,0,324,75},{2345,-4567,23,876,-13}};
printf("Maximum value P array is %d\n",f1(P, 5));
printf("Maximum value B array is %d\n", f1(B, 10));
f2(A, 5);
return 0;
}