Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Unrealler
652 / 350 / 26
Регистрация: 11.12.2009
Сообщений: 508
#1

Стандартные операции с массивами (матрицами) - Pascal

29.05.2010, 11:10. Просмотров 141188. Ответов 34

-------------------------------------------------------------------------------------------
Содержание:
  1. "Переворот" массива
  2. Сдвиг массива на k элементов влево или вправо
  3. Сдвиг массива на k элементов влево или вправо за линейное время
  4. Поиск минимума/максимума и их индексов
  5. Поиск минимума/максимума и их индексов в двумерном массиве (матрице)
  6. Работа с элементами выше/ниже/на главной/побочной диагоналях
  7. Транспонирование матрицы относительно главной и побочной диагоналей
  8. Поворот двумерного массива на 90° по часовой стрелке
  9. Поворот на 90 градусов по часовой стрелке и против без использования дополнительного массива
  10. Удаление элемента в одномерном массиве
  11. Удаление строк и столбцов по условию
  12. Цифровая сортировка (DigidalSort)
  13. Удаление всех строк и столбцов, содержащих хотя бы 1 ноль
  14. Двоичный (бинарный) поиск
  15. Работа с матрицей одним циклом
  16. Заполнение массива случайными неповторяющимися значениями
  17. Заполнение массива змейкой из левого верхнего угла
  18. Заполнение массива змейкой снизу вверх построчно
  19. Удалить все элементы, которые встречаются больше 1 раза
  20. Удаление элементов в одномерном несортированном массиве по условию
  21. Заполнение массива по спирали
  22. Построение синусоиды на двумерном массиве(матрице) из точек(.)
  23. Вставка нового столбца в матрицу со сдвигом исходных элементов
  24. Вставка новой строки в матрицу со сдвигом исходных элементов
  25. Переворот матрицы на 90° по часовой стрелке
  26. Заполнение массива неповторяющимися значениями
-------------------------------------------------------------------------------------------





1) Очень часто на форуме просят "переворот" массива. Например, было
Код
1 2 3 4 5
Стало
Код
5 4 3 2 1
Осуществляется это так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
   a:array[1..100] of integer;
   i,r,n:integer;
begin
 readln(n);  {Г·ГЁГІГ*ГҐГ¬ Г°Г*çìåð Г¬Г*Г±Г±ГЁГўГ*}
 for i:=1 to n do
  read(a[i]);
 for i:=1 to n div 2 do   {Г±Г*Г¬ "ïåðåâîðîò"}
  begin
   r:=a[i];
   a[i]:=a[n-i+1];
   a[n-i+1]:=r;
  end;
 for i:=1 to n do
  write(a[i],' ');
 readln
end.
2) Не менее возникает вопрос о сдвиге массива на k элементов влево или вправо.
Было
Код
1 2 3 4 5
Стало
Код
5 1 2 3 4
Сдвиг влево на k элементов:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
   a:array[1..100] of integer;
   i,r,n,k,j:integer;
begin
 read(n,k);  {k îáîçГ*Г*Г·Г*ГҐГІ âåëè÷èГ*Гі ñäâèãГ*}
 for i:=1 to n do
  read(a[i]);
 for i:=1 to k do
  begin
   for j:=1 to n do
    if (j=1) then r:=a[j] else a[j-1]:=a[j];
   a[n]:=r;
  end;
 for i:=1 to n do
  write(a[i],' ');
 readln
end.
Сдвиг на k элементов вправо:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
   a:array[1..100] of integer;
   i,r,n,k,j:integer;
begin
 read(n,k);  {k îáîçГ*Г*Г·Г*ГҐГІ âåëè÷èГ*Гі ñäâèãГ*}
 for i:=1 to n do
  read(a[i]);
 for i:=1 to k do
  begin
   for j:=n downto 1 do
    if (j=n) then r:=a[n] else a[j+1]:=a[j];
   a[1]:=r;
  end;
 for i:=1 to n do
  write(a[i],' ');
 readln
