Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 15
1

Обработка двумерных массивов со вспомагательными алгоритмами

25.01.2014, 12:13. Просмотров 398. Ответов 8
Метки нет (Все метки)


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

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
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
103
104
105
106
107
{---------- Двумерные массивы ---------------}
program primer1;
uses crt;
type stroka=array[1..20] of real;
     matr=array[1..20] of stroka;
 
var m,n,i,j,k,l,r:integer;
    s,s1,s2,ext:real; x,y:stroka;
    a:matr;
{---------- Вспомогательные функции---------------}
 
{----------- Сумма строки ------------------}
function summa(m:integer;x:stroka):real;
    var i:integer;  s:real;
begin
    s:=0;
    for i:=1 to m do 
        s:=s+x[i];
    summa:=s
end;
{-------------------Сумма модулей строки----------------------}
function summamod(m:integer;x:stroka):real;
    var i:integer;   s:real;
begin
    s:=0;
    for i:=1 to m do 
        s:=s+abs(x[i]);
    summamod:=s
end;
{------------ Процедуры ------------------}
 
{------------- Ввод массива с клавиатуры* ------------------------}
procedure wwod(var a:matr);
    var i,j:integer;
begin 
    clrscr;
    write('Введите к-во строк ');readln(n);
    write('Введите к-во столбцов ');readln(m);
    for i:=1 to n do
    begin
        for j:=1 to m do 
    begin
        write(' A[',i,',',j,']=');
        read(a[i][j])
    end;
    writeln;
    end;
end;
 
{------------- Присваивание значенй элементам массива---------------}
procedure priswaiwanie;
begin 
    n:=3;m:=4;
    a[1][1]:=3; a[1][2]:=0; a[1][3]:=-5;a[1][4]:=3;
    a[2][1]:=-4;a[2][2]:=-1;a[2][3]:=-2;a[2][4]:=-3;
    a[3][1]:=1; a[3][2]:=3; a[3][3]:=0; a[3][4]:=8;
end;
{------------- Вывод массива в виде матрицы ----------------------}
procedure wywod;
var i,j:integer;
begin  
    for i:=1 to n do begin
    for j:=1 to m do write('  ',a[i][j]:6:2);
             writeln end
end;
{------------- Смена знаков элементов строки* ----------------}
procedure znak(m:integer;var x:stroka);
var i:integer;
begin
    for i:=1 to m do x[i]:=-x[i];
end;
{------------- Максимум в строке, стоящИй на k-том месте--------------}
procedure maximum(m:integer;x:stroka;var k:integer;var ma:real);
var i:integer;
begin 
    k:=1;ma:=x[1];
    for i:=2 to m do 
    if x[i]>ma then begin
                    k:=i;ma:=x[i]
                    end
end;
{------Максимум по модулю в строке, стоящИй на k-том месте--------------}
procedure maximummod(m:integer;x:stroka;var k:integer;var ma:real);
var i:integer;
begin
    k:=1;ma:=abs(x[1]);
    for i:=2 to m do 
    if abs(x[i])>ma then begin
                         k:=i;ma:=abs(x[i])
                         end
end;
{--------------- Основная программа* -----------------}
begin
    clrscr;
    writeln('Введите массив:');
    wwod(a);
    writeln;
 
{-------  Вывод массива на экран --------}
{  clrscr; writeln('Введенный массив'); wywod; }
 
    for i:=1 to n do 
    begin
        s:=summa(m,a[i]);
    writeln('   Сумма ',i,'*строки =  ',s:5:2)
    end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2014, 12:13
Ответы с готовыми решениями:

Обработка двумерных массивов
Напишите программу, которая будет обрабатывать двумерный массив из N строк и М столбцов, с учетом...

Обработка двумерных массивов
Создать одномерный массив, содержащий произведение положительных элементов каждого

Обработка двумерных массивов (матриц)
Ребят! Помогите пожалуйста! Задали в вузе ,нужно сделать обязательно для зачета. Заранее...

Обработка элементов строк или столбцов двумерных массивов
Задан двумерный массив (n × m) целых чисел. В каждом его строке найти количество четных элементов.

