Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2019, 18:06   #1
ALINA787
 
Регистрация: 24.10.2019
Сообщений: 9
По умолчанию определить столбец с наименьшим количеством нечетных элементов;

определить столбец с наименьшим количеством нечетных элементов;
И желательно было бы закрасить этот столбец а не выводить его номер
ALINA787 вне форума Ответить с цитированием
Старый 24.10.2019, 21:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как посчитать нечётные элементы в столбце, надеюсь, проблем нет?

матрицу лучше всего выводить в StringGrid

а вот так его можно расскрасить:

https://www.programmersforum.ru/show...6&postcount=10

https://www.programmersforum.ru/showthread.php?t=272172

https://www.programmersforum.ru/show....php?p=1639129
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.10.2019, 17:53   #3
ALINA787
 
Регистрация: 24.10.2019
Сообщений: 9
По умолчанию

есть проблема сравнения с другими столбцами значения
ALINA787 вне форума Ответить с цитированием
Старый 27.10.2019, 20:19   #4
ALINA787
 
Регистрация: 24.10.2019
Сообщений: 9
По умолчанию

Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var sum,s,tru:integer;
 b:array of array of integer;
begin
 for i:=1 to m do
    begin
      sum:=0;k:=0;
      for j:=1 to n do
        begin
          s:=mas[j,i] mod 2;
          if s<>0 then
              begin

                inc (k);
              end;
        end;
    b[i]:=k;
    end;
    tru:=0;
for i:=1 to m do
begin
  if b[i]<=b[i-1] then
   Memo1.Lines.Add('столбец с наименьшим количеством нечетных элементов'+inttostr(b[i]));
end;
end;
но не запускается выскакивает ошибка возле b[i]:=k;

______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 28.10.2019 в 09:24.
ALINA787 вне форума Ответить с цитированием
Старый 28.10.2019, 09:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ALINA787 Посмотреть сообщение
о не запускается выскакивает ошибка возле b[i]:=k;
ещё бы!

для начала - формальности.
массив B
Цитата:
Сообщение от ALINA787 Посмотреть сообщение
Код:
b:array of array of integer;
описан у Вас как ДВУХМЕРНЫЙ, поэтому компилятор не пропускает 1 индекс (должно быть обращение B[1,2])
это раз.
второе, динамический массив, перед тем, как использовать, нужно иницилизировать - выделить ему память через SetLength()

но это всё детали.
главное, для чего Вам вообще нужен этот массив B ?

чтобы найти столбец с наименьшим количеством нечетных дополнительный массив ВООБЩЕ не нужен:
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var i,j, 
   count_odd, min_count, column_with_min:integer;
begin
 min_count := MaxInt;
 column_with_min := 0;
 for j:=1 to m do
    begin
      count_odd := 0;   
      for i:=1 to n do
        begin
          {если нечётное, то } 
          if odd(mas[i,j]) then 
                 {вместо Odd() можно и по старинке if mas[i,j] mod 2<>0 then }  
                Inc(count_odd);
        end;
      if count_odd<min_count then begin 
          {нашли новый столбец с меньшим, чем было, количеством нечётных, запомним его}
          min_count := count_odd;
          column_with_min := j;
      end;
    end; {<-- конец поиска столбца с минимальным количеством}

   Memo1.Lines.Add('столбец с наименьшим количеством нечетных элементов № '+IntToStr(column_with_min)+
                    ' содержит '+IntToStr(min_count)+' нечётных элементов.');
end;

впрочем, массив может потребоваться, если таких столбцов несколько и нужно их все найти.
тогда можно так:
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
var i,j, 
   min_count : integer;
   b : array of integer;
begin
 SetLength(b, m); 
 min_count := MaxInt;
 for j:=1 to m do
    begin
      B[j-1] := 0;   {нумерация в динамических массивах от нуля}
      for i:=1 to n do
          if odd(mas[i,j]) then {если нечётное, то } 
                 Inc(B[j-1]);
      if B[j-1]<min_count then min_count:=B[j-1];
    end; {<-- конец подсчёта количества нечётных в каждом столбце}


  {вывод}
  for j:=1 to m do
    if B[j-1] = min_count then
       Memo1.Lines.Add('столбец с наименьшим количеством нечетных элементов № '+IntToStr(j)+
                      ' содержит '+IntToStr(min_count)+' нечётных элементов.');
end;

p.s. код набросал примерный, не проверял. могут быть опечатки и мелкие ошибки.

Последний раз редактировалось Serge_Bliznykov; 28.10.2019 в 09:48.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2019, 09:50   #6
ALINA787
 
Регистрация: 24.10.2019
Сообщений: 9
По умолчанию

Я тогда не понимаю как без доп массива определить сьольец
ALINA787 вне форума Ответить с цитированием
Старый 28.10.2019, 09:55   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ALINA787 Посмотреть сообщение
Я тогда не понимаю как без доп массива определить сьольец
что определить, простите?
"Столбец" ?

я выше написал два примера кода. Попробуйте в них разобраться.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите с задачкой: В квадратной матрице определить сумму элементов нечетных столбцов Skobka Паскаль, Turbo Pascal, PascalABC.NET 5 24.04.2015 20:37
Правильность программы ( Найти номер столбца массива с наименьшим кол-вом нечетных элементов). C++ tisit Помощь студентам 3 05.04.2015 16:19
Определить в двумерном массиве числа, равные наименьшим значениям элементов строк Chopper Помощь студентам 14 28.12.2012 01:33
заданной прямоугольной матрице поставить на первое место столбец с наименьшим количеством нулевых элементов (Паскаль, Фортран) HuBuDuMkA Помощь студентам 0 21.12.2011 22:37
В массиве G(6;8) определить номер столбца с наименьшим количеством нулей. Катюня Помощь студентам 2 21.01.2009 06:26