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

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

21.07.2010, 17:09. Показов 5196. Ответов 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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru