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

При переводе диагональной матрицы в вектор приписывается большое количество ненужных нулей

06.03.2014, 20:33. Показов 536. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Данная программа работает. Но к сожалению при переводе диагональной матрицы в вектор приписывается большое количество ненужных нулей. Как от них избавиться? Помогите пожалуйста. Премного благодарен.
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
program DiagonalMatrixOlegTsoy;
 
const
  nmax = 20;
 
type
  arr = array of array of integer;
 
var
  n, i, j, t, x, k, k1: integer;
  found: boolean;
 
procedure printout(s: arr);
var
  i, j: integer;
begin
  for i := 0 to high(s) do
  begin
    for j := 0 to high(s[i]) do
    begin
      Write(s[i, j]);
      Write(' ');
    end;
    Writeln();
  end;
end;
 
function g: arr;
var
  i, j: integer;
  s: arr;
begin
  Write('Size of Matrix: '); Readln(n);
  SetLength(s, n);
  for i := 0 to n - 1 do
  begin
    SetLength(s[i], n);
    for j := 0 to n - 1 do
    begin
      if j = i then
        s[i, j] := random(76) - 30
      else 
        s[i, j] := 0;
    end;
    g := s;
  end;
end;
 
var 
  a : arr;
  b : array of integer;
 
begin
  a := g();
  printout(a);
  writeln;
  readln;     
  writeln('Vector:');
  setlength(b, sqr(n));
  for i := 0 to pred(n) do
    for j := 0 to pred(n) do
    begin
      b[i * n + j] := a[i, j];
      write(b[i * n + j]:4);
    end;
  writeln;
  found := false;
  write('Please enter the name of element for linear search: ');
  readln(x);
  for i := 0 to pred(sqr(n)) do
    if b[i] = x then begin
      found := true;
      k := i;
    end;
  if found then writeln('The founded element on the ', k, ' position')
  else writeln('This matrix does not have this element');
  writeln;
  for i := 0 to pred(sqr(n)) do
    for j := pred(sqr(n)) downto i + 1 do
      if b[j] < b[j - 1] then
      begin
        t := b[j];
        b[j] := b[j - 1];
        b[j - 1] := t;
        inc(k1);
      end;
  writeln;
  writeln('Linear Search Algorithm: count of comparisons = ', k);
  writeln('                         count of swaps = ', k1);
  readln;
  writeln('Sorted Vector:');
  for i := 0 to Pred(sqr(n)) do write(b[i]:4);
  writeln;
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2014, 20:33
Ответы с готовыми решениями:

Большое количество нулей в вычислении
Всем доброго времени суток. Столкнулся на мой взгляд с редкой проблемой, документ имеет...

Задан целочисленный файл содержащий большое количество нулей
Заменить группы элементов состоящие из нечетного количества нулей на один нулевой элемент а из...

Найти номер строки матрицы, в которой самое большое число нулей
/**Построить функцию, определяющую для двумерного массива номер строки, в которой самое большое...

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

1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.03.2014, 07:17 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
setlength(b, n);
  for i := 0 to pred(n) do
   begin
     b[i] := a[i, i];
     write(b[i]:4);
    end;
  writeln;
  found := false;
  write('Please enter the name of element for linear search: ');
  readln(x);
  for i := 0 to pred(n) do
    if b[i] = x then begin
      found := true;
      k := i+1;
    end;
  if found then writeln('The founded element on the ', k, ' position')
  else writeln('This matrix does not have this element');
  writeln;
  for i := 0 to pred(n) do
    for j := pred(n) downto i + 1 do
      if b[j] < b[j - 1] then
      begin
        t := b[j];
        b[j] := b[j - 1];
        b[j - 1] := t;
        inc(k1);
      end;
  writeln;
  writeln('Linear Search Algorithm: count of comparisons = ', k);
  writeln('                         count of swaps = ', k1);
  readln;
  writeln('Sorted Vector:');
  for i := 0 to Pred(n) do write(b[i]:4);
  writeln;
  readln;
end.
0
07.03.2014, 07:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2014, 07:17
Помогаю со студенческими работами здесь

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

Написать функцию, возвращающую количество двоек, содержащихся при переводе в троичную СС
Помогите пжлст, Написать функцию, возвращающую количество двоек, содержащихся в числе при переводе...

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

Переменной типа int при первой итерации цикла приписывается значение меньше на 1
Доброго времени суток. Возникла проблема которую видно на скриншоте. Получаеться что если выводить...

Найти количество нулей матрицы
1. Составить программу заполнения квадратной матрицы 3-го порядка случайными числами от 0 до 5 и...

Существование диагональной матрицы
упражнение из книги Лоусон Ч-&quot;Численное решение задач МНК&quot; Пожалуйста кто может объяснить как...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru