Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
 Аватар для Alex911
8 / 8 / 4
Регистрация: 29.04.2010
Сообщений: 82

Транспонировать матрицу и вывести полученную матрицу на экран

21.07.2010, 17:09. Показов 5220. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Построить матрицу размером n на n. Заполнить каждую строку матрицы одинаковыми числами, равными ее номеру, транспонировать матрицу и вывести полученную матрицу на экран. В программе должно быть два уровня ссылок: указатель на строки матрицы и указатель на элементы строк матрицы.
2. Построить матрицу размером n на n. Найти максимальный и минимальный элементы матрицы. В программе должно быть два уровня ссылок: указатель на строки матрицы и указатель на элементы строк матрицы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2010, 17:09
Ответы с готовыми решениями:

Заполнить массив A[NxN] случайными числами. Развернуть матрицу на 180 градусов и полученную матрицу сложить с исходной.
Пожалуйста помогите написать программу. Заполнить массив A случайными числами. Развернуть матрицу на 180 градусов и полученную...

Создать матрицу, транспонировать и вывести обе матрицы на экран
Дана матрица {B}_{i,j}. Создать транспонированную матрицу {A}_{i,j}, вывести обе матрицы на экран.

Ввести матрицу А(n,n)произвольным образом, транспонировать ее. Исходную и транспонированную матрицы вывести на экран монитора
Ввести матрицу А(n,n)произвольным образом, транспонировать ее. Исходную и транспонированную матрицы вывести на экран монитора. Сформировать...

15
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2010, 17:39
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1.
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
uses crt;
{$R-}
const nmax=20;
type
  Tmas=^TTmas;{одна строка матрицы}
  TTmas=array[1..1] of integer;
  Tmatr=^TTmatr;{матрица-массив указателей на строки}
  TTmatr=array[1..1] of Tmas;
var
  a:Tmatr;
  n,i,j:integer;
  x:integer;{буфер для обмена при транспонировании}