end.
38
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2010, 11:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стандартные операции с массивами (матрицами) (Pascal):

Стандартные операции с матрицами - Pascal
Очень прошу, помогите, кто чем сможет) буду очень благодарна... Написать программы и если можно, без функций и процедур 1 задание:...

Стандартные операции с массивами - Pascal
Можете помочь? Завтра сдавать : 1) Вести массив A(N). Найти среднее геометрическое значение массива. Минимальный элемент массива...

Операции с массивами и матрицами, подсчет кол-ва столбцов содержащих отрицательные элементы. - Pascal
Нужна помощь с таким заданием: Если в прямоугольной матрице меньше половины столбцов содержит отрицательные элементы, то все элементы с...

Стандартные алгоритмы работы с одномерными массивами - Pascal
1. Ввод массива целых чисел. 2. Вывод массива в строку. 3. Найти минимальный элемент. Найти количество элементов имеющих минимальное...

Основные операции с матрицами - Pascal
Определить значение матричного многочлена f(x)=A*A*A+2*A*A-3*A-5*E; -2 0 3 A= 9 -4 5 3 11 -7

Операции с матрицами в Pascal - Pascal
Здравствуйте!Помогите пожалуйста с написанием программы для следующей задачи: Дана матрица размера 3х4.Составить программу для просчета...

34
S9
Волшебник
646 / 249 / 38
Регистрация: 18.12.2010
Сообщений: 541
02.06.2011, 08:55 #16
Если кому надо, то вот два варианта заполнения двухмерного массива.
Этот код заполняет как на картинке 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
Const
    N = 5;
Var
    A:Array[1..20,1..20] Of Integer;
    k,x,y,Num:integer;
  {проверка диапазона}
  
Procedure Check(Var i,j:Integer);
    Begin
      If i = 0 Then Inc(i)
        Else
          If i > N Then
            Begin
              i:= N;
              j:= j+2;
            End;
    End;
    
Begin
    {начальные значиения}
    x:=1;
    y:=1;
    k:=1;
    {перебираем все номера}
    For Num:=1 To N*N Do
        Begin
            A[x,y]:=Num;
            {следующие координаты}
            x:=x + k;
            y:=y - k;
        {сдедующая строка эквивалентна 
        if (x = 0)Or(y = 0)Or(x > N)Or(y > N) Then k:=-k;}
        k:=k*(1 - 2*Ord((x = 0)Or(y = 0)Or(x > N)Or(y > N)));
        {корректируем координаты}
        If Odd(N) Then
            Begin
                Check(x,y);
                Check(y,x);
            End
                Else
            Begin
                Check(y,x);
                Check(x,y);
            End;
        End;{выводим результат}
    For x:=1 To N Do
        Begin
            For y:=1 To N Do
                Write(a[x,y]:3);
            WriteLn;
        End;
    ReadLn;
End.
А этот, как на картинке 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
Var A:Array[1..100,1..100] Of Integer;
    n,i,j:Integer;
    
Begin
Write('n = ');
ReadLn(n);
If n Mod 2 <> 0 Then {для матриц нечетной размерности}
For i:=1 To n Do
    Begin
        For j:=1 To n Do
        Begin
            If i Mod 2 <> 0 Then {для нечетных строк}
                A[i,j]:=n*(n - i) + j
            Else A[i,j]:=n*(n - i + 1) - j + 1; {для четных строк}
                Write(a[i,j]:3);
        End;
        WriteLn;
    End
Else 
    If n Mod 2 = 0 Then  {для матриц четной размерности}
For i:=1 To n Do
    Begin
    For j:=1 To n Do
        Begin
            If i Mod 2 <> 0 Then  { для нечетных строк } 
                A[i,j]:=n*(n - i + 1) - j + 1
            Else a[i,j]:=n*(n - i) + j;  { для четных строк }
                Write(a[i,j]:3);
        End;
        WriteLn;
    End;
ReadLn;
End.
6
Изображения
  
Вложения
Тип файла: rar Solution1.rar (26.2 Кб, 99 просмотров)
Тип файла: rar Solution2.rar (14.1 Кб, 72 просмотров)
incred
0 / 0 / 0
Регистрация: 08.02.2016
22.06.2011, 15:44 #17
может кто-нибудь организует все операции в процедуры? как вот здесь:
Сортировки

Добавлено через 41 минуту
а как совместить 4 и 5 пункт?

например найти минимум/максимум на главной/побочной или выше/ниже определённой диагонали?

да. я новичёк. учусь.
0
XEHK
4 / 4 / 1
Регистрация: 23.03.2011
Сообщений: 69
07.07.2011, 23:06 #18
Цитата Сообщение от Unrealler Посмотреть сообщение
9) Удаление элемента в одномерном массиве
Пусть нужно удалить все нулевые элементы из введенного пользователем массива.
Удаление:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
   a:array[1..100] of integer;
   i,m,n:integer;
begin
 readln(n);    {ñ÷èòûâГ*ГҐГ¬ êîëè÷åñòâî ýëåìåГ*òîâ}
 for i:=1 to n do
  read(a[i]);
 writeln('ГЊГ*Г±Г±ГЁГў');
 for i:=1 to n do
  write(a[i],' ');
 writeln;
 writeln('Ïîñëå ГіГ¤Г*ëåГ*ГЁГї');
 m:=0;
 for i:=1 to n do
  if (a[i]=0) then inc(m) else a[i-m]:=a[i]; {ГіГ¤Г*ëÿåì ýëåìåГ*ГІГ»}
 dec(n,m);  {óìåГ*ГјГёГ*ГҐГ¬ êîëè÷åñòâî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ* Г*Г* êîëè÷åñòâî Г*óëåâûõ ýëåìåГ*òîâ}
 for i:=1 to n do
  write(a[i],' '); {âûâîä Г*Г* ГЅГЄГ°Г*Г*}
 readln
end.
а как удалить все елементи каторие встречаютса больше 1 гороза?
0
Puporev
Модератор
53020 / 40831 / 14075
Регистрация: 18.05.2008
Сообщений: 94,978
08.07.2011, 08:34 #19
как удалить все элементы, которые встречаются больше 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
uses crt;
var a:array[1..100] of integer;
    n,i,j,k,p,x:integer;
    f:boolean;
begin
clrscr;
randomize;
write('n=');readln(n);
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=random(10);
  write(a[i],' ');
 end;
writeln;
i:=1;
while i<n do
 begin
  f:=false;
  j:=i+1; //смотрим впереди
  while (j<=n)and not f do
  if a[j]=a[i] then  f:=true//если есть такой же, меняем флаг
  else j:=j+1; //иначе идем дальше
  if f then //если есть повторы
   begin
    x:=a[i];//запомним элемент
    p:=i;//и его текущую позицию
    while p<=n do //идем к концу
    if a[p]=x then //если такой же
     begin
      if p=n then n:=n-1 //если последний, убавляем размер массива
      else //иначе
       begin
        for k:=p to n-1 do //сдвигаем на него конец массива
        a[k]:=a[k+1];
        n:=n-1; //убавляем
       end
     end
    else p:=p+1;//если не такой, дальше
   end
  else i:=i+1;//если не удаляли, дальше
 end;
if n=0 then write('Все элементы более 1 раза, массив пустой')
else
 begin
  writeln('Более 1 раза удалены:');
  for i:=1 to n do
  write(a[i],' ');
 end;
