//7.В каждой строке матрице проверить наличие положительных элементов и при их наличии выполнить реверс элементов этой строки.
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,m,n, beginIndex, endIndex;
double a[10][10]={{0,-8.4, -13.6, -34.5,16.3,-34.9, 18.25,7,12, -56.14},
{-34.9, -18.25,-7,-12, -56.14,13, 18, 34, -102,66},
{2, 18, 34, 102,66,-38,-71,23,0.4,15},
{-13.6, -34.5,-16.3,-34.9, 18.25,7,12, -56.14,13, 18},
{16.3,-34.9, 18.25,7,12, -56.14,13, 18, 34, -102},
{18.25,7,12, -56.14,13, 18, 34, -102,66,-38},
{12, -56.14,13, 18, 34, -102,66,-38,-71,23},
{8.4, 13.6, -34.5,16.3,-34.9, 18.25,7,12, -56.14,13},
{-34.5,16.3,-34.9, 18.25,7,12, -56.14,13, 18, 34},
{56.14,13, 18, 34, -102,66,-38,-71,23,0.4}
};
double buf;
char haveReversed = 0;
//Ввод и контроль размеров матрицы
printf("\t Введите размеры матрицы m<=10 n<=10\n");
scanf("%d%d",&m,&n);
if (m<=0 || m>10 ||n<=0 ||n>10)
{
printf("\t Введенные размеры матрицы не допустимы\n",n);
printf("\nДля завершения программы нажмите любую клавишу\n");
return 0;
}
printf("\nИсходная матрица \n");
for(i=0; i<m;i++)
for(j=0; j<n;j++)
printf("%7.2lf%c",a[i][j],j==n-1?'\n':' ');
for(i = 0; i < m; i++) {
haveReversed = 0;
for(j = 0; j < n && !haveReversed; j++) {
if(a[i][j] > 0)
{
beginIndex = 0;
endIndex = n-1;
while(beginIndex < endIndex)
{
buf = a[i][beginIndex];
a[i][j] = a[i][endIndex];
a[i][endIndex] = buf;
beginIndex++;
endIndex--;
}
haveReversed = 1;
}
}
}
//Вывод преобразованной матрицы
printf("\nПреобразованная матрица \n");
for(i=0; i<m;i++)
for(j=0; j<n;j++)
printf("%7.2lf%c",a[i][j],j==n-1?'\n':' ');
printf("\nДля завершения программы нажмите любую клавишу\n");
return 0;
}
Comments