begin
clrscr;
repeat
write('Размер матрицы до ',nmax,' n=');
readln(n);
until n in [1..nmax];
getmem(a,sizeof(TTmas)*2*n);{выделяем память под указатели на строки}
{поскольку сортируем в двух циклах, нужно в 2 раза больше памяти}
for i:=1 to n do
getmem(a^[i],sizeof(integer)*n);{для каждой строки память для хранения данных}
writeln ('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a^[i]^[j]:=i;
    write(a^[i]^[j]:4);
   end;
  writeln;
 end;
write('Press Enter...');
readln;
for i:=2 to n do
for j:=1 to i-1 do
 begin
   x:=a^[i]^[j];
   a^[i]^[j]:=a^[j]^[i]; {транспонируем}
   a^[j]^[i]:=x;
  end;
writeln('Транспонированная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a^[i]^[j]:4);
  writeln;
 end;
for i:=1 to n do
freemem(a^[i],sizeof(integer)*n); {освобождаем память в обратном порядке, сначала удалим строки}
freemem(a,sizeof(TTmas)*2*n); {потом указатели на них}
write('Press Enter...');
readln
end.
Добавлено через 8 минут
2.
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses crt;
{$R-}
const nmax=20;
type
  Tmas=^TTmas;
  TTmas=array[1..1] of integer;
  Tmatr=^TTmatr;
  TTmatr=array[1..1] of Tmas;
var
  a:Tmatr;
  n,i,j:integer;
  mx,mn:integer;
begin
clrscr;
randomize;
repeat
write('Размер матрицы до ',nmax,' n=');
readln(n);
until n in [1..nmax];
getmem(a,sizeof(TTmas)*2*n);
for i:=1 to n do
getmem(a^[i],sizeof(integer)*n);
writeln ('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a^[i]^[j]:=random(40)+10;
    write(a^[i]^[j]:4);
   end;
  writeln;
 end;
mx:=a^[1]^[1];mn:=mx;
for i:=1 to n do
for j:=1 to n do
if a^[i]^[j]>mx then mx:=a^[i]^[j]
else if a^[i]^[j]<mn then mn:=a^[i]^[j];
writeln('Максимум=',mx,' минимум=',mn);
for i:=1 to n do
freemem(a^[i],sizeof(integer)*n);
freemem(a,sizeof(TTmas)*2*n);
write('Press Enter...');
readln
end.
0
 Аватар для Alex911
8 / 8 / 4
Регистрация: 29.04.2010
Сообщений: 82
21.07.2010, 17:42  [ТС]
почему и в 1, и во 2 задаче пишет неверное количество фактических параметров?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2010, 17:45
Не знаю, у меня все нормально работает. А неверное количество параметров это обычно пишет при использовании пользовательских подпрограмм, которых здесь вообще нет.
Паскаль какой у вас?
0
 Аватар для Alex911
8 / 8 / 4
Регистрация: 29.04.2010
Сообщений: 82
21.07.2010, 17:47  [ТС]
паскаль АВС версия 3.0.1.35, а какой вы подскажите?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2010, 17:51
Alex911, Если пишете в АВС, залезайте там в справку и разбирайтесь с этим чудом.
Я пишу в Турбо Паскаль 7.0

Добавлено через 2 минуты
Там процедура fremem пишется так
Pascal
1
2
3
for i:=1 to n do
freemem(a^[i]);
freemem(a);
но выдает ошибку выхода за диапазон.
0
 Аватар для Alex911
8 / 8 / 4
Регистрация: 29.04.2010
Сообщений: 82
21.07.2010, 17:56  [ТС]
большое спасибо
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
21.07.2010, 19:22
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно прилепить костыль. Тогда программа будет выглядеть так
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
uses
  Crt;
const
  nmax = 20;
type
  TArr = ^TTArr;
  TTArr = array[1..nmax] of integer;
  TMat= ^TTMat;
  TTmat = array [1..nmax] of TArr;
var
  a: TMat;
  n,i,j: integer;
  mx,mn: integer;
begin
  ClrScr;
  Randomize;
  repeat
    Write('Ðàçìåð ìàòðèöû äî ',nmax,' n=');
    ReadLn(n);
  until
    n in [1..nmax];
  GetMem(a, sizeof(TTArr) * 2 * n);
  for i := 1 to n do
    GetMem(a^[i], SizeOf(integer)*n);
  WriteLn('Èñõîäíàÿ ìàòðèöà:');
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      a^[i]^[j] := random(40) + 10;
      Write(a^[i]^[j]:4);
    end;
    WriteLn;
  end;
  mx := a^[1]^[1];
  mn := mx;
  for i := 1 to n do
    for j := 1 to n do
      if a^[i]^[j] > mx then
        mx:=a^[i]^[j]
      else
        if a^[i]^[j]<mn then
          mn := a^[i]^[j];
  Writeln('Ìàêñèìóì=', mx, ' ìèíèìóì=', mn);
  for i := 1 to n do
    FreeMem(a^[i]);
  FreeMem(a);
  Write('Press Enter...');
  ReadLn
end.
Просто Pascal ABC - это большое недоразумение, пользоваться которым не рекомендуют даже его разработчики.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2010, 19:25
Inadequate, Это я проверял, работает, только при чем тогда динамические массивы и нафиг они тогда нужны..
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
21.07.2010, 19:30
Puporev, в Pascal ABC динамика реализуется через классы IntArray, StringArray, RealArray и ObjectArray модуля Containers.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2010, 19:36
Inadequate, Это я читал. Просто эта задача сформулирована для классического Турбо Паскаля.
С использованием классов уже не нужно выделять память для строк и их элементов.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
21.07.2010, 19:43
Puporev, ну если за него выбрали Pascal ABC пусть либо воспользуется костылями, либо переделает через классы. А если же это он сам решил писать на Pascal ABC, то пусть меняет его, причем чем скорее, тем лучше
0
21.07.2010, 21:36

Не по теме:

Inadequate,

Цитата Сообщение от Inadequate Посмотреть сообщение
Просто Pascal ABC - это большое недоразумение, пользоваться которым не рекомендуют даже его разработчики.
С чего Вы это решили?!
Этот компилятор разрабатывают и дорабатывают на моем факультете, и его подробно изучает одна из специальностей! Так что нет смысла говорить о том, что это недоразумение, и что им не рекомендуют пользоваться!

0
21.07.2010, 23:04

Не по теме:

Цитата Сообщение от Mиxaил Посмотреть сообщение
Так что нет смысла говорить о том, что это недоразумение
Лично я остался о нем не лучшего мнения, поэтому смысл есть и я лишь высказал свою точку зрения, что это полнейшее недоразумение. Я уверен, что найдется огромное количество людей, которые остались о нем такого же мнения как и я.
Цитата Сообщение от Mиxaил Посмотреть сообщение
Этот компилятор разрабатывают и дорабатывают на моем факультете, и его подробно изучает одна из специальностей!
А ты уверен, в том, что написал ? Насколько мне известно, Pascal ABC (без .NET, собственно, которым ТС и пользуется и о котором шла речь) уже как практически 3 года не поддерживается и в нем ничего не дорабатывается, он устарел. Пользоваться Pascal ABC разработчики не рекомендуют, они рекомендуют использовать Pascal ABC.NET. Так что в моих словах нет никаких неточностей.

0
21.07.2010, 23:59

Не по теме:

Inadequate, ну да, разработчики уже давно перешли на платформу .Net, хотя в некоторых комп классах, еще стоят PascalABC , и пререканий пока не вызывает!

0
22.07.2010, 00:17

Не по теме:

Mиxaил, студенты люди подневольные, на чем скажут писать на том и будут. И вот как-то совершенно неудивительно, что никаких пререканий ни у кого не возникает, несмотря на то, что в некоторых ММ-ах до сих пор стоит Pascal ABC. Ну это уже совсем другая история... Не будем продолжать оффтоп.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2010, 00:17
Помогаю со студенческими работами здесь

Транспонировать матрицу 3x3 , заполненную числами в диапазоне -3,5.1,5. Вывести на экран исходную и транспонированную матрицы
Транспонировать матрицу 3 , заполненную числами в диапазоне -3,5..1,5. Вывести на экран исходную и транспонированную матрицы Добавлено...

Заменяемые значения вывести в массив В. Вывести на экран полученную матрицу и массив B.
Помогите пжл. Задана матрица Z(5,5). Если в строке есть хотя бы один нулевой элемент, то найти произведение всех ненулевых элементов,...

Задать матрицу из целых чисел 3х4, вывести на экран, найти максим четный элемент и минимальный нечетный , поменять их местами, вывести новую матрицу
Задать матрицу из целых чисел 3х4, вывести на экран, найти максим четный элемент и минимальный нечетный , поменять их местами, вывести...

Сформировать квадратную матрицу; транспонировать матрицу и инвертировать порядок элементов каждой ее строки
Заданы два одномерных массива одинаковой длины: R и S.Сформировать квадратную матрицу A, каждый элемент которой, что находится в i-той...

Заполнить исходную матрицу случайными числами из диапазона от -50 до 50. Вывести матрицу на экран
Заполнить исходную матрицу случайными числами из диапазона от -50 до 50. Вывыести матрицу на экран. Помогите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru