Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 26.04.2022
Сообщений: 8

Заполнение элементов двумерного массива единицами

17.11.2022, 20:49. Показов 589. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать двумерный динамический массив из целых чисел размера (2х3). Заполнить его произвольными числами. Вывести его на экран. Изменить размер массива на (3х4). Заполнить добавленные ячейки единицами. Снова вывести массив на экран.

В задании запрещено использовать циклы!

Проблема возникла с заполнением "новых" ячеек массива единицами. Пытался использовать .col.fill, но результата никакого не дает Есть какие-то ещё варианты?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
type matrix = array [,] of integer;
 
begin
  var a : matrix;
  a := new integer[2, 3];
  a.FillRandom(-5, 5);
  a.Print(5);
  println();
  setlength(a, 3, 4);
  a.col(3).Fill(1);
  a.Row(2).Fill(1);
  a.Print(5);
end.
Добавлено через 4 минуты

Не по теме:

Я не понимаю, почему нигде нет более менее подробной документации по методам в паскале. Пытался найти их для подобной задачи, но гугл выдает типичные сайты с лекциями по "двумерным массивам" и т.п., где нет нужной мне информации

0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2022, 20:49
Ответы с готовыми решениями:

Не работает заполнение двумерного массива с клавиатуры
Здравствуйте! Считываю двумерный массив с клавиатуры var a: array of string; x, y, curx, cury: integer; begin read(x,...

Заполнение двумерного массива последовательными числами ЗИГЗАГОМ
Такого типа: 1 2 3 4 8 7 6 5 9 10 11 12

Поиск элементов в файле и заполнение двумерного массива
Добрый день, уважаемые посетители этого раздела. Нужен дельный совет в написании программы на Паскаль. Условия задачи: 1)Дан файл...

8
 Аватар для XzzzX
405 / 280 / 120
Регистрация: 09.07.2021
Сообщений: 1,016
Записей в блоге: 1
17.11.2022, 21:33
Цитата Сообщение от hennssy Посмотреть сообщение
a.col(3).Fill(1);
a.Row(2).Fill(1);
.Col() как и .Row() являются функциями, то есть возвращают столбец или строку в виде ОТДЕЛЬНОГО массива, а не предоставляют доступ к существующему.

То, что Вы хотите, проще всего будет сделать обычными циклами.
Pascal
for var i:= 0 to a.RowCount - 1 do
  a[i, 3]:= 1;
for var i:= 0 to a.ColCount - 1 do
  a[2, i]:= 1;

Цитата Сообщение от hennssy Посмотреть сообщение
нет более менее подробной документации по методам в паскале
документации по методам решения школьных задач?

Добавлено через 8 минут
Цитата Сообщение от hennssy Посмотреть сообщение
В задании запрещено использовать циклы!
а, выпустил из вида, извиняюсь
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
17.11.2022, 21:37
Цитата Сообщение от hennssy Посмотреть сообщение
но гугл выдает
Так а почему вы используете гугл вместо официальной документации?

Вы можете поставить курсор на интересующее вас имя и нажать F1, чтобы открыть соответствующую страницу справки.
Ну, в случае .Col вам покажет только то же описание, что вы видите по наведению мышки.

Что полезнее в данном случае - так это Ctrl+тык, позволяющий быстро прыгать между описанием и реализацией имени.

---

Цитата Сообщение от hennssy Посмотреть сообщение
.col.fill, но результата никакого не дает
Массив представляет свою собственную область памяти. Он не может ссылаться на кусок другого массива.
Чтобы представлять вид на кусок массива нужен отдельный тип, как запись System.ArraySegment<ТипЭлементов> в случае одномерных массивов (для двухмерных придётся написать свою запись).

Вы можете использовать или
Pascal
1
a.SetCol(3, |1|*3);
Но это менее эффективно, потому что создаётся 2 лишних массива:
1. Содержит одну единицу
2. Содержит три единицы
А память для них выделяет в куче...

Если важна эффективность по памяти и скорости - используйте for.
Цитата Сообщение от hennssy Посмотреть сообщение
запрещено использовать циклы
Ну а раз задание состоит в том, чтобы пофлексить, а не написать что-то адекватное:
Pascal
1
a.RowCount.Times.ForEach(i->(a[i,3]:=1));
Или сразу для строки и столбца:
Pascal
1
a.Transform((x,row,col)->(row=2)or(col=3)?1:x);
---

Цитата Сообщение от hennssy Посмотреть сообщение
type matrix =
Зачем?
Цитата Сообщение от hennssy Посмотреть сообщение
Pascal
1
2
  var a : matrix;
  a := new integer[2, 3];
