Найти первый столбец в котором нет отрицательных элементов, отсортировать элементы столбцов по убыванию - 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++;                
            }

Объяснение кода листинга программы

В данном коде выполняется следующая последовательность действий:

  1. Проверяется условие ((flag)&&(k==0)). Оно проверяет, что флаг равен true и переменная k равна 0. Это условие контролирует первую итерацию цикла.
  2. Если условие истинно, то выполняется блок кода внутри фигурных скобок.
  3. Внутри блока кода:
    • Переменная kolon получает значение j+1. То есть, она получает номер следующего столбца, начиная с 1.
    • Переменная k увеличивается на 1. Она используется как счетчик и увеличивается на 1 после каждой итерации цикла.
  4. После выполнения блока кода, цикл продолжается следующей итерацией. Таким образом, данный код находит первый столбец без отрицательных элементов и сохраняет его номер в переменной kolon. Затем, цикл продолжается, чтобы найти следующие столбцы без отрицательных элементов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.833 из 5
Похожие ответы