Пример задания А. Дана целочисленная матрица размером 8 на 8. Найти:
такие k, что k-я строка матрицы совпадает с k-м столбцом;
сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
На рисунке 2.5.1 приведена блок-схема решения задания
Рисунок 2.5.1 -Блок-схема решения задания
Программа может иметь следующий вид:
#include
#include #define m 8
#define n 8
int main()
{ int matrix[n][m]; /* Объявляем матрицу nхm */
int i, j, p; /* Счетчик и признак совпадения */
int p1, iSumm; /* признак нахождение отрицательного элемента и переменная для хранения суммы */
/* генератором случайных чисел заполняем матрицу */
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
matrix[i][j]=rand()%10-1;
printf("\n Сгенерированная матрица имеет вид:\n ");
/* вывод матрицы */
for (i = 0; i < m; i++)
{ for (j = 0; j < n; j++)
printf(“%d “,matrix[i][j]);
printf("\n ");
}
printf("\n \t\t\tРЕЗУЛЬТАТ ПЕРВОЙ ЧАСТИ ЗАДАНИЯ");
for (i = 0; i < m; i++)
{ p=1;
for (j = 0; j < n; j++)
{ /* Сравниваем элемент i-й строки j-го столбца с элементом j-й строки i-го столбца. В случае их несоответствия присваиваем p значение нуль и прерываем цикл по j конструкцией break */
if (matrix [i][j] != matrix [j][i])
{ p=0;
break;
}
}
/* В случае p=1 выводим на экран номер соответствующей строки */
if (p==1) printf("\n k = %d ", i);
}
if (p==0) printf("\n нет одинаковых строк и столбцов ");
printf("\n \t\t\tРЕЗУЛЬТАТ ВТОРОЙ ЧАСТИ ЗАДАНИЯ");
printf("\n\n");
for (i = 0; i < m; i++)
{
/* Присваеваем переменным исходные значения */
iSumm = 0;
p1=0;
for (j = 0; j < n; j++)
{ /* Суммируем значения элементов i-й строки */
iSumm += matrix [i][j];
/* При нахождение хотя бы одного отрицательного элемента присваиваем p1=1, обозначающее необходимость вывода Суммы на экран */
if (matrix [i][j] < 0) p1=1;
}
/* В случае нахождения в строке хотя бы одного отрицательного элемента выводим на экран сумму элементов i-й строки */
if (p1==1) printf("Сумма элементов строки #%d = %d\n", i+1, iSumm);
}
system("PAUSE");/* задержка экрана*/
return 0;
}