readln
end.
5
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
14.07.2011, 20:21 #20
Удаление элементов в одномерном несортированном массиве по условию (без сохранения порядка).
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
{ Сама задача. Алгоритмы. Введение в разработку и анализ. Ананий Левитин
Упражнения 1.4.1. Поясните, как можно реализовать каждую из перечисленных ниже 
операций над массивом так, чтобы время ее выполнения не зависело от
размера массива n. а) Удаление i-го элемента массива 1 <= i <= n). }
{ Усложненная модификация: удалить все элементы, которые делятся нацело на x }
{ PascalABC.NET. lamed, 14.07.2011 }
const
  MaxN = 30;
var
  a: array[1..MaxN] of integer;
  i, n: integer;
  x: integer;
  k: integer;
begin
  // Формирование одномерного массива
  randomize;
  n:=1+random(MaxN);
  for i:= 1 to n do
    a[i]:= random(MaxN+1);
    
  x:= 2+random(n-1);
  
  writeln('До обработки n=', n, '.');
  write('<');
  for i:= 1 to n do
    begin
      if i<>1 then write(',');
      write(a[i]);
    end;
  writeln('>');
 
  i:=1;
  k:= 0;
  while (i<=n) do
    begin
      while (i<=n) and (a[i] mod x=0) do
        begin // Если элемент требуется удалить
          a[i]:= a[n]; // Заменяем его последним использованным элементом массива
          // заменяющий элемент на следующем шаге тоже придется проверить
          dec(n); // уменьшаем счетчик числа используемых элементов
          inc(k); // увеличиваем счетчик удаленных элементов
        end;
      inc(i);
    end;
 
  writeln;
  writeln('n=', n, '. Удалено ', k, ' элементов, которые делятся на ', x, '.');
  write('<');
  for i:= 1 to n do
    begin
      if i<>1 then write(',');
      write(a[i]);
    end;
  writeln('>');
end.
Пример работы
Pascal
1
2
3
4
5
До обработки n=25.
<13,26,2,18,12,8,21,19,17,30,13,29,28,29,27,9,12,29,1,24,28,6,15,13,27>
 
n=23. Удалено 2 элементов, которые делятся на 14.
<13,26,2,18,12,8,21,19,17,30,13,29,27,29,27,9,12,29,1,24,13,6,15>
1
Даня98
29 / 29 / 8
Регистрация: 13.02.2010
Сообщений: 145
29.07.2011, 14:16 #21
Заполнение массива по спирали
Очень часто это задание попадается для разминки.
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
uses crt;
var a: array [1..100,1..100] of integer;
    i,m,k,n: integer;
begin
writeln ('Vvesti chislo');
readln (n);
k:=0;
m:=0;
repeat
for i:= m+1 to n-m do
begin
inc (k);                      
a[i,m+1]:= k;
end;
for i:= m+2 to n-m do
begin                             
inc (k);
a[n-m,i]:= k;
end;
for i:= n-m-1 downto m+1 do
begin
inc (k);                                  
a[i,n-m]:= k;
end;
for i:= n-m-1 downto m+2 do
begin
inc (k);
a[m+1,i]:=k;
end;
inc (m);
until m+1=n div 2 + 2;
for i:= 1 to n do
begin
for k:= 1 to n do
write (a[i,k]:3,' ');
writeln;
end;
end.
6
Sagittarius
16 / 9 / 0
Регистрация: 10.01.2012
Сообщений: 54
14.01.2012, 19: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
program project1;
uses crt;
const w=79;{Ширина массива} h=22; {Высота массива}
var i,j,k: integer;
    arr: array [1..h,1..w] of char; 
begin
    ClrScr; {Очищаем экран}
        {Заполняем массив точками '.'}
    for j:=1 to h do
        for i:=1 to w do
        begin
            arr[j,i]:='.';
        end;
        {Запоняем некоторые элементы массива,
            которые выявляются по формуле, звездочками '*'} 
    for j:=1 to w do
    begin
         k:=round((sin(3.0*j*PI/w)+1)/2*h);
         arr[k,j]:='*';
    end;
        {Выводем массив}
  for j:=1 to h do
  begin
    writeln;
        for i:=1 to w do
            write(arr[j,i]);
   end;
 
   readln;
