Знаки элементов строки изменить на противоположные - 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, то выполнение кода прерывается и происходит переход к следующей итерации внешнего цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д