Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 01.04.2014, 00:13   #11 (permalink)
"Программист"
Новичок
 
Регистрация: 26.03.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот это чудо, это чудесный форум!!!!
Вы просто очень добрый человек, помогаете глупым студентам.
Хотя для вас наверное такие задачки смешны....
Но всё равно это невероятно!! Я если научусь такому тоже буду здесь всем помогать.
Спасибо большое!
"Программист" вне форума   Ответить с цитированием

Старый 01.04.2014, 00:13
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 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:03   #13 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

как это не использовать глобальные переменные =(? вот как теперь и жить (((
poiu вне форума   Ответить с цитированием
Старый 01.04.2014, 10:41   #14 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 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)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 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.
Gruvi вне форума   Ответить с цитированием
Старый 11.04.2014, 00:29   #17 (permalink)
"Программист"
Новичок
 
Регистрация: 26.03.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

У вас там получается что меняются строки местами, а нужно чтобы макимальные элементы менялись местами....
"Программист" вне форума   Ответить с цитированием
Старый 11.04.2014, 16:18   #18 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от "Программист" Посмотреть сообщение
Помогите ещё пожалуйста программу подкорректировать
Ужас, конечно!
Цитата:
Сообщение от "Программист" Посмотреть сообщение
procedure XL(const mt:matr; n1,m1:byte; var im,jm:byte);
Ну где Вы видели, чтобы константа была параметром процедуры?!
Цитата:
Сообщение от "Программист" Посмотреть сообщение
var na:=4;
ma:=5;
А это еще что за "чудеса в решете"?
Ладно, вот работающий вариант:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.