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

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

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

> Одномерный массив
cxt
сообщение 9.04.2005 13:03
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
FreeMan
сообщение 9.04.2005 13:12
Сообщение #2


-
****

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

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


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

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


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.04.2005 13:17
Сообщение #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;
 К началу страницы 
+ Ответить 
cxt
сообщение 9.04.2005 16:40
Сообщение #4


Новичок
*

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

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


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

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

Вычеслить произведение элементов массива расположенным между первым и вторым нулевыми элементами.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 9.04.2005 17:21
Сообщение #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 - 9.04.2005 17:21


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.04.2005 17:37
Сообщение #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.
 К началу страницы 
+ Ответить 
cxt
сообщение 9.04.2005 18:24
Сообщение #7


Новичок
*

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

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


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

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

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


Гость






cxt, я до последней цифры переделывать не буду. Тебе показали, как это делается, дальше - самостоятельно.
 К началу страницы 
+ Ответить 
cxt
сообщение 10.04.2005 10:46
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.04.2005 10:52
Сообщение #10


Гость






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

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

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

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


Новичок
*

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

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


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

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

 



- Текстовая версия 20.07.2025 6:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"