IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Одномерный массив
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Задача:
В одномерно массиве состоящем из 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.  

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


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

сделай
Код
if m[i]>m[max] then
     begin
       max:=i;
     end;


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
как подправить код чтобы массив нужно было бы вводить самому

Код
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;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Не поможете еще раз :D

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

Вычеслить произведение элементов массива расположенным между первым и вторым нулевыми элементами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Код
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;


Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Спасибо за помощь smile.gif

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

его нужно вводить самому... Это как бы одна задача первую нужно подредактировать чтобы получилась вторая.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






cxt, я до последней цифры переделывать не буду. Тебе показали, как это делается, дальше - самостоятельно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Ну не как немогу сделать... на верно все перепробовал не получается...

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

Код

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Ну, во-первых, где обнуление Count? (в моем варианте оно все-таки было). А второй вопрос - я НЕ ЗНАЮ, какие данные вводятся, может быть во вводимом массиве просто нет двух нулей? Я не телепат.

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

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

У меня было так:
Цитата
  for i := ix[1] + 1 to ix[2] - 1 do
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Хех стоило поставить 1 и заработало...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 17:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name