__________________
Помогаю в написании студенческих работ здесь.
8
Модератор
62965 / 46969 / 32371
Регистрация: 18.05.2008
Сообщений: 113,838
25.01.2014, 13:09 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{---------Количество строк где элементы с разными знаками-------}
function kolstrok(a:matr;n,m:integer):integer;
var i,j,k,b:integer;
begin
k:=0;
for i:=1 to n do
 begin
  b:=0;
  j:=2;
  while(j<=m)and (b=0) do
  if a[i][j]*a[i][1]<0 then b:=1
  else j:=j+1;
  if b=1 then k:=k+1;
 end;
kolstrok:=k
end;
1
0 / 0 / 4
Регистрация: 14.06.2010
Сообщений: 82
27.01.2014, 23:54 3
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{---------Количество строк где элементы с разными знаками-------}
function kolstrok(a:matr;n,m:integer):integer;
var i,j,k,b:integer;
begin
k:=0;
for i:=1 to n do
 begin
  b:=0;
  j:=2;
  while(j<=m)and (b=0) do
  if a[i][j]*a[i][1]<0 then b:=1
  else j:=j+1;
  if b=1 then k:=k+1;
 end;
kolstrok:=k
end;
А в какую часть задачи этот кусок вставить, что б он считал?
0
Модератор
62965 / 46969 / 32371
Регистрация: 18.05.2008
Сообщений: 113,838
28.01.2014, 07:03 4
Саму функцию в раздел
{---------- Вспомогательные функции---------------}
А в основной программе вызвать ее
Pascal
1
writeln('Количество строк, где элементы с разными знаками=',kolstrok(a,n,m));
0
0 / 0 / 4
Регистрация: 14.06.2010
Сообщений: 82
28.01.2014, 10:42 5
Цитата Сообщение от Puporev Посмотреть сообщение
Саму функцию в раздел
{---------- Вспомогательные функции---------------}
А в основной программе вызвать ее
Pascal
1
writeln('Количество строк, где элементы с разными знаками=',kolstrok(a,n,m));
Вот я изменила:
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
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
{---------- Äâóìåðíûå ìàññèâû ---------------}
program primer1;
 
uses crt;
type stroka=array[1..100] of real;
     matr=array[1..100] of stroka;
 
var m,n,i,j,k,l,r:integer;
    s,s1,s2,ext:real; x,y:stroka;
    a:matr;
{---------- Âñïîìîãàòåëüíûå ôóíêöèè---------------}
  {Èçìåíèëà}
  function kolstrok(a:matr;n,m:integer):integer;
var i,j,k,b:integer;
begin
k:=0;
for i:=1 to n do
 begin
  b:=0;
  i:=2;
  while(i<=n)and (b=0) do
  if a[i][j]*a[i][1]<0 then b:=1
  else i:=i+1;
  if b=1 then k:=k+1;
 end;
kolstrok:=k
end;
{----------- Ñóììà ñòðîêè ------------------}
function summa (m:integer; x:stroka):real;
    var i:integer;  s:real;
   begin
    s:=0;
    for i:=1 to m do
    s:=s+x[i];
    Summa:=s;
end;
 
{-------------------Ñóììà ìîäóëåé ñòðîêè----------------------}
function summamod(m:integer;x:stroka):real;
    var i:integer;   s:real;
begin
    s:=0;
    for i:=1 to n do
        s:=s+abs(x[i]);
    summamod:=s
end;
{------------ Ïðîöåäóðû ------------------}
 
{------------- Ââîä ìàññèâà ñ êëàâèàòóðû* ------------------------}
procedure wwod(var a:matr);
    var i,j:integer;
begin
    clrscr;
    write('Ââåäèòå ê-âî ñòðîê ');readln(n);
    write('Ââåäèòå ê-âî ñòîëáöîâ ');readln(m);
    for i:=1 to n do
    begin
        for j:=1 to m do
    begin
        write(' A[',i,',',j,']=');
        read(a[i][j])
    end;
    writeln;
    end;
end;
 
{------------- Ïðèñâàèâàíèå çíà÷åíé ýëåìåíòàì ìàññèâà---------------}
procedure priswaiwanie;
begin
    n:=3;m:=4;
    a[1][1]:=3; a[1][2]:=0; a[1][3]:=-5;a[1][4]:=3;
    a[2][1]:=-4;a[2][2]:=-1;a[2][3]:=-2;a[2][4]:=-3;
    a[3][1]:=1; a[3][2]:=3; a[3][3]:=0; a[3][4]:=8;
end;
{------------- Âûâîä ìàññèâà â âèäå ìàòðèöû ----------------------}
procedure wywod;
var i,j:integer;
begin
    for i:=1 to n do begin
    for j:=1 to m do write('  ',a[i][j]:6:2);
             writeln end
end;
{------------- Ñìåíà çíàêîâ ýëåìåíòîâ ñòðîêè* ----------------}
procedure znak(m:integer;var x:stroka);
var i:integer;
begin
    for i:=1 to m do x[i]:=-x[i];
end;
{------------- Ìàêñèìóì â ñòðîêå, ñòîÿùÈé íà k-òîì ìåñòå--------------}
procedure maximum(m:integer;x:stroka;var k:integer;var ma:real);
var i:integer;
begin
    k:=1;ma:=x[1];
    for i:=2 to m do
    if x[i]>ma then begin
                    k:=i;ma:=x[i]
                    end
end;
{------Ìàêñèìóì ïî ìîäóëþ â ñòðîêå, ñòîÿùÈé íà k-òîì ìåñòå--------------}
procedure maximummod(m:integer;x:stroka;var k:integer;var ma:real);
var i:integer;
begin
    k:=1;ma:=abs(x[1]);
    for i:=2 to m do
    if abs(x[i])>ma then begin
                         k:=i;ma:=abs(x[i])
                         end
end;
{--------------- Îñíîâíàÿ ïðîãðàììà* -----------------}
begin
   clrscr;
    writeln('ìàññèâ:');
  {Èçìåíèëà ââîä íà ïðèñâàèâàíèå}
   priswaiwanie;
     writeln;
 
wywod;
{è çäåñü èçìåíèëà}
writeln('Êîëè÷åñòâî ñòðîê, ãäå ýëåìåíòû ðàçíûõ çíàêîâ =  ',kolstrok(a,n,m));
readln;
end.
Он мне пишет "выход за границы диапозона изменения индекса .."
0
Модератор
62965 / 46969 / 32371
Регистрация: 18.05.2008
Сообщений: 113,838
28.01.2014, 12:46 6
Цитата Сообщение от Китя Посмотреть сообщение
Вот я изменила:
Так смотреть нужно что меняете, нафига индекс j поменяли на i?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  function kolstrok(a:matr;n,m:integer):integer;
var i,j,k,b:integer;
begin
k:=0;
for i:=1 to n do
 begin
  b:=0;
  i:=2;//здесь
  while(i<=n)and (b=0) do//здесь
  if a[i][j]*a[i][1]<0 then b:=1
  else i:=i+1;//здесь
  if b=1 then k:=k+1;
 end;
kolstrok:=k
end;
Добавлено через 1 минуту
Нет чтобы просто скопировать код и вставить в программу, так надо в нем своими шаловливыми ручками полазить...
0
0 / 0 / 4
Регистрация: 14.06.2010
Сообщений: 82
28.01.2014, 12:47 7
Цитата Сообщение от Puporev Посмотреть сообщение
Так смотреть нужно что меняете, нафига индекс j поменяли на i?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  function kolstrok(a:matr;n,m:integer):integer;
var i,j,k,b:integer;
begin
k:=0;
for i:=1 to n do
 begin
  b:=0;
  i:=2;//здесь
  while(i<=n)and (b=0) do//здесь
  if a[i][j]*a[i][1]<0 then b:=1
  else i:=i+1;//здесь
  if b=1 then k:=k+1;
 end;
kolstrok:=k
end;
Добавлено через 1 минуту
Нет чтобы просто скопировать код и вставить в программу, так надо в нем своими шаловливыми ручками полазить...
Я НИЧЕГО НЕ МЕНЯЛА. КАК У ВАС БЫЛО ТАК И СКОПИРОВАЛА
0
Модератор
62965 / 46969 / 32371
Регистрация: 18.05.2008
Сообщений: 113,838
28.01.2014, 12:49 8
Не ври, посмотри свою цитату в посте № 3
0
0 / 0 / 4
Регистрация: 14.06.2010
Сообщений: 82
28.01.2014, 12:53 9
Ладно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2014, 12:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

Обработка двумерных массивов
А как Вы видите решение этой задачи? Исходные данные: В таблице приведено время выпечки...

Обработка двумерных массивов
Дана вещественная матрица А(N,M). Составить программу замены всех положительных элементов матрицы...

Обработка двумерных массивов
Количество элементов массива: 3,4 Тип: Целый Цель: Найти сумму минимального и максимального...


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

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

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