Проверка по первому символу в строке
Дана матрица А(4,4). Если первый элемент строки положительный, то все элементы данной строки переписать в обратном порядке. Построить вектор В из элементов последнего столбца матрицы.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "Rus");
int mas_a[4][4], mas_b[4], k = 0, i, j;
for (i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
printf("Введите mas_a[%d][%d] = ",i,j);
scanf("%d",&mas_a[i][j]);
}
}
for (i = 0; i < 4; i++){
printf("\n");
for(j = 0; j < 4; j++){
printf("%d\t",mas_a[i][j]);
}
}
printf("\n");
if(mas_a[i][0] >= 0){
for(i = 0; i < 4 / 2; ++i){
int temp = mas_a[0][i];
mas_a[0][i] = mas_a[0][4 - 1 - i];
mas_a[0][4 - 1 - i] = temp;
}
}
for(i = 0; i < 4; ++i){
printf("\n");
for(j = 0; j < 4; ++j){
printf("%d\t", mas_a[i][j]);
}
}
return 0;
}
Как сделать проверку по первому символу в строке, чтобы в последующим строка записывалась в обратном порядке.
Ответы (1 шт):
Автор решения: NkL322
→ Ссылка
Вам нужно в цикле использовать условие mas_a[i][0] >= 0. Хорошей практикой является объявление переменных-счётчиков внутри циклов, чтобы не запутаться в коде (у вас i, j, k объявляются в main).
Также, чтобы не дублировать код, можно вывод матрицы выполнять при помощи функции, но это на будущее :)
Переписал вот так:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Rus");
int mas_a[4][4], mas_b[4];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
printf("Введите mas_a[%d][%d] = ", i, j);
scanf("%d", &mas_a[i][j]);
}
}
for (int i = 0; i < 4; i++)
{
printf("\n");
for (int j = 0; j < 4; j++)
{
printf("%d\t", mas_a[i][j]);
}
}
printf("\n\n");
for (int i = 0; i < 4; i++)
{
if (mas_a[i][0] >= 0)
{
// Записываем во временный массив,
// чтобы не потерять данные
for (int j = 0; j < 4; j++)
{
mas_b[j] = mas_a[i][j];
}
// Записываем задом наперёд
for (int j = 0, k = 3; j < 4; j++, k--)
{
mas_a[i][j] = mas_b[k];
}
}
}
printf("\n\n");
for (int i = 0; i < 4; i++)
{
printf("\n");
for (int j = 0; j < 4; j++)
{
printf("%d\t", mas_a[i][j]);
}
}
return 0;
}