С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 65

Матрицы и массивы

19.11.2018, 19:08. Показов 1960. Ответов 5
Метки нет (Все метки)

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

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

Матрицы и массивы
Помогите решить это задание п.п. 5.18 Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Тема закрыта.

Массивы и матрицы
Ребята помогите пожалуста. Вывести в центр экрана массив из 5 строк и 3 столбцов в виде матрицы.Все элементы должны вводится через два...

5
Модератор
10376 / 5664 / 3398
Регистрация: 17.08.2012
Сообщений: 17,303
19.11.2018, 22:07
Лучший ответ Сообщение было отмечено дед хасан как решение

Решение

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const
  imax = 9;
 
type
  vector = array[1..imax] of real;
  matrix = array[1..imax] of vector;
 
procedure inp_size(s: string; var x: integer; k: integer);
begin
  repeat
    write(s + ' [1..', k, ']: ');
    readln(x)
  until x in [1..k]
end;
 
procedure out_mat(s: string; const x: matrix; m, n: integer);
var i, j: integer;
begin
  writeln(s);
  for i := 1 to m do
    begin
      for j := 1 to n do write(' ', x[i, j]:9);
      writeln
    end;
  write('Нажмите <Enter>');
  readln
end;
 
procedure swap_col(var x: matrix; f, s, n: integer);
var i: integer;
    t: real;
begin
  for i := 1 to n do
    begin
      t := x[i, f];
      x[i, f] := x[i, s];
      x[i, s] := t
    end
end;
 
var
  mat: matrix;
  vec: vector;
  m, n, i, j, k, t, p, min: integer;
 
begin
  inp_size('Количество строк', m, imax);
  inp_size('Количество столбцов', n, imax);
  writeln('Введите элементы мтрицы:');
  for i := 1 to m do
    for j := 1 to n do
      begin
        write('mat[', i, ', ', j, '] = ');
        readln(mat[i, j])
      end;
  out_mat('Исходная матрица:', mat, m, n);
  k := 0;
  for j := 1 to n do
    for i := 1 to m do
      if mat[i, j] < 0
        then begin
          inc(k);
          vec[k] := mat[i, j];
          break
        end;
  if k > 0
    then begin
      min := 1;
      writeln('Вектор:');
      for i := 1 to k do
        begin
          write(' ', vec[i]:9);
          if vec[i] < vec[min] then min := i
        end;
      writeln;
      writeln('Индекс минимального элемента вектора: ', min)
      for i := 1 to m do
        for j := 1 to n do
          mat[i, j] := mat[i, j] * min;
      out_mat('Преобразованная матрица:', mat, m, n)
    end
    else writeln('Матрица не содержит отрицательных элементов.');
  writeln('Введите номера столбцов, которые нужно обменять:');
  inp_size('Первый столбец', t, m);
  inp_size('Второй столбец', p, m);
  swap_col(mat, t, p, n);
  out_mat('Преобразованная матрица:', mat, m, n)
end.
1
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 65
19.11.2018, 22:29  [ТС]
Большое спасибо, за помощь!
0
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 65
20.11.2018, 00: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
var
  mat: matrix;
  vec: vector;
  m, n, i, j, k, t, p, min: integer;
 
begin
  inp_size('Количество строк', m, imax);
  inp_size('Количество столбцов', n, imax);
  writeln('Введите элементы мтрицы:');
  for i := 1 to m do                                  // ПРОЦЕДУРА1
    for j := 1 to n do
      begin
        write('mat[', i, ', ', j, '] = ');
        readln(mat[i, j])
      end;                                                   //
  out_mat('Исходная матрица:', mat, m, n);
  k := 0;                                                 //ПРОЦЕДУРА 2 
  for j := 1 to n do
    for i := 1 to m do
      if mat[i, j] < 0
        then begin
          inc(k);
          vec[k] := mat[i, j];
          break
        end;
  if k > 0
    then begin
      min := 1;
      writeln('Вектор:');
      for i := 1 to k do
        begin
          write(' ', vec[i]:9);
          if vec[i] < vec[min] then min := i
        end;
      writeln;
      writeln('Индекс минимального элемента вектора: ', min) //
      for i := 1 to m do                                                              // ПРОЦЕДУРА 3
        for j := 1 to n do
          mat[i, j] := mat[i, j] * min;
      out_mat('Преобразованная матрица:', mat, m, n)
    end                                                                                        //
    else writeln('Матрица не содержит отрицательных элементов.');
  writeln('Введите номера столбцов, которые нужно обменять:');
  inp_size('Первый столбец', t, m);
  inp_size('Второй столбец', p, m);
  swap_col(mat, t, p, n);
  out_mat('Преобразованная матрица:', mat, m, n)
end.
0
Модератор
10376 / 5664 / 3398
Регистрация: 17.08.2012
Сообщений: 17,303
21.11.2018, 07:46
Лучший ответ Сообщение было отмечено дед хасан как решение

Решение

дед хасан, я правильно понимаю, что в основной программе нужно оставить только вызовы подпрограмм? Не вопрос, доведём программу до абсурда (ибо незачем оформлять в виде подпрограммы то, что выполняется только один раз).
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
const
  imax = 9;
 
type
  vector = array[1..imax] of real;
  matrix = array[1..imax] of vector;
 
procedure inp_size(s: string; var x: integer; k: integer);
begin
  repeat
    write(s + ' [1..', k, ']: ');
    readln(x)
  until x in [1..k]
end;
 
procedure inp_col(var x, y: integer; t: integer);
begin
  writeln('Введите номера столбцов, которые нужно обменять:');
  inp_size('Первый столбец', x, t);
  inp_size('Второй столбец', y, t)
end;
 
procedure inp_mat(var x: matrix; m, n: integer);
var i, j: integer;
begin
  writeln('Введите элементы матрицы:');
  for i := 1 to m do
    for j := 1 to n do
      begin
        write('mat[', i, ', ', j, '] = ');
        readln(x[i, j])
      end
end;
 
procedure out_mat(s: string; const x: matrix; m, n: integer);
var i, j: integer;
begin
  writeln(s);
  for i := 1 to m do
    begin
      for j := 1 to n do write(' ', x[i, j]:9);
      writeln
    end;
  write('Нажмите <Enter>');
  readln
end;
 
procedure mul_mat(var x: matrix; m, n, t: integer);
var i, j: integer;
begin
  for i := 1 to m do
    for j := 1 to n do
      x[i, j] := x[i, j] * t
end;
 
procedure gen_vec(const x: matrix; var y: vector; m, n: integer; var t: integer);
var i, j: integer;
begin
  t := 0;
  for j := 1 to n do
    for i := 1 to m do
      if x[i, j] < 0
        then begin
          inc(t);
          y[t] := x[i, j];
          break
        end
end;
 
procedure out_vec(const y: vector; k: integer);
var i: integer;
begin
  writeln('Вектор:');
  for i := 1 to k do write(' ', y[i]:9);
  writeln
end;
 
procedure search_imin(const y: vector; k: integer; var imin: integer);
var i: integer;
begin
  imin := 1;
  for i := 1 to k do if y[i] < y[imin] then imin := i
end;
 
procedure change_mat(var x: matrix; const y: vector; m, n, k: integer);
var min: integer;
begin
  if k > 0
    then begin
      out_vec(y, k);
      search_imin(y, k, min);
      writeln('Индекс минимального элемента вектора: ', min);
      mul_mat(x, m, n, min);
      out_mat('Преобразованная матрица:', x, m, n)
    end
    else writeln('Матрица не содержит отрицательных элементов.')
end;
 
procedure swap_col(var x: matrix; f, s, n: integer);
var i: integer;
    t: real;
begin
  for i := 1 to n do
    begin
      t := x[i, f];
      x[i, f] := x[i, s];
      x[i, s] := t
    end
end;
 
var
  mat: matrix;
  vec: vector;
  m, n, k, t, p: integer;
 
begin
  inp_size('Количество строк', m, imax);
  inp_size('Количество столбцов', n, imax);
  inp_mat(mat, m, n);
  out_mat('Исходная матрица:', mat, m, n);
  gen_vec(mat, vec, m,  n, k);
  change_mat(mat, vec, m, n, k);
  inp_col(t, p, n);
  swap_col(mat, t, p, n);
  out_mat('Преобразованная матрица:', mat, m, n)
end.
1
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 65
21.11.2018, 13:18  [ТС]
да, то что нужно. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2018, 13:18
Помогаю со студенческими работами здесь

массивы, матрицы
ЛЮДИ отчисляют с палитеха помогите решить ети лабы пожалуйста!!!! задача 1 задан целочистный массив размера N. Напечатать все...

Матрицы и массивы
Задана матрица вещественных чисел P(n×m). Сформировать массив R(k) из номеров столбцов матрицы, в которых есть хотя бы один ноль. Найти...

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

массивы и матрицы
Помогите пожалуйста разобраться!!! В одномерный массив v записать компоненты чётных строк изменённой вещественной матрицы m ....

Матрицы и массивы
1) Дана квадратная матрица. Переставить местами элементы над главной диагональю и под главной диагональю. Распечатать матрицу. 2)...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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