Не разрывайте описание и первое присвоение, кроме самой крайней необходимости
Pascal
1
  var a := new integer[2, 3];
1
 Аватар для XzzzX
405 / 280 / 120
Регистрация: 09.07.2021
Сообщений: 1,016
Записей в блоге: 1
17.11.2022, 21:42
Цитата Сообщение от Sun Serega Посмотреть сообщение
1. Содержит одну единицу
2. Содержит три единицы
Этот момент можно оптимизировать так
Pascal
a.SetCol( 3, ArrFill(3, 1) );
или даже так
Pascal
a.SetCol( 3, SeqFill(3, 1) );
0
100 / 74 / 21
Регистрация: 12.04.2017
Сообщений: 269
18.11.2022, 11:15
Pascal
1
2
3
4
5
6
7
##
var a := MatrRandom(2, 3, 10, 99);
a.Println(3);
Writeln;
SetLength(a, 3, 4);
a.Transform(v -> v = 0 ? 1 : v);
a.Println(3);
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
18.11.2022, 11:23
У вас .Transform неявно привязан к первой строчке.
С границами рандома что задавал ТС работать будет криво, но при этом ошибку не выдаст.
Это не лучше чем свалка var до begin - так же провоцирует ошибки по глупости.
0
100 / 74 / 21
Регистрация: 12.04.2017
Сообщений: 269
18.11.2022, 12:01
Что значит "неявно привязан"?
Откуда следует, что будет работать криво?
Миниатюры
Заполнение элементов двумерного массива единицами  
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
18.11.2022, 12:05
Я сказал
Цитата Сообщение от Sun Serega Посмотреть сообщение
С границами рандома что задавал ТС
Цитата Сообщение от hennssy Посмотреть сообщение
a.FillRandom(-5, 5);
Добавлено через 1 минуту
Цитата Сообщение от Alvico Посмотреть сообщение
Что значит "неявно привязан"?
Я имею в виду что можно поменять одну часть программы (к примеру чтобы нули были валидными значениями в матрице) и вдруг станет криво работать другая (эти нули заменит единицами, даже если они не скраю) - хотя эти части программы не должны быть логически связаны.
0
100 / 74 / 21
Регистрация: 12.04.2017
Сообщений: 269
18.11.2022, 12:35
Лучший ответ Сообщение было отмечено hennssy как решение

Решение

У ТС изначально сказано следующее:
Создать двумерный динамический массив из целых чисел размера (2х3). Заполнить его произвольными числами. Вывести его на экран. Изменить размер массива на (3х4). Заполнить добавленные ячейки единицами. Снова вывести массив на экран.
Это уже он в своем примере взял границы [-5;5] - в условии об этом ни слова. Считаю, что в этих условиях глупо писать программу, рассчитанную на работу со случайными числами от минус до плюс бесконечности. Если Вы имели в виду, что нули могут изначально присутствовать в матрице - так и пишите, зачем это туманное ".Transform неявно привязан к первой строке"?

Но если все же хочется нули сохранить, можно иначе написать:
Pascal
1
2
3
4
5
6
7
8
9
10
11
##
var (m1, n1) := (2, 3);
var (m2, n2) := (3, 4);
var (p, q) := (-5, 5);
var w := Max(p.ToString.Length, q.ToString.Length) + 1;
var a := MatrRandom(m1, n1, p, q);
a.Println(w);
Writeln;
SetLength(a, m2, n2);
a.Transform((v, i, j) -> (i >= m1) or (j >= n1) ? 1 : v);
a.Println(w)
Задача одноразовая, не нужно из нее делать универсальное решение на всю оставшуюся жизнь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2022, 12:35
Помогаю со студенческими работами здесь

Элементы двумерного массива заполнить нулями и единицами
Условие: элементы двумерного массива заполнить нулями и единицами так, чтобы единицы стояли в массиве образуя букву Т, а в остальных нули ...

Заполнение массива нулями и единицами в шахматном порядке
3. Составьте программу заполнения массива А нулями и единицами в шахматном порядке. Пожалуйста помогите с заданиями, заранее...

Ввод вывод двумерного массива, и заменить половину главной диагонали нулями, вторую половину единицами
Ввод вывод двумерного массива, и заменить половину главной диагонали нулями, вторую половину единицами. Я знаю только как заменить ВСЮ...

Заполнение двумерного массива
процедура ввода задана случайными цифрами, написать программу, которая заполняет двумерный массив

Заполнение двумерного массива
Заполнить: 1. Двумерный массив 9х9 результатами таблицы умножения. 2. Матрицу размера N*N (N=4) таким образом: {1 2 3 4} {2...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru