0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 24

Вставить столбец из 0 после всех столбцов, в которых содержится максимум матрицы

30.10.2015, 21:35. Показов 1256. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вставить столбец из 0 после всех столбцов, в которых содержится максимальный элемент.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2015, 21:35
Ответы с готовыми решениями:

Вставить после всех столбцов, содержащих максимальные элементы, пустой столбец
Помогите, пожалуйста. Нужна программа , которая вставляет после всех столбцов, содержащих максимальные элементы, пустой столбец.

Двумерный массив: Вставить после столбцов, содержащих минимальное значение второй столбец
Помогите решить задание: Дан двумерный динамический массив, Вставить после столбцов, содержащих минимальное значение второй столбец. ...

После столбца матрицы с номером K вставить столбец из единиц
Здравствуйте. Помогите написать программу в StringGrig. Дана матрица MxN и целое число K (1<K<N). После столбца матрицы с номером...

9
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 24
30.10.2015, 21:36  [ТС]
Попытался написать код. Идея , вроде, правильная. Но есть проблемы с написанием кода, помогите исправить.
Вложения
Тип файла: rar столб.rar (237.7 Кб, 7 просмотров)
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,157
Записей в блоге: 3
30.10.2015, 21:51
в процедуре
Delphi
1
procedure TForm4.Button1Click(Sender: TObject);          // Создаем массив
после строки
Delphi
1
a[i,j]:=RandomRange(-20,50);
дальше какой-то бред

вы хотя бы begin\end расставьте правильно

в процедуре
Delphi
1
procedure TForm4.Button2Click(Sender: TObject);
самая первая строка
Delphi
1
max:=a[1,1] ;
хотя массив вы заполняете с нуля

далее вы решаете одновременно двигать и грид и массив, а зачем?
передвинули грид визуально, пробежались по нему и сохранили данные в массив

куча лишних переменных
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 24
31.10.2015, 10:14  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
в процедуре
Delphi
1
procedure TForm4.Button1Click(Sender: TObject);          // Создаем массив
после строки
Delphi
1
a[i,j]:=RandomRange(-20,50);
дальше какой-то бред
В заполнении и выводе массива нет никаких ошибок, это точно,.
Цитата Сообщение от qwertehok Посмотреть сообщение
далее вы решаете одновременно двигать и грид и массив, а зачем?
Где я двигаю грид, по вашему?
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,157
Записей в блоге: 3
31.10.2015, 10:16
ilya1995, я уже удалил ваш пример

в заполнении ошибок нет. а вот дальше идет какой то бред
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 24
31.10.2015, 10:20  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
max:=a[0,0] ;
  for I:=0 to n-1 do
         for J:=0 to m-1 do
         if a[i,j]>max then max:= a[i,j];
         edit3.Text:=inttostr(max);// Вывели максимальный элемент (просто чтобы знать)
 
         for I:=0 to n-1 do   begin
         for J:=0 to m-1 do   begin
            if a[i,j]=max then begin // равен ли элемента максимумальному
                       d:=j; //запоминаем столбец
                       stringgrid1.colcount:= stringgrid1.colcount+1;
                      m:= stringgrid1.colcount; //увеличили количество стобцов в матрице
                      for i:=n-1 downto 0 do
                       for Q:=m-1 downto d+1 do
                       a[i,q]:=a[i,q-1];//перемещаем все элементы столбца на позицию вправо
                       for i:=0 to n-1 do  // обнуляем столбец, стоящей после столбца с максимальным значением
                       a[i,d+1]:=0;
 
         end;
 
         end;
         end;
Подскажите, как исправить, пожуалуйста. Сегодня отправить уже надо задание.
0
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,157
Записей в блоге: 3
31.10.2015, 11:07
Заполняем грид, одновременно ищем максимальный. он у нас в глобальных переменных, поэтому будет виден по всей программе.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
  randomize;
  max:=0;
  for I:=0 to sg.ColCount-1 do
  for j:=0 to sg.RowCount-1 do
    begin
      sg.Cells[i,j]:=inttostr(random(50));
      if max<strtoint(sg.Cells[i,j]) then max:=strtoint(sg.Cells[i,j]);
    end;
