Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 03.03.2012
Сообщений: 10
1

Переставить в матрице первую и последнюю, вторую и предпоследнюю строки

03.03.2012, 00:30. Показов 2369. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа здравствуйте!
Требуется Ваша помощь для реализации 2-х заданий!
Задачи такие:
1. Вводится квадратная матрица n*n вещественного типа. Переставить в ней первую и последнюю, вторую и предпоследнюю и.т.д.. строки;

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


Если не ошибаюсь, то где-то на этом форуме находил решение 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
uses crt;
type mat=array [1..5,1..5] of real;
var a,b,c: mat;
 
procedure Vvod (c: char; n,m: integer; var z: mat);
var i,j: integer;
begin
clrscr;
writeln('Vvod in matrix ',c);
for i:=1 to n do
    for j:=1 to m do
        begin
        write(c,'[',i,',',j,']=');
        readln(z[i,j]);
        end;
end;
 
procedure Vyvod (c: char; n,m: integer; z: mat);
var i,j: integer;
begin
writeln('Vyvod matrix ',c);
for i:=1 to n do
    begin
    for j:=1 to m do
        write(' ',z[i,j]:1:2);
    writeln;
    end;
end;
 
procedure Change (n,m: integer; var z: mat);
var i,j: integer;
    buf:real;
begin
  for j:=1 to m do begin
    buf:=z[1,j];
    z[1,j]:=z[n,j];
    z[n,j]:=buf;
  end;
end;
 
begin
Vvod ('A',3,3,a);
Change (3,3,a);
Vyvod ('A',3,3,a);
readkey
end.
А по второму заданию я сделал так, что создаётся одномерный массив в который записываются Сред. арифметические значения положительных элементов вообще каждой строки....а мне нужно только тех, которые не содержат нулевых элементов. Я так думаю тут в коде нужно какой-нить ФЛАГ использовать, чтобы "фильтровать" строки, но тоже чёт не получилось ничего((
Вот что у меня получилось:
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
program laba;
uses crt;
var
   x: array[1..20,1..20] of real;
   y: array[1..20] of real;
   i,j,n,count,k:integer;
   summ:real;
   f: boolean;
begin
     clrscr;
     write('введите размер матрицы: '); readln(n);
     writeln('введите элементы матрицы: ');
     for i:=1 to n do
       for j:=1 to n do begin
         write('x(',i,',',j,')='); readln(x[i,j]);
       end;
 
   for i:=1 to n do begin
     summ:=0;
     count:=0;
     f:=true;
     for j:=1 to n do
         if(x[i,j]>0) then begin
           summ:=summ+x[i,j];
           inc(count);
         end;
       y[i]:=summ/count;
   end;
 
   writeln('Результирующая матрица:');
   for i:=1 to count do
     writeln('y(',i,')=',y[i]:1:2);
   readln
end.
Прошу Вашей помощи в реализации этих 2х заданий, или, модификации этих 2х кусков, что я выложил)
Заранее Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2012, 00:30
Ответы с готовыми решениями:

Поменять в матрице первую и последнюю строки, вторую и предпоследнюю, используя процедуру.
Нужно ввести квадратную матрицу, затем поменять в ней первую и последнюю строки, вторую и...

Как поменять местами строки в матрице? Первую и последнюю, вторую и предпоследнюю и.т.д
В матрице A(NxM) поменять местами строки так, чтобы перестановка выполнялась между первой с...

Переставить последнюю строчку на место первой. При этом первую, вторую, ..., предпоследнюю строку сместить вниз
дан двух мерный массив. Переставить последнюю строчку на место первой . при этом первую, вторую,...

В масиве А поменять местами первую и последнюю ,вторую и предпоследнюю строки и т.д
Помогите найти ошибку,почему не меняет Вот мой простенький код #include <iostream> #include...

6
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
03.03.2012, 00:49 2
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
54
55
const
  nmax=100;
type
  Tmatrix=array[1..nmax,1..nmax] of real;
procedure Vvod(var x:Tmatrix;var size_n:integer);
var
  i,j:integer;
begin
  repeat
    write('Porydok matritsy, ne bolee ',nmax,' ->');
    readln(size_n);
  until size_n in [1..nmax];
  writeln('Vvedite elementy matritsy:');
  for i:=1 to size_n do
    for j:=1 to size_n do
      begin
        write('[',i,',',j,']=');
        readln(x[i,j]);
      end;
end;
procedure Vyvod(msg:string;name:char;const x:Tmatrix;size_n:integer);
var
  i,j:integer;
begin
  writeln(msg,' ',name);
  for i:=1 to size_n do
    begin
      for j:=1 to size_n do
        write(x[i,j]:6:1);
      writeln;
    end;
  writeln;
end;
procedure Perestanovka(var x:Tmatrix;size_n:integer);
var
  i,j:integer;
  buf:real;
begin
  for i:=1 to size_n div 2 do
    for j:=1 to size_n do
      begin
        buf:=x[i,j];
        x[i,j]:=x[size_n-i+1,j];
        x[size_n-i+1,j]:=buf;
      end;
end;
var
  a:Tmatrix;
  n:integer;
begin
  Vvod(a,n);
  Vyvod('Ishodnaya matritsa','A',a,n);
  Perestanovka(a,n);
  Vyvod('Poluchennaya matritsa','A',a,n);
end.
1
0 / 0 / 1
Регистрация: 03.03.2012
Сообщений: 10
03.03.2012, 01:11  [ТС] 3
versa4e, большое Вам спасибо!
Логику замены понял, только не просек момент, почему в цикле по i Вы делаете size_n div 2 ...?
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
03.03.2012, 01:34 4
aleksey_ov, все просто, сколько пар строк подлежат перестановке? кол-во строк div 2, это и будет числом итераций цикла.
1
0 / 0 / 1
Регистрация: 03.03.2012
Сообщений: 10
03.03.2012, 19:49  [ТС] 5
versa4e, Да, понял, логично))
Спасибо еще раз!
А со второй задачей можете помочь?
0
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
03.03.2012, 19:55 6
Ну, вот функция, определяет были ли в строки матрицы нули:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
function NoZeroes(const x:Tmatrix;size_n,nStroki:integer):boolean;
var
  j:integer;
begin
  j:=1;
  while (j<=size_n) and (x[nStroki,j]<>0) do
    inc(j);
  if j>size_n then
    NoZeroes:=true
  else
    NoZeroes:=false;
end;
...
Pascal
1
2
3
  for i:=1 to n do
    if NoZeroes(a,n,i) then
      ...
Среднее арифметическое сам справишься, я думаю.
1
0 / 0 / 1
Регистрация: 03.03.2012
Сообщений: 10
04.03.2012, 00:49  [ТС] 7
versa4e, да, довёл до ума, всё работает!
Еще раз Большое Вам спасибо за помощь!
0
04.03.2012, 00:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2012, 00:49
Помогаю со студенческими работами здесь

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

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

В матрице поменять местами первую и последнюю строки
В матрице поменять местами первую и последнюю строки. ребята помогите пожалуйста, срочно, а то у...

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

Переставить строки матрицы: первую с последней, вторую - с предпоследней и так далее (ошибка в коде)
В двумерном массиве переставить строки следующим образом: первую с последней, вторую – с...

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


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

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