0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
1

В матрице поменять местами два столбца с заданными номерами

03.12.2008, 21:50. Показов 6888. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
учусь на заочке
а задали задачу по Поскалю
немогу решить
помогите пожалуйста

вот задача
а) В матрице А поменять местами два столбца с заданными номерами;

б) сформировать из элементов полученной матрицы, которые определяются как суммы элементов ее столбцов, диагональную матрицу С;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2008, 21:50
Ответы с готовыми решениями:

В матрице А поменять местами две строки с заданными номерами
Выполнить над квадратной матрицей А порядка n последовательность действий, указанную в задании. а)...

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

Поменять местами два столбца матрицы с заданными номерами
Я написал программу ,но сомневаюсь . КАк понял нужно сделать ввод с клавы какие столбцы поменять...

В матрице поменять местами две строки с заданными номерами
Доброго времени суток. Прошу о помощи)) Выполнить над квадратной матрицей А порядка n...

17
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.12.2008, 22:36 2
Певую часть я написал, а вторую что-то не понимаю, с теорией слабовато, объяснишь , напишу.
Код
uses crt;
const m=5;
      n=6;
var a:array[1..m,1..n]of integer;
    c:array[1..m,1..n]of integer;
    i,j,k1,k2,x:integer;
begin
clrscr;
randomize;
writeln('Matrica A:'); {создаем и выводим на экран матрицу}
for i:=1 to m do
   begin
     for j:=1 to n do
       begin
         a[i,j]:=random(9)+1;
         write(a[i,j]:3);
       end;
     writeln;
   end;
readln;
repeat
write('Vvedite 1 ctolbec dlja perestanovki k1='); {выбираем столбцы для обмена}
readln(k1);
until (k1>0)and(k1<=n);
repeat
write('Vvedite 2 ctolbec dlja perestanovki k2=');
readln(k2);
until (k2>0)and(k2<=n)and(k2<>k1);
for i:=1 to n do
  begin
    x:=a[i,k1];  {меняем в строказ соответствующие элементы меситами}
    a[i,k1]:=a[i,k2];
    a[i,k2]:=x;
  end;
writeln('Perestanovka stolbcov:');
for i:=1 to m do
    begin
      for j:=1 to n do
      write(a[i,j]:5);
      writeln;
    end;
readln;
end.
Добавлено через 22 минуты 58 секунд
Во, кажется додул, держи.
Код
uses crt;
const n=6;
var a,c:array[1..n,1..n]of integer;
    i,j,k1,k2,x,sm:integer;
begin
clrscr;
randomize;
writeln('Matrica A:');
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         a[i,j]:=random(9)+1;
         write(a[i,j]:3);
       end;
     writeln;
   end;
readln;
repeat
write('Vvedite 1 ctolbec dlja perestanovki k1=');
readln(k1);
until (k1>0)and(k1<=n);
repeat
write('Vvedite 2 ctolbec dlja perestanovki k2=');
readln(k2);
until (k2>0)and(k2<=n)and(k2<>k1);
for i:=1 to n do
  begin
    x:=a[i,k1];
    a[i,k1]:=a[i,k2];
    a[i,k2]:=x;
  end;
writeln('Perestanovka stolbcov:');
for i:=1 to n do
    begin
      for j:=1 to n do
      write(a[i,j]:4);
      writeln;
    end;
for j:=1 to n do
  begin
    sm:=0;
    for i:=1 to n do
    sm:=sm+a[i,j];
    c[j,j]:=sm;
  end;
writeln('Diagonalnaja matrica C:');
for i:=1 to n do
  begin
    for j:=1 to n do
    write(c[i,j]:4);
    writeln;
  end;
readln;
end.
1
0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
04.12.2008, 08:58  [ТС] 3
Мне чуть подругому надо это правильно
нотолько надо чтоб цыфры не сами писались
а я сам вводил

Добавлено через 2 минуты 49 секунд
Puporev,
Мне чуть подругому надо это правильно
нотолько надо чтоб цыфры не сами писались
а я сам вводил

Добавлено через 9 минут 50 секунд
Мне чуть подругому надо это правильно
нотолько надо чтоб цыфры не сами писались
а я сам вводил

Добавлено через 53 секунды
Puporev,
Мне чуть подругому надо это правильно
нотолько надо чтоб цыфры не сами писались
а я сам вводил
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.12.2008, 09:20 4
Так вводи сам, что и такой мелочи не умеешь? Чему тогла учишся.

Добавлено через 5 минут 5 секунд
Код
randomize;
writeln('Matrica A:');
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         a[i,j]:=random(9)+1;
         write(a[i,j]:3);
       end;
     writeln;
   end;
Вместо этого напиши
Код
witeln('Введите ',n*n,' элементов матрицы:');
for i:=1 to n do
for j:=1 to n do
read()a[i,j];
readln;
clrscr;
writeln('Matrica A:');
for i:=1 to n do
   begin
     for j:=1 to n do
     write(a[i,j]:3);
   end;
writeln;
И никогда не пиши "цыфры". Во первых это отвращает, а потом мы пишем не столько "цыфры", сколько числа.
0
0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
04.12.2008, 10:19  [ТС] 5
Puporev,
спасибо те большое
выручил
я больше никогда ненапишу цывры


Добавлено через 46 минут 4 секунды
Puporev,
еще одна прозьба помоги пожалуйста
мне надо так чтоб я вводил числа
они не чтоб в виде длинной строки были
а ввиде матрицы типа змейкай
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.12.2008, 12:33 6
Вы можете вводить как угодно, потом программа это сотрет и нарисует в в виде матрицы. Если Вам сразу удобнее вводить в виде матрицы, я тоже так делаю, то например матрица 5х6, то вводите в строку через прбел 6 чисел, жмете Enter. Снова 6 чисел + Enter, и так до конца. Заодно можно выравнивать, чтобы не сбиться, количество пробелов между числами роли не играет.
0
0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
06.12.2008, 10:20  [ТС] 7
Puporev,
помоги еще одну зделать а то не пойму не как
пожалуйста

а) Сформировать из столбцов В, не содержащих равных элементов, матрицу С размером m х k, где k £ n - количество таких столбцов;

б) в матрице С вычислить суммы элементов строк, номера которых определяются номерами ненулевых элементов заданного вектора.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.12.2008, 10:57 8
k £ n
По середине значок что означает?
Наверное <=.
Вот решение.
Код
а) Сформировать из столбцов В, не содержащих равных элементов, матрицу С размером m х k, где k £ n - количество таких столбцов;

uses crt;
var b,c:array[1..50,1..50]of integer;
    m,n,k,i,j,l,t,p:integer;
begin
clrscr;
write('Kolichestvo strok m=');readln(m);
write('Kolichestvo stolbcov n=');readln(n);
writeln('Vvedite ',m*n,' elementov matricy:');
for i:=1 to m do
for j:=1 to n do
read(b[i,j]); //вводим элементы так, чтобы были столбцы и с одинаковыми и неодинаковыми элементами
readln;
clrscr;
writeln('Ishodnaya matrica B:');
for i:=1 to m do
   begin
    for j:=1 to n do
    write(b[i,j]:4);
    writeln;
   end;
k:=0;
for j:=1 to n do //идем по столбцам
  begin
    t:=0; //считаем что одинаковых нет
    for i:=1 to m-1 do смотрим элементы вниз по столбцу
    for l:=i+1 to m do
    if b[i,j]=b[l,j] then //если встречаем,
    t:=1;  //фиксируем
    if t=0 then  //если не встречаем
      begin
        k:=k+1;//присваиваем номер столбцу матрицы С
        for p:=1 to m do //копируем в него столбец без одинаковых элементов
        c[p,k]:=b[p,j];
      end;
   end;
writeln('Matrica C:'); //выводим
for i:=1 to m do
   begin
    for j:=1 to k do //но уже до к
    write(c[i,j]:4);
    writeln;
   end;
readln
end.

б) в матрице С вычислить суммы элементов строк, номера которых определяются номерами ненулевых элементов заданного вектора.

uses crt;
var c:array[1..50,1..50]of integer;
    zv:array[1..50] of integer;
    m,n,i,j,s:integer;
begin
clrscr;
write('Kolichestvo strok matricy C i dlina vectora ZV m=');readln(m);
write('Kolichestvo stolbcov matricy C  n=');readln(n);
writeln('Vvedite ',m*n,' elementov matricy C:');
for i:=1 to m do
for j:=1 to n do
read(c[i,j]);
readln;
clrscr;
randomize;
writeln('Ishodnaya matrica C:');
for i:=1 to m do
   begin
    for j:=1 to n do
    write(c[i,j]:4);
    writeln;
   end;
writeln('Zadannyj vector ZV:');
for i:=1 to m do
  begin
    zv[i]:=random(2);//чтоб не вводить вручную, выкинет случайно числа 0 и 1, только строк бери не менее 5
    write(zv[i],' ');
  end;
writeln;
for i:=1 to m do
if zv[i]<>0 then //если i-товый элемент не нулевой
   begin
     s:=0;//сумма=0
     for j:=1 to n do
     s:=s+c[i,j]; //считаем сумму в строке
     writeln('Summa v stroke ',i,' = ',s);//выводим построчно
   end;
readln
end.
0
0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
06.12.2008, 11:27  [ТС] 9
Puporev,
это кажется (F)-(Ф)
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.12.2008, 11:48 10
это кажется (F)-(Ф)
Это уже значительно понятнее. Ладно, не заморачивайся, все нормально работает.
0
0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
06.12.2008, 11:56  [ТС] 11
Puporev,
за первую программу те спосибо
да работает нормально

