Страница 1 из 1

Паскаль двумерные и одномерные массив подскажите

Добавлено: 25 окт 2009, 15:46
yurka17
16) В матрице A[1..N,1..M] вычислить сумму элементов, находящихся правее столбца с максимальным элементом матрицы, и среднее арифметическое элементов, расположенных ниже строки с максимальным элементом матрицы.
в 16 задаче не могу понять как найти столбец с макс элементом и потом считать сумму числе правее него


25)Создать два целочисленных массива X[1..n] и Y[1..k], где n>k. Определить, можно ли в массиве Х найти такие k идущих подряд элементов X[i+1], X[i+2], . . . ,X[i+k], чтобы X[i+1]=Y[1], X[i+2]=Y[2], . . . ,X[i+k]=Y[k]. Написать программу, которая дает ответ 'да' и выводит начальный индекс в массиве Х (т.е. i+1) или дает ответ 'нет'.
проверте правильно ли написал 25
[syntax="pascal"]
var i,a,j:integer; r,t:boolean; x:array[1..10] of integer;
y:array[1..4] of integer;
begin
write('vvidite masiv x ');
for i:=1 to 10 do
begin
read(a);
x:=a;
end;
writeln;
write('vvidi masiv y ');
for i:=1 to 4 do
begin
read(a);
y:=a;
end;
i:=10;
j:=4;
repeat
if x=y[j] then r:=true else r:=false;
if r=false then j:=2;
j:=j-1;
i:=i-1;
until j=1;
if r=true then writeln('da i=',i) else writeln('net');
readln;
readln;
[/syntax]

Re: Паскаль двумерные и одномерные массив подскажите

Добавлено: 26 окт 2009, 04:58
atavin-ta

Код: Выделить всё

pascal Код:
var i,a,j:integer;
     r,t:boolean;
 x:array[1..10] of integer;y:array[1..4] of integer;
begin
writeln('vvidite masiv x ');
for i:=1 to 10 do
 read(x[i]);
writeln;
writeln('vvidi masiv y ');
for i:=1 to 4 do
 read(y[i]);
t:=false;
for i:=1 to 10-4 do
 begin
  r:=true;
  for j:=i+1 to i+k1 do
   if y[j-k]<>x[j] then r:=false;
  if r then begin
                    t:=true;
                    a:=i+1;
             end; 
 end;
if t then writeln('da i=',a) else writeln('net');
readln;
readln;

Re: Паскаль двумерные и одномерные массивы подскажите

Добавлено: 27 окт 2009, 01:52
dr.Jekill
yurka17 писал(а):в 16 задаче не могу понять как найти столбец с макс элементом и потом считать сумму числе правее него
Чтобы найти столбец с максимальным элементом, необходимо взять две дополнительных переменых, и запомнить первый элемент массива и номер столбца (1), потом перебирать элементы массива в цикле, и если будет встречаться элемент больше ранее запомненного, то запоминать его и номер его столбца.
Пример [syntax="pascal"]
var max: real;
jMax: integer;
...
max:=a[1,1];
jMax:=1;
for i:=1 to n do
for j:=1 to n do
if a[i,j]>max then
begin
max:=a[i,j];
jMax:=j;
end;
....
[/syntax]
Чтобы считать сумму чисел правее максимума, нужно перебирать эти элементы, начиная со столбца максимума и накапливать в заранее описанной переменной. Например так:
[syntax="pascal"]
sum:=0;
for i:=1 to n do
for j:=jMax to n do sum:=sum+a[i,j];
[/syntax]