end.
Примерно так: Стандартные операции с массивами (матрицами)
2
Севак
любитель покушать
682 / 633 / 106
Регистрация: 25.09.2011
Сообщений: 1,313
15.03.2012, 12:33 #23
Думаю кому-нибудь будет полезно: вставление нового столбца в матрицу со сдвигом исходных элементов, например: вставить столбец между 5 и 6 столбцом исходной матрицы.

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
uses crt;
var
a: array[1..10,1..12] of integer;
b: array[1..10] of integer;
i,k,n,j,q: integer;
 
begin
write('Введите размерность матрицы, не больше 10 и не меньше 6 : ');
repeat
read(n);
until (n>=6) and (n<11);
 
writeln('Введите элементы одномерного массива:');
for k:=1 to n do begin
read(b[k]);
end;
 
write('В какой столбец будут вставляться элементы: ');
repeat
read(q);
until (q>=1) and (q<=n);
 
writeln('Для вывода результата нажмите ENTER...');
readln;
clrscr;
 
write('Исходная матрица:');
writeln;
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=random(10);
write(a[i,j]:4);
end;
writeln;
end;
 
for j:=n+1 downto q do begin
for i:=1 to n do begin
a[i,j+1]:=a[i,j];
end;
end;
 
for i:=1 to n do begin
a[i,q]:=b[i];
end;
 
writeln;
writeln('Полученная матрица:');
for i:=1 to n do begin
for j:=1 to n+1 do begin
write(a[i,j]:4);
end;
writeln;
end;
end.
Добавлено через 9 минут
аналогично предыдущей программе, только вставление строки:
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
uses crt;
var
a: array[1..12,1..10] of integer;
b: array[1..10] of integer;
i,k,n,j,q: integer;
 
begin
write('Введите размерность матрицы, не больше 10 и не меньше 6 : ');
repeat
read(n);
until (n>=6) and (n<11);
 
writeln('Введите элементы одномерного массива:');
for k:=1 to n do begin
read(b[k]);
end;
 
write('В какую строку будут вставляться элементы: ');
repeat
read(q);
until (q>=1) and (q<=n);
 
writeln('Для вывода результата нажмите ENTER...');
readln;
clrscr;
 
write('Исходная матрица:');
writeln;
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=random(10);
write(a[i,j]:4);
end;
writeln;
end;
 
for i:=n+1 downto q do begin
for j:=1 to n do begin
a[i+1,j]:=a[i,j];
end;
end;
 
for i:=1 to n do begin
a[q,i]:=b[i];
end;
 
writeln;
writeln('Полученная матрица:');
for i:=1 to n+1 do begin
for j:=1 to n do begin
write(a[i,j]:4);
end;
writeln;
end;
end.
1
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
09.04.2012, 19:54 #24
А вот моя разработка переворота на 90о по часовой стрелке!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  a: array[1..50, 1..50] of longint;
  i, j, n, m: integer;
 
begin
  readln(n, m); 
  if (n >= 1) and (m >= 1) and (n <= 50) and (m <= 50) then
  begin
    for i := 1 to n do
      for j := 1 to m do
        read(a[i, j]);
    writeln(m,' ',n);
    for i:=1 to m do
    begin
      for j := n downto 1 do
        if (j>1) then write(a[j,i], ' ') else write(a[j,i]);
      if (i<m) then writeln;
    end;
  end;
end.
1
Erea
130 / 54 / 7
Регистрация: 13.03.2013
Сообщений: 162
25.04.2013, 00:08 #25
Заполнение массива неповторяющимися значениями:
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
program Myprogram;
type Tarr = array of integer;
 
procedure FillArray(var a:Tarr; n, r1, r2: integer);{a - массив;
                                                     n - длина массива;
                                                     r1, r2 - диапазоны рандома}
