Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Gladcrix
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 5
1

Перестановка строк и столбцов матрицы

18.05.2013, 17:42. Просмотров 1433. Ответов 5
Метки нет (Все метки)

Разработать алгоритм и программу, позволяющую осуществлять
преобразование двумерного массива размером [n×m] (принять 4≤n≤8,
4≤m≤8) путем перестановки указанных строк или столбцов. Результат
представить в виде двух таблиц с исходным и преобразованным массивом.
Обеспечить возможность заполнения массива как путем ввода значений с
клавиатуры, так и с помощью датчика случайных чисел.

буду очень признателен
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 17:42
Ответы с готовыми решениями:

Определить множество номеров строк и столбцов матрицы, элементы которых упорядочены
Дана квадратичная матрица. Определить множество номеров строк и столбцов,...

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

Перестановка столбцов и строк матрицы
Перестановкой строк и столбцов матрицы добиться того, чтобы максимальный...

Перестановка строк и столбцов матрицы.
Дана матрица n X m. Найти max-ный элемент матрицы. Переставить строки и столбцы...

Перестановка строк и столбцов в массиве
Помогите, пожалуйста. Составить программу на языке Паскаль заполнения массива...

5
some_name
Вежливость-главное оружие
227 / 226 / 86
Регистрация: 19.02.2013
Сообщений: 1,441
18.05.2013, 20:52 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int rows = 3,
        cols = 5;
 
    const int interval = 10;
 
    int matrix[rows + 1][cols + 1]; 
 
    char flag = ' ';
 
    cout<<"You enter a number?(y/n) ";
    cin>>flag;
 
    if(flag == 'n' || flag == 'N')
    {
        for (int i = 0; i < rows; i++)      
        {
            for(int j = 0; j < cols; j++)           
                cout<<(matrix[i][j] = rand()%interval)<<"  ";
            cout<<endl;
        }
    }
    if (flag == 'y' || flag == 'Y')
    {
        for (int i = 0; i < rows; i++)      
            for(int j = 0; j < cols; j++)           
            {
                cin>>matrix[i][j];
                cout<<"  ";
            }
        cout<<endl;
    }
 
    cout<<"Reposition row or column?(r/c) ";
    cin>>flag;
 
    int firstLine = 0,
        secondLine = 0;
 
    if(flag == 'c'|| flag == 'C')
    {       
        cout<<"Which column swap? ";
        cin>>firstLine;
 
        cout<<"Where to put it? ";
        cin>>secondLine;
 
        if(firstLine >= 0 && firstLine < rows && secondLine >= 0 && secondLine < rows)
        {
            int buffer = 0;
 
            for (int i = 0; i < rows; i++)
            {
                buffer = matrix[i][firstLine];
 
                matrix[i][firstLine] = matrix[i][secondLine];
 
                matrix[i][secondLine] = buffer;
            }
        }
    }
    if(flag == 'r'|| flag == 'R')
    {       
        cout<<"Which row swap? ";
        cin>>firstLine;
 
        cout<<"Where to put it? ";
        cin>>secondLine;
 
        if(firstLine >= 0 && firstLine < cols && secondLine >= 0 && secondLine < cols)
        {
            int buffer = 0;
 
            for (int j = 0; j < cols; j++)
            {
                buffer = matrix[firstLine][j];
 
                matrix[firstLine][j] = matrix[secondLine][j];
 
                matrix[secondLine][j] = buffer;
            }
        }
    }
 
    for (int i = 0; i < rows; i++)
    {
        for(int j = 0; j < cols; j++)
        {
            cout<<matrix[i][j]<<"  ";
        }
        cout<<endl;
    }
    
 
    return 0;
}
1
Gladcrix
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 5
18.05.2013, 23:00  [ТС] 3
Цитата Сообщение от some_name Посмотреть сообщение
C++
1
2
#include "stdafx.h"
.....
Спасибо за ответ, но нужна программа написанная в фри паскале)
0
Gladcrix
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 5
20.05.2013, 17:03  [ТС] 4
Помогите решить! нужно разработать программу в фри паскале

Разработать алгоритм и программу, позволяющую осуществлять
преобразование двумерного массива размером [n×m] (принять 4≤n≤8,
4≤m≤8) путем перестановки указанных строк или столбцов. Результат
представить в виде двух таблиц с исходным и преобразованным массивом.
Обеспечить возможность заполнения массива как путем ввода значений с
клавиатуры, так и с помощью датчика случайных чисел.

Добавлено через 5 часов 45 минут
помогите найти ошибку, пишет код 201
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
var
  a: array[4..8,4..8] of integer;
  n,i,j,k,m,u,tmp: integer;
begin
  repeat
    write('Vvedi n (4<=n<=8): ');
    readln(n);
  until n in [4..8];
 repeat
    write('Vvedi m (4<=m<=8): ');
    readln(m);
  until m in [4..8];
 writeln('Kak zapolniat massiv? 1-s klaviaturi,0-ispolzuia randomise');
readln(u);
  IF u=1 then begin
