01.04.2014, 00:13 | #11 (permalink) |
Новичок
Регистрация: 26.03.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вы просто очень добрый человек, помогаете глупым студентам. Хотя для вас наверное такие задачки смешны.... Но всё равно это невероятно!! Я если научусь такому тоже буду здесь всем помогать. Спасибо большое! |
01.04.2014, 00:13 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Советую вам посмотреть уже обсуждаемые аналогичные темы Программы с процедурами Придуман гениальный способ борьбы с неправильной парковкой WeChat - новый способ оставаться на связи Любопытный способ отделки АС Способ просмотра скрытого изображения Написать программу в Pascal с процедурами и функциями |
01.04.2014, 00:35 | #12 (permalink) |
Новичок
Регистрация: 26.03.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
А можете ещё такую сделать, а то я думал однотипные все, но что-то не выходит...
Составить процедуру, исходными дан¬ными которой является матрица А из n строк и n столбцов, либо два массива B1,B2,...,Вn; C1,C2,...,Cm, либо один из них. Для проверки составленной внешней процедуры разработать головной модуль. Важно. Процедура не должна использовать «внутри себя» глобальных переменных. Все необходимое для работы процедуры и передачи результата должно осуществляться через параметры процедуры. Множество всех значений, имеющихся в массивах B1,B2,..., Bn; C1,C2,...,Cm, без повторения значений. И можете объяснить что требуется в задаче, а то не понятен даже вопрос... Я вот думаю так Например С= 1, 3, 5, 1, 0, 5 B= 1, 10, 0, 5, -10 тогда ответ D= 1, 3, 5, 0, 10, -10 |
01.04.2014, 10:41 | #14 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ждём с нетерпением!
Цитата:
Код:
Const N=20; M=16; Type Ar1=Array[1..N] of byte; Ar2=Array[1..M] of byte; Ar3=Array[1..N+M] of byte; Var B:Ar1; C:Ar2; D:Ar3; v,Nd:byte; Procedure Select(Q:Ar1; P:Ar2; var R:Ar3; var Nr:Byte); var i,j,k:byte; b:boolean; W:Ar3; begin k:=0; for i:=1 to N do begin b:=true; for j:=1 to k do if Q[i]=W[j] then b:=false; if b then begin Inc(k); W[k]:=Q[i]; end; end; for i:=1 to M do begin b:=true; for j:=1 to k do if P[i]=W[j] then b:=false; if b then begin Inc(k); W[k]:=P[i]; end; end; Nr:=k; R:=W; end; Begin Randomize; Writeln('Array B:'); for v:=1 to N do begin B[v]:=Random(40); Write(B[v]:4); end; writeln; writeln; Writeln('Array C:'); for v:=1 to M do begin C[v]:=Random(40)+10; Write(C[v]:4); end; writeln; writeln; Select(B,C,D,Nd); Writeln('Result:'); for v:=1 to Nd do Write(D[v]:4); Readln End. |
|
10.04.2014, 21:42 | #15 (permalink) |
Новичок
Регистрация: 26.03.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вау, спасибо большое за такую огромную помощь!!!!!!!!!!!
Помогите ещё пожалуйста программу подкорректировать В матрице A (4 строки, 5 столбцов) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов наибольшего элемента в произвольной части матрицы использовать процедуру. Program lab31; const n=4; m=5; type matr=array[1..n,1..m] of byte; procedure XL(const mt:matr; n1,m1:byte; var im,jm:byte); var i,j:byte; max1,max2:byte; begin max1:=mt[(n1-1),1]; for i:=1 to n1 do for j:=1 to m1 do if max1<mt[i,j] then begin max1:=mt[j,i]; im:=i; jm:=j; end; end; var na:=4; ma:=5; i1m,j1m,i2m,j2m, i,j,c:byte; var a:matr; begin for i:=1 to na do begin for j:=1 to ma do begin writeln('a[',i,',',j,']='); readln(a[i,j]); end; XL(a,n,m,i1m,j1m); writeln('i1m=',i1m); writeln('j1m=',j1m); XL(a,n,m,i2m,j2m); writeln('i2m=',i2m); writeln('j2m=',j2m); c:=a[i1m,j1m]; a[i1m,j1m]:=a[i2m,j2m]; a[i2m,j2m]:=c; for i:=1 to n do begin for j:=1 to m do begin write('a[',i,',',j,']='); writeln; end; end; end; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
10.04.2014, 22:52 | #16 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Вот программа просто меняет нижнюю и верхнюю половины:
Код:
// Дана матрица размера M x N. // (M — четное число). // Поменять местами верхнюю // и нижнюю половины матрицы. program Matrix55; var j,i,M,N,num:integer; a: array [1..10,1..10] of real; temp:real; bol:boolean; begin // Ввод данных writeln('Введите числа M (M — четное число)(M<=10) и N (N<=10)'); read(M); readln(N); writeln('Введите по ',N,' элементов (значения от 0 до 100) '); for i:=1 to M do begin write(i,' строки : '); for j:=1 to N do read(a[i,j]); end; // Решение for i:=1 to M div 2 do begin for j:=1 to N do begin temp:=a[i,j]; a[i,j]:=a[(M div 2) + i,j]; a[(M div 2) + i,j]:=temp; end; end; // ответ writeln; writeln('Ответ'); for i:=1 to M do begin writeln; for j:=1 to N do write(a[i,j],' '); end; end. |
11.04.2014, 16:18 | #18 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ужас, конечно! Ну где Вы видели, чтобы константа была параметром процедуры?!А это еще что за "чудеса в решете"?
Ладно, вот работающий вариант: Код:
const n=4; m=5; Type matr=array[1..n,1..m] of byte; procedure XL(mt:matr; n1,n2:byte; var im,jm:byte); var i,j:byte; max:byte; begin max:=mt[n1,1]; im:=n1; jm:=1; for i:=n1 to n2 do for j:=1 to m do if max<mt[i,j] then begin max:=mt[i,j]; im:=i; jm:=j; end; end; Var na1,na2,nb1,nb2,i1m,j1m,i2m,j2m,i,j,c:byte; a:matr; Begin na1:=1; na2:=2; nb1:=3; nb2:=4; for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']= '); readln(a[i,j]); end; writeln; writeln('Initial matrix:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:4); writeln; end; writeln; XL(a,na1,na2,i1m,j1m); writeln('i1m= ',i1m); writeln('j1m= ',j1m); XL(a,nb1,nb2,i2m,j2m); writeln('i2m= ',i2m); writeln('j2m= ',j2m); c:=a[i1m,j1m]; a[i1m,j1m]:=a[i2m,j2m]; a[i2m,j2m]:=c; writeln; writeln('New matrix:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:4); writeln; end; readln End. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|