Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 3
1

Работа с двумерным массивом

13.06.2017, 20:45. Показов 1302. Ответов 1
Метки нет (Все метки)

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

Delphi
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
program Zadanie3;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
Type Mass= array  [1..30] of real;  {Описание типа Mass}
 
 const
k=30; {Максимальные значения числа строк и столбцов матрицы}
l=30;
 
var
xx,yy: mass;
i,j,m,n,a,summ,t: integer;
sr:real;
x:array[1..k,1..l] of integer;
y:array[1..k] of double;
kol:array[1..k] of integer;
 
f: textfile;   {Переменная - указатель на файл (файл  типа текст)}
file_name: string; {Строковая переменная отвечающая за имя файла}
 
 
begin
 
  repeat  {Это начало цикла, заканчивающегося только в случае а = 3}
 
  repeat  {Из этого цикла не выйти, пока не будет введено одно из трех}
          {допустимых значений}
 
  writeln (' Меню');
  writeln ('1 - Из файла');
  writeln ('2 - Клавиатура');
  writeln ('3 - Рандом');
  writeln ('4 - Выход');
  readln (a)
  until  (a=1) or (a=2) or (a=3) or (a=4);
 
  if (a=1) or (a=2) or (a=3)  then  ;
 
 
  case a of   {Это оператор перехода по значению а}
 
1: begin
write ('Имя файла ');
readln (file_name); //Здесь вводится имя файла или(если необходимо) путь до файла + имя
assignFile (f, file_name);  //Переменная f связывается с именем файла
reset (f);             //Открытие файла
repeat
  begin
  write ('Число строк (1..30)');
writeln;
readln(n);
end;
until (n<=30) and (n>0);
 
 
for j:=1 to n do    {Ввод матрицы по строкам}
begin
for i:=1 to n do
read (f, x[i,j]); {Ввод осуществляется из файла f}
readln(f);  {Перевод строки в файле f}
end;
 
closefile (f);   {Закрытие файла}
writeln;
writeln ('Original matrix');  //Вывод на экран исходной матрицы
for j:=1 to n do begin
for i:=1 to n do
write (x[i,j]:5,' ');
writeln;
end;
 
for j:=1 to n do
begin
for i:=1 to n do
begin
if x[i,j]>0 then
kol[j]:=kol[j]+1;
if x[i,j]>0 then
y [j]:=(x[i,j]+y[j])/kol[j];  {Решение поставленной задачи}
end;
kol[j]:=0;
end;
 
writeln;
 
for j:=1 to n do               {Вывод на экран результатов}
writeln (' Номер столбца ',j:1, ' :Среднее арифметическое положительных элементов столбца=',y[j]:2:2);
writeln;  {Здесь просто переводится строка}
end;
 
2:begin
 
write ('Число строк и столбцов ');
readln(n);                      {Ввод количества строк и столбцов матрицы}
writeln ('Введите значение матрицы');
                {развертывание двумерного массива по строкам}
for i:=1 to n do    {Ввод матрицы по строкам}
for j:=1 to n do
read (x[i,j]);
 
 
writeln;
writeln ('Матрица');  {Вывод на экран исходной матрицы}
for i:=1 to n do begin
for j:=1 to n do
write (x[i,j]:5,' ');
writeln;
end;
 
for j:=1 to n do
begin
for i:=1 to n do
begin
if x[i,j]>0 then
kol[j]:=kol[j]+1;
if x[i,j]>0 then
y [j]:=(x[i,j]+y[j])/kol[j];  {Решение поставленной задачи}
end;
kol[j]:=0;
end;
 
writeln;
 
for j:=1 to n do               {Вывод на экран результатов}
writeln (' Номер столбца ',j:1, ' :Среднее арифметическое положительных элементов столбца=',y[j]:2:2);
writeln;  {Здесь просто переводится строка}
end;
 
  3:begin
write ('Число строк и столбцов ');
readln(n);                      {Ввод количества строк и столбцов матрицы}
  randomize;
  for i :=1  to n do
  for j :=1  to n do
  x[i,j]:=random(100)-random(100);
 
  writeln;
    writeln('Матрица');
     writeln;
    for i :=1  to n do begin
  for j :=1  to n do
  write (x[i,j]:5,'');
   writeln;
  end;
  for i:=1 to n do
y[j]:= 0;  {Здесь задаются начальные значения массива y[i]}
 
for j:=1 to n do
begin
for i:=1 to n do
begin
if x[i,j]>0 then
kol[j]:=kol[j]+1;
if x[i,j]>0 then
y [j]:=(x[i,j]+y[j])/kol[j];  {Решение поставленной задачи}
end;
kol[j]:=0;
end;
 
writeln;
 
for j:=1 to n do               {Вывод на экран результатов}
writeln (' Номер столбца ',j:1, ' :Среднее арифметическое положительных элементов столбца=',y[j]:2:2);
writeln;  {Здесь просто переводится строка}
end;
 
 
//Выход
4: exit;
end;
  writeln;
  write('Для продолжения  Enter');
  readln; {Ожидание нажатия клавиши Enter}
  until a=4;
 
 
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2017, 20:45
Ответы с готовыми решениями:

Выполнить действия с двумерным массивом
Для двумерного массива(в delphi 7) 1)упорядочить элементы в каждом слолбце по убыванию 2)удалять...

Непонятнки с двумерным массивом и стринггридом
Пытаюсь реализовать метод Гаусса, на стринггриде, писал до этого просто на массиве для паскаля,...

Ошибка с двумерным массивом, что делать?
Есть двумерный массив и я его пытаюсь считать но делфи выдает что-то непонятное, помогите плз....

Помогите разобраться с двумерным массивом в Делфи
1часть 2 часть Вопросы: 1)Не могу понять для чего сначала I:=0 ,а потом J пропускают через...

__________________
1
Модератор
1276 / 869 / 206
Регистрация: 31.05.2013
Сообщений: 5,862
Записей в блоге: 6
14.06.2017, 10:49 2
Цитата Сообщение от pey4ay Посмотреть сообщение
В моем коде не правильно считается сред.арифм.
А почему он должен правильно считаться?
kol[] нигде не инициализируется, не заполняется. Да он и вообще не нужен. Вместо него логичнее было бы использовать j.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2017, 10:49

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

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

Работа с двумерным массивом
дан двумерный массив размером n*m,заполненный случайным образом. 1.Заменить отрицательный элемент...

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

Работа с двумерным массивом
Добрый вечер, такая задача : Дано клетчатое поле размера N ×N, заполненное единицами и нуля-...

Работа с двумерным массивом
Организовать программу обработки двумерного массива А(6х6) Матрица (11 ,-24,3,-43,5,1) ...

Работа с двумерным массивом
По работе необходимо сравнивать две таблицы данных на одном листе Excel. Нашёл библиотеку Apache...


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

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

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