writeln('Vvedi massiv a[4..8,4..8]');
for i:=1 to 5 do
for j:=1 to 3 do read(a[i,j]);
for j:=1 to 3 do
writeln;
               end
  Else
 writeln('Matrica:');
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      a[i,j]:=random(99)+1;
      write(a[i,j]:4);
    end;
    writeln;
  end;
  writeln;
 
 
  repeat
    write('Vvedi k (1<=k<=',n,'): ');{k - nomer stroki}
    readln(k);
  until k in [1..n];
  for i:=1 to n do
  begin
    tmp:=a[k,i];
    a[k,i]:=a[i,k];
    a[i,k]:=tmp;
  end;
 
  writeln('Novaya matrica:');
  for i:=1 to n do
  begin
    for j:=1 to m do
      write(a[i,j]:4);
    writeln;
  end;
  readln;
end.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26509 / 17802 / 7044
Регистрация: 22.10.2011
Сообщений: 31,329
Записей в блоге: 6
20.05.2013, 17:29 5
Delphi
1
2
for i:=1 to 5 do
for j:=1 to 3 do read(a[i,j]);
, а теперь посмотри, какие индексы допустимы при обращении к массиву A. Во второй строке исходника написано, что первый индекс должен быть от 4 до 8, а не от 1 до 5... И второй, кстати, тоже. Поменяй вторую строку:
Pascal
1
2
var
  a: array[1..8,1..8] of integer;
, и 17-18:
Pascal
1
2
for i:=1 to n do
for j:=1 to m do read(a[i,j]);
1
Gladcrix
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 5
21.05.2013, 19:45  [ТС] 6
во тупанул) спасибо

Добавлено через 46 минут
когда ввожу с клавиатуры, он не фиксирует, а подставляет произвольные числа, randomise работает только...

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
var
  a: array[1..8,1..8] of integer;
  n,i,j,k,m,u,b: integer;
begin
  repeat
    write('Vvedi n (4<=n<=8): ');
    readln(n);
  until n in [4..8];
 repeat
    write('Vvedi m (4<=m<=8): ');
    readln(m);
  until m in [4..8];
 writeln('Kak zapolniat massiv? 1-s klaviaturi,0-ispolzuia randomise');
readln(u);
  IF u=1 then begin
writeln('Vvedi massiv a[1..8,1..8]');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);
for j:=1 to m do
writeln;
               end
  Else
 writeln('Matrica:');
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      a[i,j]:=random(99)+1;
      write(a[i,j]:4);
    end;
    writeln;
  end;
  writeln;
 
 
  repeat
    write('Vvedi k (1<=k<=',n,'): ');{k - nomer stroki}
    readln(k);
  until k in [1..n];
  for i:=1 to n do
  begin
    b:=a[k,i];
    a[k,i]:=a[i,k];
    a[i,k]:=b;
  end;
 
  writeln('Novaya matrica:');
  for i:=1 to n do
  begin
    for j:=1 to m do
      write(a[i,j]:4);
    writeln;
  end;
  readln;
end.
Добавлено через 33 минуты
а все уже) исправил)
вот может кому пригодится:
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
var
  a: array[1..8,1..8] of integer;
  n,i,j,k,m,u,b: integer;
begin
  repeat
    write('Vvedi n (4<=n<=8): ');
    readln(n);
  until n in [4..8];
 repeat
    write('Vvedi m (4<=m<=8): ');
    readln(m);
  until m in [4..8];
 writeln('Kak zapolniat massiv? 1-s klaviaturi,0-ispolzuia randomise');
readln(u);
  IF u=1 then begin
writeln('Vvedi massiv a[1..8,1..8]');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);
for j:=1 to m do
writeln;
               end
  Else   begin
 writeln('Matrica:');
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      a[i,j]:=random(99)+1;
      write(a[i,j]:4);
    end;
    writeln;
  end;
  writeln;
         end;
 
  repeat
    write('Vvedi k (1<=k<=',n,'): ');{k - nomer stroki}
    readln(k);
  until k in [1..n];
  for i:=1 to n do
  begin
    b:=a[k,i];
    a[k,i]:=a[i,k];
    a[i,k]:=b;
  end;
 
  writeln('Novaya matrica:');
  for i:=1 to n do
  begin
    for j:=1 to m do
      write(a[i,j]:4);
    writeln;
  end;
  readln;
end.
Добавлено через 23 часа 30 минут
Короче препод сказал что не правильно сделал. надо чтобы был выбор между столбцом\строкой, и нужно указать какую строку на какую поменять. и вывести потом 2 массива с исх. и измененной матрицей. вот так вот...
0
21.05.2013, 19:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 19:45

Перестановка местами столбцов и строк двумерного массива
Задача такая - путем перестановки столбцов и строк в двумерном массиве надо...

Перестановка столбцов матрицы.
на паскале выполнить задачу-дана матрица вещественных чисел размерностью м на...

Перестановка столбцов матрицы
Расположить столбцы матрицы D в порядке возрастания элементов k-ой строки (1 ≤...


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

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

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