Найти первый столбец в котором нет отрицательных элементов, отсортировать элементы столбцов по убыванию - C (СИ)
Формулировка задачи:
Задание такое, найти первый столбец в котором не содержится отрицательных элементов, и еще отсортировать элементы столбцов по убыванию( сортировку я сделал кое как).но вот проблема с нахождением этого столбца, выдает бред какой то.Посмотрите пожалуйста.
#include <stdio.h>
#include <conio.h>
#include <iostream>
void main ()
{
const int str=5;
const int stolb=4;
int i,j;
int massiv[str][stolb];
for (int a = 0; a <str; a++)
{
for (int b = 0; b <stolb; b++)
{
massiv[a][b]=0 + rand() % 20;
}
}
for (i=0; i<str; ++i)
{
for (j=0; j<stolb; ++j)
printf("massiv %d ",massiv[i][j]);
printf ("\n");
}
printf("\n\n");
int kolon = 0;
bool flag;
for (j = 0; j < stolb; j++)
{ // здесь ищем колонки без отрицательных чисел
for (i = 0; i < str-1; i++)
{
if (massiv[i][j] >= 0)
{
flag = true;
continue;
}
else
{
flag = false;
break;
}
}
if (flag)
kolon=i+1 ;
}
if (flag)
printf("Nomer pervogo izstolbcov ne soderzh ni odnogo otric elementa:%d\n", kolon);
else
printf("All columns contains negative numbers.\n\n\n");
int tmp;
for (j = 0; j < stolb; j++) // мотаю цикл столбцов //сортировка по столбцам.строки не трогаю
for (i = 0; i < str-1; i++) // мотаю цикл строк
for (int k = i; k < str; k++) // сортирующий цикл
if (massiv[i][j] > massiv[k][j])
{
tmp = massiv[i][j]; // если одно число больше следующего
massiv[i][j] = massiv[k][j]; // меняю местами
massiv[k][j] = tmp;
}
for (i=0; i<str; ++i)
{ // вывод отсортированного массива
for (j=0; j<stolb; ++j)
printf("massiv %d ",massiv[i][j]);
printf ("\n");
}
}Решение задачи: «Найти первый столбец в котором нет отрицательных элементов, отсортировать элементы столбцов по убыванию»
textual
Листинг программы
if ((flag)&&(k==0))
{
kolon=j+1;
k++;
}
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Проверяется условие ((flag)&&(k==0)). Оно проверяет, что флаг равен true и переменная k равна 0. Это условие контролирует первую итерацию цикла.
- Если условие истинно, то выполняется блок кода внутри фигурных скобок.
- Внутри блока кода:
- Переменная kolon получает значение j+1. То есть, она получает номер следующего столбца, начиная с 1.
- Переменная k увеличивается на 1. Она используется как счетчик и увеличивается на 1 после каждой итерации цикла.
- После выполнения блока кода, цикл продолжается следующей итерацией. Таким образом, данный код находит первый столбец без отрицательных элементов и сохраняет его номер в переменной kolon. Затем, цикл продолжается, чтобы найти следующие столбцы без отрицательных элементов.