5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
1

Ввод массива через процедуру

08.11.2009, 19:56. Показов 54292. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему нули выдаёт...

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
uses
 crt;
const
 n=2;
 m=3;
type
 amas=array [1..n,1..m] of integer;
 bmas=array [1..m,1..n] of integer;
 
procedure vvodmas(v:integer);
var
 a:amas;
 i,j:integer;
begin
writeln('Вводим первый массив');
 clrscr;
 for i:=1 to n do
  for j:=1 to m do
   readln(a[i,j]); //ввод массива
end;
 
var
 a:amas;
 i,j:integer;
 
begin
vvodmas(1);
writeln('Первый массив');
for i:=1 to n do
  begin
   for j:=1 to m do
    write(a[i,j]:3); //вывод массива
    writeln;
  end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2009, 19:56
Ответы с готовыми решениями:

Формирование массива через процедуру и нахождение строки с максимальной суммой через функцию
Помогите пожалуйста. Нужно сформировать массив из элементов строки матрицы сумма котрой наибольшая...

Написать процедуру, удаляющую строку двумерного массива, содержащую минимальный элемент этого массива
Само задание! Написать процедуру, удаляющую строку двумерного массива, содержащую минимальный...

Через процедуру
Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить...

Ввод массива чисел через пробел и readln
Здрасте! Помогите с вопросом: Как в этом коде ввод массива ограничивать не цифрой а до нажатия...

14
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.11.2009, 20:25 2
Pascal
1
2
3
4
5
6
7
8
9
procedure vvodmas(var a:amas);
var i,j:integer;
.......................
var
 a:amas;
 i,j:integer;
 
begin
vvodmas(a);
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
08.11.2009, 20:32 3
oinari, вот правильно оформленая процедура ввода+вывода на её примере лепите то что вам нужно...
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
uses
  crt;
type
  MyArr=array [1..100,1..100] of integer;
var
  a:MyArr;
  b:MyArr;
  i,j:integer;
{ïðîöåäóðà ââîäà âûâîäà ìàòðèöû}
procedure WP(var a:MyArr; const ch:char);
var
  i,j,n,m:integer;
begin
  write('Êîëè÷åñòâî ñòðîê: ');
  readln(n);
  write('Êîëè÷åñòâî ñòîëáöîâ:');
  readln(m);
  for i:=1 to n do
    for j:=1 to m do
    begin
      write(ch,'[',i,',',j,']:');
      readln(a[i,j]); //ââîä ìàññèâà
    end;
  writeln('Èñõîäíûé ìàññèâ ',ch,':');
  for i:=1 to n do
  begin
    for j:=1 to m do
      write(a[i,j]:2,' ');
    writeln
  end;
end;
{îñíîâíàÿ ïðîãðàììà}
begin
  WP(a,'A');
  WP(b,'B')
end.
2
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
08.11.2009, 21:28  [ТС] 4
Всем спасибо, разобрался.
Миниатюры
Ввод массива через процедуру  
0
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
08.11.2009, 21:43  [ТС] 5
Хорошо) а теперь хотелось бы узнать как осуществляется перемножение двух матриц в процедуре =)
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
08.11.2009, 21:49 6
oinari, процедура то не проблема... ты сам алгоритм понимаешь как сделать?(или ты и его не знаешь?)

Добавлено через 1 минуту
просто если есть алгоритм то я скажу как тебе чуть его поправить и всё...
0
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
08.11.2009, 22:44  [ТС] 7
Алгоритм то я знаю, мне не понятно как с процедурами и функциями работать.
Вот сижу с 2мя книжками и просто не понимаю...

Pascal
1
2
3
4
5
6
7
8
9
10
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    x:=0;
     for k:=1 to m do
      x:=x+a[i,k]*b[k,j];
      c[i,j]:=x;
   end;
 end;
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
08.11.2009, 23:57 8
oinari, ну так здесь помогут, это похвально что пытаетесь понять, а не списать... щас я накарябаю побыстрому...)))