var i, j: integer;
    p: boolean;
begin
randomize;
setlength(a,n);
if r2-r1<n then begin
for i:=1 to n-1 do a[i]:=random(r2-r1+1)+r1;
end else begin
a[0]:=random(r2-r1+1)+r1;
p:=false;
for i:=1 to n-1 do begin
    repeat
    a[i]:=random(r2-r1+1)+r1;
    p:=false;
    for j:=0 to i-1 do begin
    if a[j]=a[i] then p:=true;
    end;
    until p=false;
end;
end;
end;
 
procedure WriteArray(a: Tarr);
var i: integer;
begin
for i:=0 to length(a)-1 do begin
write(a[i]:4);
end;
writeln;
end;
 
var MyArray: Tarr;
begin
FillArray(MyArray, 10, 0, 10);
WriteArray(MyArray);
readln;
end.
0
APALoff
1636 / 1065 / 470
Регистрация: 03.07.2013
Сообщений: 4,506
23.10.2014, 15:48 #26
16)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Const n=5;
Var
  m   : array[1..n,1..n] of Integer;
  i,j : Byte;
Begin
  For i:=1 to n do
   For j:=1 to n do m[i,Ord(not Odd(i))*(n+1-j)+Ord(Odd(i))*j]:=(i-1)*n+j;
  
  For i:=1 to n do
  Begin
    For j:=1 to n do Write(m[i,j]:4);
    Writeln;
  end;
end.
0
Puporev
Модератор
53020 / 40831 / 14075
Регистрация: 18.05.2008
Сообщений: 94,978
23.10.2014, 15:57 #27
В простом АВС это не рулит, а количество циклов нужно сократить.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Const n=5;
Var
  m   : array[1..n,1..n] of Integer;
  i,j : Byte;
Begin
For i:=1 to n do
 begin
  For j:=1 to n do
   begin
    m[i,Ord(not Odd(i))*(n+1-j)+Ord(Odd(i))*j]:=(i-1)*n+j;
    Write(m[i,j]:4);
   end;
  Writeln;
 end;
end.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24815 / 16489 / 5088
Регистрация: 22.10.2011
Сообщений: 29,153
Записей в блоге: 5
23.10.2014, 16:04 #28
Цитата Сообщение от Puporev Посмотреть сообщение
количество циклов нужно сократить
Только не в ущерб правильности ответа. Приведенный в посте №27 код работает некорректно:
Код
   1   2   3   4   5
   0   0   8   7   6
  11  12  13  14  15
   0   0  18  17  16
  21  22  23  24  25
0
Puporev
Модератор
53020 / 40831 / 14075
Регистрация: 18.05.2008
Сообщений: 94,978
23.10.2014, 16:07 #29
Согласен, лажанулся...
0
roma070201
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 41
06.12.2014, 22:31 #30
Цитата Сообщение от Unrealler Посмотреть сообщение
if (j=n) then r:=a[n] else a[j+1]:=a[j];
можно ли написать без if'а , а как-нибудь по другому?
0
06.12.2014, 22:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2014, 22:31
Привет! Вот еще темы с ответами:

Выполнить операции с квадратными матрицами - Pascal
2. Выполнить операции (здесь A, B, C, D — квадратные матрицы порядка n) (B^T)*(C^T)*(D^T)

Арифметические операции над матрицами - Pascal
Выполнив действия над матрицами A(n,n) и B(n,n) вычислить матрицу C(n,n) по формуле C=(A-B')(3A'+B/2),где A' и B'-транспортированные...

Определть операцию div через другие операции и стандартные функции - Pascal
помогите написать программу на языке паскаль!!! Задание: Определть операцию div через другие операции и стандартные функции. ...

Операции над массивами. - Pascal
Найти минимумы нечетных столбцов матрицы. uses crt; var i,j,n,min:integer; a:array of integer;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru