Знаки элементов строки изменить на противоположные - C (СИ)
Формулировка задачи:
Задание: 1.Найти в матрице первый столбец, все элементы которого равны нулю.
2.Знаки элементов строки с таким же номером изменить на противоположные.
Сделал только первую часть, помогите со второй, вот код:
#include <stdio.h>
#include <conio.h>
#include <locale>
int main ()
{
setlocale(LC_ALL,"rus");
int i,j;
int n;
int s=0;
int b[100][100];
printf("Введите кол-во строк и столбцов матрицы: \n");
scanf("%d",&n);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
printf("Элемент [%d,%d]:", i+1, j+1);
scanf("%d",&b[i][j]);
}
printf("MATRICA: \n");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%d ", b[i][j]);
printf("\n");
}
for (j = 0; j < n; j++)
{
for (i = 0; i < n; i++)
{
s+=(b[i][j]*b[i][j]);
}
if (s == 0)
{
printf("Столбец %d содержит все нулевые элементы", j+1);
}
else
{
s = 0;
}
}}Решение задачи: «Знаки элементов строки изменить на противоположные»
textual
Листинг программы
int flag;
for(j = 0; j < n; j++){
for(i = 0, flag = 0; i < n; i++){
if(b[i][j] != 0)
flag = 1;
}
if(!flag){
printf("Column %d has only zero", j);
for(int k = 0; k < n; k++)
b[j][k] *= -1;
break;
}
}
Объяснение кода листинга программы
В этом коде происходит следующее:
- В первой строке объявляется переменная типа int с именем flag и инициализируется значением 0.
- Во втором цикле перебираются все элементы матрицы b[i][j]. Если элемент не равен 0, то переменная flag изменяется на 1.
- Если после прохода по всем элементам матрицы значение переменной flag осталось равным 0, то выводится сообщение о том, что в текущем столбце есть только нули.
- После этого выполняется операция умножения на -1 для каждого элемента текущего столбца матрицы b.
- Если значение переменной flag изменилось на 1, то выполнение кода прерывается и происходит переход к следующей итерации внешнего цикла.