Някаде бъркам не работи както трябва ето условието: Даден е двумерен масив а[n,m] където n,m са цели числа в интервала [3,7] и се въвеждат от клавиетурата, да се състави програма която въвежда стойностите на елементите на масива и използвайки меню реализира чрез функции:
1 намира сумата от индексите на минималния елемент(предполага се че е единствен)
2 търси и извежда всички елементи които са седла на масива(седло е елемент,които е минимален в колоната и максимален в реда си)
3 коригира масив "а", като заменя елементите му със сумата от старата им стойност + номера на реда +номера на стълба
4 извежда на екрана променения масив в табличен вид.
Ето до къде я докарах :
#include <stdio.h>
#define N 7
#define M 7
int sum_index(int mas_a[N][M]);
int sedlo(int m[N][M]);
int correct_mas_a(int mas_a[N][M]);
int sum_index(int mas_a[N][M])
{
int i, j, sum, min;
min = mas_a[0][0];
for ( i = 0; i < N; i++)
{
for ( j = 0; j < M; j++)
{
if ( min > mas_a[j] )
{
min = mas_a[j];
sum = i+j;
}
}
}
printf("sum = %d", sum);
return 0;
}
int correct_mas_a(int mas_a[N][M])
{
int i, j;
for ( i = 0; i < N; i++)
{
for ( j = 0; j < M; j++)
{
mas_a[j] = mas_a[j] + (i + j);
printf("%d", mas_a[j]);
}
printf("\n");
}
/* for ( i = 0; i < N; i++)
{
for ( j = 0; j < M; j++)
{
}
}*/
return 0;
}
int sedlo(int m[N][M])
{
int i, j;
const int r = 4;
const int c = 4;
int max_rows[N] = {0};
int min_cols[M] = {0};
for (i = 0; i < r; ++i)
{
max_rows = 0;
for (j = 0; j < c; ++j)
{
if (m[max_rows] < m[j])
{
max_rows = j;
}
}
}
for (j = 0; j < c; ++j)
{
min_cols[j] = 0;
for (i = 0; i < r; ++i)
{
if (m[j] < m[min_cols[j]][j])
{
min_cols[j] = i;
}
}
}
for (i = 0; i < r; ++i)
{
for (j = 0; j < c; ++j)
{
if (min_cols[j] == i && max_rows == j)
{
printf("%d\n", m[j]);
}
}
}
return 0;
}
int main()
{
int a[N][M], n, m;
int i, j, menu_index;
do
{
printf("vavedete n: ");
scanf("%d", &n);
printf("vavedete m: ");
scanf("%d", &m);
}
while ( ( m < 3) || (n < 3) || ( m > 7) || ( n > 7) );
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
printf("vavedete a[%d][%d]= ", i+1, j+1);
scanf("%d", &a[j]);
}
}
printf("\nMenu:\n");
printf("1. Namirane sumata ot indexite na minimalniq element.\n");
printf("2. Tarsi i izvejda vsi4ki elementi koito sa sedla.\n");
printf("3. Zamenq masiva a[j]+i+j.\n");
scanf("%d", &menu_index);
switch (menu_index)
{
case 1: sum_index(a);
break;
case 2: sedlo(a);
break;
case 3:
correct_mas_a(a);
break;
default: printf("ERROR");
}
return 0;
}