Puporev,
это точно <= я тоже узнал
спасибо тибе
0
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 6
25.12.2008, 16:51 12
А мне надо прще мне надо поменять строки и столбцы местами
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.12.2008, 16:56 13
По моему это называется транспонирование матрицы, пошарься по форуму, точно найдешь, да и самому догадаться сменить местами индексы строк и столбцов думаю не проблема.
0
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 6
25.12.2008, 17:13 14
Цитата Сообщение от Puporev Посмотреть сообщение
По моему это называется транспонирование матрицы, пошарься по форуму, точно найдешь, да и самому догадаться сменить местами индексы строк и столбцов думаю не проблема.
Но я не знаю как это на Pascal сделать !!!
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.12.2008, 18:34 15
Что конкретно сделать-то? Ты толком напиши. Переставлять можно по разному, да и матрицы разные бывают.
0
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 6
25.12.2008, 19:10 16
Даны натуральные числа i,j действительная матрица размера 18x24(1=<i<j=<24 поменять в матрице местами i-е столбцы и j-е строки

Добавлено через 28 минут 51 секунду
Вот эту задачу я даже не понял !!!
Будем называть сосеями элементы с индексами некоторой матрицы такие элементы этой матрицы соответствующие индексы которых отличаются от i и j не более чем на единицу Для данной целочисленной матрицы a[i,j]i=1..n j1..m найти матрицу из нулей и едениц b[i,j] равен еденице когда
все соседи a[i,j] и само a[i,j] равны нулю
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.12.2008, 20:34 17
С первой задачей помогу, вторую сам не понял.
Код
uses crt;
const z=25; //предельный размер матрицы
var a:array[1..z,1..z]of real;
    i,j,n,m:integer;
{процедура транспонирования матрицы нужна, потому что матрицы вытянутые вверх или в ширину, транспонируются по разному, поэтому процедура вызывается с параметрами, взависимомти от вытянутости матрицы}
procedure TrMatrix(x,y:integer);
var i,j:integer;
    b:real;
begin
{транспонирование матрицы в цикле}
for i:=1 to x do
for j:=i to y do //здесь не от 1 а от i, не спутай
   begin
     b:=a[i,j];
     a[i,j]:=a[j,i];//обмен элементов строк и столбцов
     a[j,i]:=b;
   end;
end;
begin
clrscr;
{вводим размер массива}
repeat
write('n=');
readln(n)
until (n>0)and(n<=z);
repeat
write('m=');
readln(m);
until (m>0)and(m<=z);
randomize;
{в цикле случайным образом создаем матрицу}
for i:=1 to n do
   begin
     for j:=1 to m do
       begin
         a[i,j]:=9*random;
         write(a[i,j]:4:1);
       end;
     writeln;
   end;
readln;
{вызов процедуры транспонирования матрицы}
if n>m then TrMatrix(m,n) //вот здесь сказывается вытянутость
else TrMatrix(n,m);
writeln;
{вывод результата работы}
for i:=1 to m do
   begin
     for j:=1 to n do
     write(a[i,j]:4:1);
     writeln;
   end;
readln
end.
1
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 6
25.12.2008, 20:37 18
Цитата Сообщение от Puporev Посмотреть сообщение
С первой задачей помогу, вторую сам не понял.
Код
uses crt;
const z=25; //предельный размер матрицы
var a:array[1..z,1..z]of real;
    i,j,n,m:integer;
{процедура транспонирования матрицы нужна, потому что матрицы вытянутые вверх или в ширину, транспонируются по разному, поэтому процедура вызывается с параметрами, взависимомти от вытянутости матрицы}
procedure TrMatrix(x,y:integer);
var i,j:integer;
    b:real;
begin
{транспонирование матрицы в цикле}
for i:=1 to x do
for j:=i to y do //здесь не от 1 а от i, не спутай
   begin
     b:=a[i,j];
     a[i,j]:=a[j,i];//обмен элементов строк и столбцов
     a[j,i]:=b;
   end;
end;
begin
clrscr;
{вводим размер массива}
repeat
write('n=');
readln(n)
until (n>0)and(n<=z);
repeat
write('m=');
readln(m);
until (m>0)and(m<=z);
randomize;
{в цикле случайным образом создаем матрицу}
for i:=1 to n do
   begin
     for j:=1 to m do
       begin
         a[i,j]:=9*random;
         write(a[i,j]:4:1);
       end;
     writeln;
   end;
readln;
{вызов процедуры транспонирования матрицы}
if n>m then TrMatrix(m,n) //вот здесь сказывается вытянутость
else TrMatrix(n,m);
writeln;
{вывод результата работы}
for i:=1 to m do
   begin
     for j:=1 to n do
     write(a[i,j]:4:1);
     writeln;
   end;
readln
end.
За это спасибо. Но мне надо чтоб и с процедурой и без использования процедуры эту задачу решить
0
25.12.2008, 20:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2008, 20:37
Помогаю со студенческими работами здесь

В квадратной матрице поменять местами две строки с заданными номерами
В квадратной матрице А 1).поменять местами две строки с заданными номерами; 2) сформировать из...

В матрице поменять местами столбцы с заданными номерами
В заданной матрице А (N , М) поменять местами столбцы с номерами P и Q

В матрице А поменять местами две строки с заданными номерами
Помогите пожалуйста. Написать код нужно в C#. а) В матрице А поменять местами две строки с...

В матрице поменять местами две строки с заданными номерами
2)Из элементов полученной матрицы, которые лежат на главной диагонали и под ней, сформировать...


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

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

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