Найти максимальное значение среди всех элементов матрицы, расположенных в отмеченных столбцах - C (СИ)
Формулировка задачи:
Дана целочисленная матрица A(M,N), где М- четно.. Столбец назовем отмеченным, если в нем больше половины элементов являются числами Фибоначчи. Найти максимальное значение среди всех элементов, расположенных в отмеченных столбцах. (Члены матрицы вводятся с клавиатуры)
Решение задачи: «Найти максимальное значение среди всех элементов матрицы, расположенных в отмеченных столбцах»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define M 6
#define N 5
int Matr[M][N];
/* Проверка, является ли n числом Фибоначчи */
int isFib(int n)
{
int c=1, p=1,q;
while (1)
{
if (c == n) return 1;
if (c > n) return 0;
q=c;
c=c+p;
p=q;
}
}
int isMark(int k)
{
int i,c=0;
for (i=0; i<M; i++)
if (isFib(Matr[i][k])) c++;
return (c > (M/2));
}
int main(int argc, char *argv[])
{
int i,j,p=0,max;
/* ввод матрицы */
for (i=0; i<M; i++)
{
for (j=0; j<N; j++)
{
printf("M[%d,%d]=",i,j);
scanf("%d",&Matr[i][j]);
}
printf("\n");
}
/* Поиск максимума в отмеченных */
for (j=0; j<N; j++)
if (isMark(j))
{
if (p==0) max=Matr[0][j];
for (i=0; i<M; i++)
if (Matr[i][j] > max) max=Matr[i][j];
p=1;
}
/* Вывод результата */
printf("max=%d\n",max);
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Объединение двух чисел с помощью операции сложения.
- Использование условного оператора if для проверки условия.
- Использование цикла for для выполнения повторяющихся действий.
- Использование функции scanf для ввода данных в программу.
- Использование функции printf для вывода данных из программы.
- Создание матрицы с помощью оператора присваивания.
- Использование функции isMark для проверки, является ли номер столбца отмеченным.
- Использование функции isFib для проверки, является ли число числом Фибоначчи.
- Использование условного оператора if для проверки, является ли максимальное значение равным последнему числу.
- Использование оператора присваивания для обновления значения максимального числа.
- Использование функции system для приостановки выполнения программы.
- Возвращение значения 0 функцией main, что означает успешное выполнение программы.