Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/282: Рейтинг темы: голосов - 282, средняя оценка - 4.51
 Аватар для oinari
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69

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

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

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

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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2009, 19:56
Ответы с готовыми решениями:

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

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

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

14
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.11.2009, 20:25
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
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
 Аватар для oinari
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
08.11.2009, 21:28  [ТС]
Всем спасибо, разобрался.
Миниатюры
Ввод массива через процедуру  
0
 Аватар для oinari
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
08.11.2009, 21:43  [ТС]
Хорошо) а теперь хотелось бы узнать как осуществляется перемножение двух матриц в процедуре =)
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
08.11.2009, 21:49
oinari, процедура то не проблема... ты сам алгоритм понимаешь как сделать?(или ты и его не знаешь?)

Добавлено через 1 минуту
просто если есть алгоритм то я скажу как тебе чуть его поправить и всё...
0
 Аватар для oinari
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
08.11.2009, 22:44  [ТС]
Алгоритм то я знаю, мне не понятно как с процедурами и функциями работать.
Вот сижу с 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
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
Inadequate, ну вот вы тут во всех кодах операцию ввода и вывода реализуете в одной процедуре... а если мне надо, что бы одна процедура вводила, а другая - выводила. Так можно сделать? Вот код который у меня получился:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
11.10.2013, 18:35
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
Цитата Сообщение от Новичок Посмотреть сообщение
не работает.
А что странного? Ты же передаешь параметр массива по значению:
Pascal
1
procedure readm(mm,mn:integer; am:matrix);
а надо по ссылке:
Pascal
1
procedure readm(mm,mn:integer; var am:matrix);
2
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
12.10.2013, 08:55
Kodzaev, точно!
0
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 4
12.10.2013, 20:52
Новичок, согласен, с датой я тупанул) но всё таки оно не работает... и не понятно почему(
Kodzaev, теперь работает О_О а можно мне поподробней что от VAR изменилось?
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
12.10.2013, 22:45
triToniWe, объясню по простому. Без var процедура будет работать только с копией массива, т.е. массив, который мы передаем в процедуру не изменится. С var процедура будет работать уже не с копией, а с самой переменной. Т.е. изменение такого формального параметра приводит к изменению самого фактического параметра в вызывающей программе.
1
0 / 0 / 0
Регистрация: 25.11.2016
Сообщений: 4
30.11.2016, 19:40
а как сделать процедуру что бы проверяла иррациональное или не иррациональное число?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2016, 19:40
Помогаю со студенческими работами здесь

Ввод массива чисел через пробел и readln
Здрасте! Помогите с вопросом: Как в этом коде ввод массива ограничивать не цифрой а до нажатия Enter for i:= 1 to 10 do readln(arr); ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru