0 / 0 / 0
Регистрация: 03.12.2008
Сообщений: 9
|
|
1 | |
В матрице поменять местами два столбца с заданными номерами03.12.2008, 21:50. Показов 6941. Ответов 17
Метки нет (Все метки)
учусь на заочке
а задали задачу по Поскалю немогу решить помогите пожалуйста вот задача а) В матрице А поменять местами два столбца с заданными номерами; б) сформировать из элементов полученной матрицы, которые определяются как суммы элементов ее столбцов, диагональную матрицу С;
0
|
03.12.2008, 21:50 | |
Ответы с готовыми решениями:
17
В матрице А поменять местами две строки с заданными номерами В квадратной матрице A поменять местами два столбца с заданными номерами Поменять местами два столбца матрицы с заданными номерами В матрице поменять местами две строки с заданными номерами |
Почетный модератор
64304 / 47599 / 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. Во, кажется додул, держи. Код
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
|
Почетный модератор
64304 / 47599 / 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
|
Почетный модератор
64304 / 47599 / 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
|
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
06.12.2008, 10:57 | 8 |
Наверное <=. Вот решение. Код
а) Сформировать из столбцов В, не содержащих равных элементов, матрицу С размером 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
|
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
06.12.2008, 11:48 | 10 |
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
|
Почетный модератор
64304 / 47599 / 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 |
0
|
Почетный модератор
64304 / 47599 / 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
|
Почетный модератор
64304 / 47599 / 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 |
За это спасибо. Но мне надо чтоб и с процедурой и без использования процедуры эту задачу решить
0
|
25.12.2008, 20:37 | |
25.12.2008, 20:37 | |
Помогаю со студенческими работами здесь
18
В квадратной матрице поменять местами две строки с заданными номерами В матрице поменять местами столбцы с заданными номерами В матрице А поменять местами две строки с заданными номерами В матрице поменять местами две строки с заданными номерами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |