Помощь - Поиск - Пользователи - Календарь
Полная версия: Одномерный массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
cxt
Задача:
В одномерно массиве состоящем из n целых чисел вычеслить номер максемального элемента массива

Не подскажите как подправить код чтобы массив нужно было бы вводить самому , а не при помощи randomize

Код


programm xxx;
const count=10;
var
m:array [1..count] of integer;
max,i:integer;
begin
randomize;
for i:=1 to count do
 begin
  m[i]:=random(count*2)+1;
  writeln(m[i], ' ');
 end;
writeln;
max:=m[1];
for i:=2 to count do
 begin
   if m[i]>max then
      begin
        max:=m[i];
      end;
 end;
writeln('Максимальный элемент ' , max);
end.  

FreeMan
Цитата
if m[i]>max then
      begin
        max:=m[i];
      end;

сделай
Код
if m[i]>m[max] then
     begin
       max:=i;
     end;
volvo
Цитата
как подправить код чтобы массив нужно было бы вводить самому

Код
for i:=1 to count do
begin
 m[i]:=random(count*2)+1;
 writeln(m[i], ' ');
end;

поменяй на
Код
for i:=1 to count do
begin
 write('m[', i, '] = '); readln(m[i]);
end;
cxt
Не поможете еще раз :D

Пунк Б в этой задаче.

Вычеслить произведение элементов массива расположенным между первым и вторым нулевыми элементами.
klem4
Код
i:=1;
while (i<=n)and(k=0) do
   begin
      if x[i]=0 then k:=i;
      inc(i);
   end;
  if not((k=0)or(k=n)) then
   begin
      i:=succ(k);
      while(i<=n)and(x[i]<>0) do
       begin
          p:=p*x[i];
          inc(i);
          if x[i]=0 then flag:=true;
       end;
       if flag then
       writeln('p=',p:2:3)
        else writeln('No')
   end;
volvo
klem4, все проще гораздо smile.gif
Код
const
 n = 10;
 a: array[1 .. n] of integer =
   (1, 2, 0, 4, 5, 6, 0, 8, 9, 10);
 count: integer = 0;

var
 ix: array[1 .. n] of integer;
 i, p: integer;
begin
 count := 0;
 for i := 1 to n do
   if a[i] = 0 then begin
     inc(count); ix[count] := i;
   end;

 { вот тут можно устроить проверку, "а есть ли вообще 2 нулевых элемента?" }
 p := 1;
 for i := ix[1] + 1 to ix[2] - 1 do
   p := p * a[i];
 writeln(p);
end.
cxt
Спасибо за помощь smile.gif

Но мне не нужен готовый массив
Цитата
(1, 2, 0, 4, 5, 6, 0, 8, 9, 10)

его нужно вводить самому... Это как бы одна задача первую нужно подредактировать чтобы получилась вторая.
volvo
cxt, я до последней цифры переделывать не буду. Тебе показали, как это делается, дальше - самостоятельно.
cxt
Ну не как немогу сделать... на верно все перепробовал не получается...

Щас массив вводится но щетает не верно

Код

program xxx;
const n=10;
var
a:array[1..n] of integer;
ix:array[1..n] of integer;
i,p,count:integer;
begin
for i:=1 to n do
begin
writeln('a[',i,']=');
readln(a[i]);
end;
for i:=1 to n do
if a[i]=0 then
begin
inc(count);
ix[count]:=i;
end;
p:=1;
for
i:=ix[i]+1 to ix[2]-1 do
p:=P*a[i];
writeln('Произведение равно' ,p);
end.
volvo
Ну, во-первых, где обнуление Count? (в моем варианте оно все-таки было). А второй вопрос - я НЕ ЗНАЮ, какие данные вводятся, может быть во вводимом массиве просто нет двух нулей? Я не телепат.

Кстати, ИМЕННО поэтому я и делаю задачу так, чтобы были видны данные, с которыми она работает.

Да и вот этой строчки у меня не было:
Цитата
for i:=ix[i]+1 to ix[2]-1 do

У меня было так:
Цитата
  for i := ix[1] + 1 to ix[2] - 1 do
cxt
Хех стоило поставить 1 и заработало...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.