Добавлено через 46 минут
блин чо та нет затупил(((
oinari, вот смотри что не понятно спрашивай...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{процедура перемножения}
procedure Peremnoj(a,b:MyArr; const na,ma,nb,mb:integer; ch,ch1:char);
var
  i,j:integer;
begin
  if (na=nb) and (ma=mb) then
  begin
    writeln('Перемножение матриц ',ch,' и ',ch1);
    for i:=1 to na do
    begin
      for j:=1 to ma do
        write(a[i,j]*b[i,j],' ');
      writeln;
    end;
  end;
end;
Добавлено через 16 минут
это если тебе не нужно скадем запоминать результат перемножения в 3 матрицу, а просто вывести на экран... а если нужно будет еще и вывести в 3 тогда просто допиши в параметрах процедуры 3 матрицу как параметр, и допиши оператор присваивания... вот и всё...
1
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 4
11.10.2013, 14:57 9
Inadequate, ну вот вы тут во всех кодах операцию ввода и вывода реализуете в одной процедуре... а если мне надо, что бы одна процедура вводила, а другая - выводила. Так можно сделать? Вот код который у меня получился:
Код
type matrix=array[1..225,1..225]of real;
var m,n:integer; a:matrix;
procedure readm(mm,mn:integer; am:matrix);
 var i,j:integer;
 begin
      for i:=1 to mm do for j:=1 to mn do read(am[i,j]);
 end;
procedure writem(mm,mn:integer; am:matrix);
 var i,j:integer;
 begin
      for i:=1 to mm do begin
       for j:=1 to mn do write(am[i,j]:3:2,' ');
       writeln;
      end;
 end;
begin
     writeln('size of matrix:');
     readln(m, n);
     readm(m,n,a);
     writem(m,n,a);
end.
но проблема всё та же: приложение не запоминает элементы массива и выводит нули.
Методом тыка я определил, что: внутри процедуры в массиве запоминаются элементы и их можно вывести; вне процедуры элементы массива сразу же равны 0.
В чём может быть проблема?
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
11.10.2013, 18:35 10
triToniWe, да можно.Но лучше посмотрите на дату последнего поста.

Добавлено через 6 минут
Хи,странно даже так,
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
type matrix=array[1..225,1..225]of real;
var i,j,m,n:integer; a:matrix;
 
procedure readm(mm,mn:integer; am:matrix);
 var i,j:integer;
 begin
      for i:=1 to mm do for j:=1 to mn do read(am[i,j]);
 end;
procedure writem(mm,mn:integer; am:matrix);
 var i,j:integer;
 begin
      for i:=1 to mm do begin
       for j:=1 to mn do write(am[i,j]:3:2,' ');
       writeln;
      end;
 end;
begin
     writeln('size of matrix:');
     readln(m, n);
     for i:=1 to m do
     for j:=1 to n do a[i,j]:=0; 
     readm(m,n,a);
     writem(m,n,a);
end.
не работает.
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
11.10.2013, 21:53 11
Цитата Сообщение от Новичок Посмотреть сообщение
не работает.
А что странного? Ты же передаешь параметр массива по значению:
Pascal
1
procedure readm(mm,mn:integer; am:matrix);
а надо по ссылке:
Pascal
1
procedure readm(mm,mn:integer; var am:matrix);
2
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
12.10.2013, 08:55 12
Kodzaev, точно!
0
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 4
12.10.2013, 20:52 13
Новичок, согласен, с датой я тупанул) но всё таки оно не работает... и не понятно почему(
Kodzaev, теперь работает О_О а можно мне поподробней что от VAR изменилось?
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
12.10.2013, 22:45 14
triToniWe, объясню по простому. Без var процедура будет работать только с копией массива, т.е. массив, который мы передаем в процедуру не изменится. С var процедура будет работать уже не с копией, а с самой переменной. Т.е. изменение такого формального параметра приводит к изменению самого фактического параметра в вызывающей программе.
1
0 / 0 / 0
Регистрация: 25.11.2016
Сообщений: 4
30.11.2016, 19:40 15
а как сделать процедуру что бы проверяла иррациональное или не иррациональное число?)
0
30.11.2016, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2016, 19:40
Помогаю со студенческими работами здесь

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

Нахождение основных значений оформить через функцию, а вывод на печать – через процедуру
Дана квадратная вещественная матрица размерности n. Построить матрицу вектор (одномерный массив)...

Найти среди заданных N чисел число с наибольшим количеством делителей (через процедуру и через функцию)
Помогите, нужно решить эту задачу с помощью процедуры и функции, заранее спасибо) Дано N целых...

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


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

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

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