Аватар для KillJoy
58 / 58 / 29
Регистрация: 21.09.2009
Сообщений: 313
Записей в блоге: 1

Матрица

21.09.2009, 22:09. Показов 1175. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, уважаемые программисты! Помогите написать программку , которая будет заполнять матрицу размером 6x6 рандомными числами от 1 до 36 так, чтобы каждое чисто встречалость только 1 раз!
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.09.2009, 22:09
Ответы с готовыми решениями:

Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.
Ребят,помогите решить задачу "Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной"

Матрица
Дана действительная квадратная матрица порядка n (n - нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на...

матрица
Задана матрица м на н 1. Поменять местами найбольший и наменьший елемент каждой строчки 2. Поменять містами найбольший и найменьший...

17
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
21.09.2009, 22:20
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
 a:array[1..6,1..6] of byte;
 s:set of byte;
 i,j,bt:byte;
begin
s:=[];
randomize;
for i:=1 to 6 do
 for j:=1 to 6 do
  begin
  repeat
  bt:=random(36)+1;
  until not (bt in s);
  s:=s+[bt];
  a[i,j]:=bt;
  end;
end.
0
1862 / 1183 / 191
Регистрация: 27.03.2009
Сообщений: 4,578
21.09.2009, 22:21
это бы могло получится если использовать функции или процедуры для проверки если уже есть такая цифра в матрице
0
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
21.09.2009, 22:24
Цитата Сообщение от unick12345 Посмотреть сообщение
это бы могло получится если использовать функции или процедуры для проверки если уже есть такая цифра в матрице
Зачем? В Паскале есть такая интересная вещь как множества. Один недостаток - только 256 значений хранить в них можно. Да и то - только однобайтных типов.
Просто при записи в матрицу сохранять записываемое значение в множестве и потом следующее сверять с теми, что в множестве. Сей алгоритм и реализован в приведённой мной проге.
0
 Аватар для KillJoy
58 / 58 / 29
Регистрация: 21.09.2009
Сообщений: 313
Записей в блоге: 1
21.09.2009, 22:36  [ТС]
Чето не работает! Иля я чето не понимаю...
Миниатюры
Матрица  
0
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
21.09.2009, 22:41
Цитата Сообщение от KillJoy Посмотреть сообщение
Чето не работает! Иля я чето не понимаю...
TMT Pascal Light 3.90 - работает идеально.

А в чём заключается "неработа"? Что на экране ничего нету? Так и не должно быть. Я писал программу вот по этому заданию:
написать программку , которая будет заполнять матрицу размером 6x6 рандомными числами от 1 до 36 так, чтобы каждое чисто встречалость только 1 раз!
Ни слова про вывод на экран.
Я сделал вывод что эта часть либо уже сделана Вами самостоятельно либо не требуется.
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
21.09.2009, 22:43
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Один недостаток - только 256 значений хранить в них можно. Да и то - только однобайтных типов.
Легко устраняется заменой множества на линейный массив, чуть длиннее запись проверки только.
0
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
21.09.2009, 22:47
Цитата Сообщение от Puporev Посмотреть сообщение
Легко устраняется заменой множества на линейный массив, чуть длиннее запись проверки только.
Имхо, для данной задачи (в первом посте) множества подходят идеально. А так - согласен. Правда, тогда нужно добавлять ещё одно значение, которое будет сообщать что данная ячейка массива пуста.
От этого недостатка свободен способ, при котором используется связный список. Хотя он несколько сложнее и требует большего количества памяти.
0
 Аватар для KillJoy
58 / 58 / 29
Регистрация: 21.09.2009
Сообщений: 313
Записей в блоге: 1
21.09.2009, 22:48  [ТС]
А вы можете еще написать часть программы, которая будет это все выводить на экран???Плз!!!
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
21.09.2009, 22:51
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Правда, тогда нужно добавлять ещё одно значение, которое будет сообщать что данная ячейка массива пуста.
Не нужно.
Вот пример
Pascal
1
2
3
4
5
6
7
8
9
10
11
for i := 1 to n do
  begin
    repeat
      f:=false;
      x:=Random(n+1);
      for j:=1 to m do
      if a[j]=x then f:=true;
    until f=false;
    a[i]:=x;
    m:=m+1;
  end;
0
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
21.09.2009, 23:02
Цитата Сообщение от Puporev Посмотреть сообщение
Не нужно.
Вот пример
Pascal
1
2
3
4
5
6
7
8
9
10
11
for i := 1 to n do
  begin
    repeat
      f:=false;
      x:=Random(n+1);
      for j:=1 to m do
      if a[j]=x then f:=true;
    until f=false;
    a[i]:=x;
    m:=m+1;
  end;
Тоже вариант. Тут вместо отметки пустой ячейки используется маркер длины заполненого пространства массива.

Однако, Random(n+1) будет генерировать от 0 до n, а в задании просили от 1.

Добавлено через 1 минуту
Цитата Сообщение от KillJoy Посмотреть сообщение
А вы можете еще написать часть программы, которая будет это все выводить на экран???Плз!!!
Например так (дописать перед послединим "end" моей программы):
Pascal
1
2
3
4
5
6
for i:=1 to 6 do
 begin
 for j:=1 to 6 do write(a[i,j],' ');
 writeln;
 end;
readln;
1
 Аватар для KillJoy
58 / 58 / 29
Регистрация: 21.09.2009
Сообщений: 313
Записей в блоге: 1
21.09.2009, 23:07  [ТС]
Все! Спасибо! Заработало!
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2009, 07:56
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Однако, Random(n+1) будет генерировать от 0 до n, а в задании просили от 1.
Так я просто для примера кусок кода из программы выдернул, у Вас же программа нормально написана. Когда не оговорен диапазон чисел я тоже использую тип byte и множества.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
22.09.2009, 08:40
честно говоря я бы предложил другой способ, но хотя у каждого способа есть свои плюсы и минусы
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2009, 09:16
mamedovvms, Давай выкладывай! Интересно же!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
22.09.2009, 09:37
ну то есть я как понимаю главное что бы числа шли не по порядку
но вот что мне не нравится в том коде с проверкой массива так это то что последнее число пока выпадит то можно ждать очень долго тем более что если будет очень большое количество чисел, так вот я бы предложил создать массив как и предыдущий(например массив temp), забить в него все числа от 1 до 32 , а потом уже рендомом брать номер элемента(тоесть
Pascal
1
temp[random(k-i)+1]
), и присваивать этот элемент в тот массив который нужно(
Pascal
1
a[i]:=temp[random(k-i)+1]
), затем удалять этот элемент из массива, таким образо у нас будут выбираться только те числа которых еще нет в нашем массиве
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2009, 09:42
Цитата Сообщение от mamedovvms Посмотреть сообщение
затем удалять этот элемент из массива, таким образо у нас будут выбираться только те числа которых еще нет в нашем массиве
Тоже вариант. Только удаление элемента из массива, особенно большого тоже вещь не дешевая. Каждый раз делать сдвиг массива, уменьшать его размер. Хотя может это и быстрее, искать не нужно.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
22.09.2009, 09:47
да я понимаю что удаление не дешево обойдется, но каждый делать проверку даже при 200 элементов, когда тебе надо найти последний 201 то тоже как то не дешево я думаю обходится, ну а вообще решать тому кому нужна подобная задача)))))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2009, 09:47
Помогаю со студенческими работами здесь

Матрица
Если в заданной матрице A(N, N) есть хотя бы один элемент, больший ста, то элементы обеих диагоналей замените нулями. Как...

Матрица
Дана матрица B, N=5 M=3. Ввести элементы матрицы с клавиатуры. Оперделить минимальные и максимальные элементы каждой строки и поменять их...

Матрица
Пусть дана действительная матрица размером n x m. Требуется преобразовать матрицу следующим образом: поэлементарно вычесть последнюю строку...

Матрица
Составить программу, которая создает и выводит на экран массив такого вида: 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 ...

Матрица
Помогите !!! Пожалуйста написать программу ... ни как не могу вехать в задание, для меня чот сложновато. Дана матрица А{ai,j}, где...


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

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

Новые блоги и статьи
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования. . . .
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
Максимальная производительность C#: Векторизация (SIMD)
stackOverflow 20.04.2025
Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .
Максимальная производительность C#: Процессорный кэш
stackOverflow 20.04.2025
Знакомство с внутренним устройством процессорного кэша — ключевой шаг в написании по-настоящему быстрого кода на C#. Этот слой архитектуры компьютера часто ускользает от внимания разработчиков, но. . .
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru