Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 00:14   #1
innaa639
Пользователь
 
Аватар для innaa639
 
Регистрация: 13.11.2008
Сообщений: 80
Вопрос одномерные массивы

Вот есть программка, по этому условию :

В одномерном массиве, состоящем из N вещественных элементов, вычислить:
1)количество элементов массива, лежащих в диапазоне от А до В;
2)сумму элементов массива, расположенных после максимального элемента.

Я вот только одно не могу понять как он считает сумму элементов массива, расположенных после максимального элемента...где эти элементы, их можно вывести на экран как-то, помогите пожалуйста....

Код:
program 1;
const n=100;
   var
      i,a,b,max,c,d,e : integer;
          mas : array [1..n] of integer;

begin
write('vvedite razmer massiva (1<n<100)');
readln(c);

for i:=1 to c do
mas[i]:=random(5);


writeln('vvedite A i B');
readln(a,b);

max:=1;

for i:=1 to c do
if mas[i]>mas[max] then max:=i;

e:=0;
max:=max+1;
for i:= max to c do
e:=e+mas[i];

writeln('elementov masiva mezdu A i B: ',abs(b-a));
writeln('summa elementov posle maximum: ',e);

readln

end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.10.2011 в 09:54.
innaa639 вне форума Ответить с цитированием
Старый 18.10.2011, 00:43   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

для того чтоб пощитать суму елементов лежащих после макс. елемента нужно:
1. Найти индекс макс. елемента.
2. Найти суму елементов начиная с елемента индекс которого на еденицу большый от индекса макс елемента.
Pein95 вне форума Ответить с цитированием
Старый 18.10.2011, 00:44   #3
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
Радость

Если вам нужно вывести сам массив на экран, то вот:
Код:
const n=100;
 var
 i,a,b,max,c,d,e : integer;
 mas : array [1..n] of integer;

 begin
 write('vvedite razmer massiva (1<n<100), n=');
 readln(c);

 for i:=1 to c do
 mas[i]:=random(5);

 writeln('massiv:');
 for i:=1 to c do write(mas[i],'  '); Writeln;
 writeln('vvedite A i B:');
 write('A='); readln(a);
 write('B='); readln(b);

 max:=1;

 for i:=1 to c do
 if mas[i]>mas[max] then max:=i;

 e:=0;
 max:=max+1;
 for i:= max to c do
 e:=e+mas[i];

 writeln('elementov masiva mezdu A i B: ',abs(b-a));
 writeln('summa elementov posle maximum: ',e);

 readln

 end.

Последний раз редактировалось kuy; 18.10.2011 в 00:46.
kuy вне форума Ответить с цитированием
Старый 18.10.2011, 00:44   #4
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

вот пример кода:
Код:
for i:=1 to n do
if a[i]>max thne imax:=i;

for i:=imax+1 to n do
sum:=sum+a[i];
Pein95 вне форума Ответить с цитированием
Старый 18.10.2011, 00:54   #5
innaa639
Пользователь
 
Аватар для innaa639
 
Регистрация: 13.11.2008
Сообщений: 80
По умолчанию

спасибо,сейчас попробую
innaa639 вне форума Ответить с цитированием
Старый 18.10.2011, 00:58   #6
innaa639
Пользователь
 
Аватар для innaa639
 
Регистрация: 13.11.2008
Сообщений: 80
По умолчанию

А если мах элементов несколько, то программа должна брать первый по очереди,правильно?
innaa639 вне форума Ответить с цитированием
Старый 18.10.2011, 04:40   #7
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

да правильно, и еще

1)количество элементов массива, лежащих в диапазоне от А до В;
если имееться в виду диапазон индексов тогда надо b-a-1, но тогда непонятно зачем abs. Если в диапазоне между елементами тогда это не так делаеться.
rUs_LAN вне форума Ответить с цитированием
Старый 18.10.2011, 10:34   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ох и понаписали...
что-то абсолютно правильно!
но и, к сожалению, местами абсолютно правильный код меняли на ошибочный!


Тогда я позволю себе привести свой вариант решения данной задачи.
Код:
program pMas;
const n = 100;
var
  i,
    imax, {индекс максимального элемента в массиве}
    c: integer; {количество элементов в массиве}
  A, B: real;
  kBetween: integer; {счётчик элементов между A и B}
  e: real; {для накомпления суммы элментов после максимального}
  mas: array[1..n] of real; {в условиях массив ВЕЩЕСТВЕННЫЙ!}

begin
  Randomize; {обязательно - чтобы числа были действительно случайными}

  repeat
    write('vvedite razmer massiva (1<n<100)');
    readln(c);
  until (c > 0) and (c <= 100);

  for i := 1 to c do
   {заполняем случайными числами от нуля до 9.9999}
    mas[i] := trunc(random * 100000) / 10000;

  writeln('vvedite A i B');
  readln(A, B);

  Writeln;
  Writeln('Ishodnyi msssiv');
  for i := 1 to c do
    Write(mas[i]: 2: 4, ' ');
  Writeln;

  {посчитаем количество элементов между A и B}
  kBetween := 0;
  for i := 1 to c do
    if (A < mas[i]) and (mas[i] < B) then inc(kBetween);


  {найдём максимальное значение}
  imax := 1;
  for i := 2 to c do
    if mas[i] > mas[imax] then imax := i;

  Writeln;
  WriteLn('Maximalnyi element mas[', imax, '] = ', mas[imax]: 2: 4);
  Writeln;

  e := 0.0;
  WriteLn('Elementy posle maximalnogo: ');
  for i := imax + 1 to c do begin
    e := e + mas[i];
    Write(mas[i]: 2: 4, ' ');
  end;
  Writeln;
  Writeln;

  writeln('elementov masiva mezdu A i B: ', kBetween);
  writeln('summa elementov posle maximum: ', e: 0: 4);

  readln

end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы Rakhim Помощь студентам 1 20.12.2009 16:44
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Одномерные массивы aiktz Помощь студентам 3 13.03.2009 16:49