end;
Процедура которая переносит колонки и заполняет нулями
Delphi
1
2
3
4
5
6
7
8
Procedure GridAddColumn(StrGrid: TStringGrid; NewColumn: Integer);
Var Column,i: Integer;
begin
  StrGrid.ColCount := StrGrid.ColCount+1;
  For Column := StrGrid.ColCount-1 downto NewColumn do 
    StrGrid.Cols[Column].Assign(StrGrid.Cols[Column-1]);
  for I := 0 to StrGrid.RowCount-1 do StrGrid.Cells[NewColumn-1,i]:='0';
end;
Перебираем грид, ищем максимальный и вызываем функцию
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
  for I:=0 to sg.ColCount-1 do
  for j:=0 to sg.RowCount-1 do
    begin
      if strtoint(sg.Cells[i,j])=max then
      begin
        GridAddColumn(sg,i+2);
      end;
    end;
end;
Остался один минус - если в столбце будет несколько максимальных добавится несколько столбцов с нулями

ЗЫ ну и твоя работа - из грида заполнить массив
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.10.2015, 11:09
Лучший ответ Сообщение было отмечено ilya1995 как решение

Решение

Если хотите вставить столбцы в той же таблице где создается матрица, то посмотрите эту тему
Вставить после всех столбцов, содержащих максимальные элементы, пустой столбец
только там столбцы пустые, а Вы их заполните нолями.
А если нужно вставить именно в матрицу, то Вам нужно 2 таблицы, одна для исходной матрицы, вторая для преобразованной.
1
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 24
31.10.2015, 16:19  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.Button2Click(Sender: TObject);
var i,j,mx,k,d:integer;
begin
mx:=a[0,0];
for i:=0 to m-1 do
for j:=0 to n-1 do
if a[i,j]>mx then mx:=a[i,j];
d:=1;
for j:=0 to n-1 do
 begin
  k:=0;
  i:=0;
  while(i<m)and(k=0) do
  if a[i,j]=mx then k:=1
  else inc(i);
  if k=1 then
   begin
    inc(d);
    StringGrid1.ColCount:=StringGrid1.ColCount+1;
    for i:=StringGrid1.ColCount-1 downto j+d do
    StringGrid1.Cols[i].Text:=StringGrid1.Cols[i-1].Text;
    StringGrid1.Cols[j+d-1].Clear;
   end;
 end;
Edit3.Text:='Максимальный = '+IntToStr(mx);
end;
Спасибо за ссылку. Подскажите, какую роль здесь играет переменная d
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
31.10.2015, 18:00
Цитата Сообщение от ilya1995 Посмотреть сообщение
какую роль здесь играет переменная d
Это счетчик добавляемых столбцов в таблицу.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2015, 18:00
Помогаю со студенческими работами здесь

Поэлементно вычесть k-й столбец матрицы из всех столбцов, кроме него самого. После чего удалить k-й столбец
Пусть дана действительная матрица размером n*m. Требуется преобразовать матрицу: поэлементно вычесть k-й столбец из всех столбцов, кроме...

Вставить после столбцов матрицы с максимальными элементами столбец из нулей
дан двумерный массив размером nxm, заполненный случайным образом. Вставить после столбцов с максимальными элементами столбец из нулей. 1...

Вставьте первый столбец после всех столбцов, в которых есть отрицательные элементы.
Дан двумерный массив. Вставьте первый столбец после всех столбцов, в которых есть отрицательные элементы. (С помощью процедур).

Вставить после всех столбцов в которых есть заданное число последний
Дан массив b (m*n). Элементы вводятся в программе. Вставить после всех столбцов в которых есть заданное число А, последний столбец.

Добавить вектор-столбец после всех столбцов, элементы которых образуют убывающую последовательность
Динамический двумерный массив, заполнить случайными числами и добавить вектор-столбец после всех столбцов, элементы которых образуют...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru