16.03.2014, 20:47 | #1 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Программы с процедурами
Задача №1 Задача на использование формальных массивов в процедурах. Составить процедуру, исходными данными которой является матрица А из n строк и n столбцов, либо два массива B1,B2,...,Вn; C1,C2,...,Cm, либо один из них. Для проверки составленной внешней процедуры разработать головной модуль. Важно. Процедура не должна использовать «внутри себя» глобальных переменных. Все необходимое для работы процедуры и передачи результата должно осуществляться через параметры процедуры. Вывести измененный массив C1,C2,...,Cm: каждый элемент, предшествующий минимальному, помножен на него, а все следующие за минимальным уменьшены на 1. Я решал, общую форму программы написал примерно, а с позицией минимального элемента проблема.... PHP код:
PHP код:
Задача №2 Задача на разработку программы с использованием созданной в задании процедуры. Составить программу с разработкой и использованием указанной в задании процедуры. Напоминание: процедура не должна использовать «внутри себя» глобальных переменных. Все необходимое для работы процедуры и передачи результата должно осуществляться через параметры процедуры. В каждой из матриц: A (3 строки, 4 столбца) и B (5 строк, 5 столбцов) поменять местами две строки: в матрице A - строки 2 и 3, в матрице B - строки 2 и 4. Для обмена в матрице строк с произвольными номерами использовать процедуру. В этой задаче я испытал огромные сложности, не придя к правильному решению... Заранее спасибо! |
16.03.2014, 20:47 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Данные топики могут содержать в себе важную информацию Программы Поиск программы Поиск программы Бесплатные программы Написать программу в Pascal с процедурами и функциями |
16.03.2014, 21:52 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да... что-то, я смотрю, совсем у Вас программирование не идет... То, что Вы написали, это, увы, в основном просто набор каких-то символов типа "вокруг да около". Ну где, скажите на милость, Вы видели, чтобы константа была параметром процедуры?!
Вот, например, рабочая программка: Код:
const m=5; type Mass=array[1..m] of integer; Var C:Mass; j:Integer; Procedure Izmena (Mi:Integer; var Ci:Mass); var i,i_min,min:Integer; begin min:=Ci[1]; i_min:=1; for i:=2 to Mi do if Ci[i]<min then begin min:=Ci[i]; i_min:=i; end; for i:=1 to i_min-1 do Ci[i]:=Ci[i]*min; for i:=i_min+1 to Mi do Ci[i]:=Ci[i]-1; end; Begin C[1]:=5; C[2]:=5; C[3]:=4; C[4]:=2; C[5]:=7; for j:=1 to m do write(C[j]:5); writeln; Izmena(m,C); for j:=1 to m do write(C[j]:5); Readln End. |
16.03.2014, 22:20 | #3 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Type Matr=Array[1..5,1..5] of Integer; Var A,B:Matr; p,q:Integer; Procedure Exchange(N,s1,s2:Integer; Var C:Matr); var V:Array[1..5] of Integer; j:integer; begin for j:=1 to N do V[j]:=C[s1,j]; for j:=1 to N do C[s1,j]:=C[s2,j]; for j:=1 to N do C[s2,j]:=V[j]; end; Begin Randomize; Writeln('Old A matrix:'); for p:=1 to 3 do begin for q:=1 to 4 do begin A[p,q]:=Random(10); Write(A[p,q]:3); end; writeln; end; writeln; Writeln('Old B matrix:'); for p:=1 to 5 do begin for q:=1 to 5 do begin B[p,q]:=Random(10); Write(B[p,q]:3); end; writeln; end; writeln; Exchange(4,2,3,A); Exchange(5,2,4,B); Writeln('New A matrix:'); for p:=1 to 3 do begin for q:=1 to 4 do Write(A[p,q]:3); writeln; end; writeln; Writeln('New B matrix:'); for p:=1 to 5 do begin for q:=1 to 5 do Write(B[p,q]:3); writeln; end; Readln End. |
|
16.03.2014, 23:18 | #4 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо большое! Уже который раз выручаете))
Программирование не идёт совсем Вы правы... Преподаватель объясняет плохо, а заниматься самообучением времени нет, т.к. нельзя отставать по другим предметам (Учусь в университете на техническом, на электроэнергетика)... Пытаюсь кое как понять. Ещё раз спасибо) |
25.03.2014, 00:59 | #5 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Получил от преподавателя вторую программу обратно с таким комментарием:
PHP код:
P.S. немного изменил программу... |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
25.03.2014, 10:00 | #6 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Хорошо, попробуйте предложить такой вариант:
Код:
Type Vector=Array[1..5] of Integer; Matr=Array[1..5] of Vector; Var A,B:Matr; p,q:Integer; Procedure Izmena(s1,s2:Integer; Var C:Matr); var V:Vector; begin V:=C[s1]; C[s1]:=C[s2]; C[s2]:=V; end; Begin A[1,1]:=3; A[1,2]:=2; A[1,3]:=4; A[1,4]:=1; A[2,1]:=5; A[2,2]:=2; A[2,3]:=3; A[2,4]:=1; A[3,1]:=6; A[3,2]:=4; A[3,3]:=5; A[3,4]:=1; B[1,1]:=3; B[1,2]:=2; B[1,3]:=5; B[1,4]:=1; B[1,5]:=7; B[2,1]:=9; B[2,2]:=1; B[2,3]:=2; B[2,4]:=6; B[2,5]:=5; B[3,1]:=1; B[3,2]:=8; B[3,3]:=4; B[3,4]:=7; B[3,5]:=1; B[4,1]:=2; B[4,2]:=0; B[4,3]:=9; B[4,4]:=3; B[4,5]:=5; B[5,1]:=7; B[5,2]:=2; B[5,3]:=3; B[5,4]:=1; B[5,5]:=4; Writeln('Исходная матрица А:'); for p:=1 to 3 do begin for q:=1 to 4 do Write(A[p,q]:3); writeln; end; writeln; Writeln('Исходная матрица В:'); for p:=1 to 5 do begin for q:=1 to 5 do Write(B[p,q]:3); writeln; end; writeln; Izmena(2,3,A); Izmena(2,4,B); Writeln('Меняем строки'); Writeln; Writeln('Измененная матрица А:'); for p:=1 to 3 do begin for q:=1 to 4 do Write(A[p,q]:3); writeln; end; writeln; Writeln('Измененная матрица В:'); for p:=1 to 5 do begin for q:=1 to 5 do Write(B[p,q]:3); writeln; end; End. Код:
Type Matr=Array[1..5,1..5] of Integer; Var A,B:Matr; p,q:Integer; Procedure Izmena(s1,s2:Integer; Var C:Matr); var j,D:Integer; begin for j:=1 to 5 do begin D:=C[s1,j]; C[s1,j]:=C[s2,j]; C[s2,j]:=D; end; end; Begin A[1,1]:=3; A[1,2]:=2; A[1,3]:=4; A[1,4]:=1; A[2,1]:=5; A[2,2]:=2; A[2,3]:=3; A[2,4]:=1; A[3,1]:=6; A[3,2]:=4; A[3,3]:=5; A[3,4]:=1; B[1,1]:=3; B[1,2]:=2; B[1,3]:=5; B[1,4]:=1; B[1,5]:=7; B[2,1]:=9; B[2,2]:=1; B[2,3]:=2; B[2,4]:=6; B[2,5]:=5; B[3,1]:=1; B[3,2]:=8; B[3,3]:=4; B[3,4]:=7; B[3,5]:=1; B[4,1]:=2; B[4,2]:=0; B[4,3]:=9; B[4,4]:=3; B[4,5]:=5; B[5,1]:=7; B[5,2]:=2; B[5,3]:=3; B[5,4]:=1; B[5,5]:=4; Writeln('Исходная матрица А:'); for p:=1 to 3 do begin for q:=1 to 4 do Write(A[p,q]:3); writeln; end; writeln; Writeln('Исходная матрица В:'); for p:=1 to 5 do begin for q:=1 to 5 do Write(B[p,q]:3); writeln; end; writeln; Izmena(2,3,A); Izmena(2,4,B); Writeln('Меняем строки'); Writeln; Writeln('Измененная матрица А:'); for p:=1 to 3 do begin for q:=1 to 4 do Write(A[p,q]:3); writeln; end; writeln; Writeln('Измененная матрица В:'); for p:=1 to 5 do begin for q:=1 to 5 do Write(B[p,q]:3); writeln; end; End. Между прочим, по моему разумению, именно на этот момент должен был в первую очередь обратить внимание почтеннейший, вместо того, чтобы ловить блох в части оптимизации алгоритма обмена строк. |
25.03.2014, 21:04 | #7 (permalink) |
Member
Регистрация: 29.11.2013
Сообщений: 50
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо, а я пытался сделать так же как вы во втором примере, но не верно запустил цикл...Что-то вообще не получается ничего с информатикой...
И ещё не подскажете? Вместо записи: PHP код:
PHP код:
Заранее спасибо) |
26.03.2014, 09:59 | #8 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
PHP код:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|