Помощь - Поиск - Пользователи - Календарь
Полная версия: Одномерный массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Kelsi
У меня тут одна задачка... не поможете ли решить?
Дано целое n<=100 и вещественный вектор a из n элементов. Вычислить величину z=сумма(от i=1 до r)xiyi, где элементами вектора x(x1,x2,...,xp) являются отрицательные элементы вектора а, взятые в порядке их следования, элементами вектора y(y1,y2,...,yq) являются неотрицательные элементы вектора а, взятые в порядке их следования, а r=min(p,q). huh.gif
klem4
И что тут сложного ?? может уже что-то сама сделала ? покажи, если что не так, исправим.
Kelsi
Если б я в этом, что понимала... У меня Паскаля отродясь не было smile.gif. Выдали методичку с задачами-решай как хочешь. И вообще, я никого ничего делать не заставляю. Хочешь-помоги, не хочешь-дело твое. Я без обид. ;)
volvo
Ну, вот что пришло в голову:
Код
const
 { Это только для примера, чтобы убедиться, что программа работает }
 n = 10;
 a: array[1 .. n] of real =
   (1, 2, -4, 5, -6, 9, -11, 8, 11, 10);

var
 i, i_neg, i_non_neg: integer;
 z: real;

begin
 z := 0;
 { это можно раскомментировать и сюда будут записаны случ. значения }
 {
 for i := 1 to n do
   a[i] := random(200) - 100;
 }

 i_neg := 1; i_non_neg := 1;
 repeat
   while (a[i_neg] >= 0) and (i_neg <= n) do
     inc(i_neg);
   if i_neg <= n then begin
     while (a[i_non_neg] < 0) and (i_non_neg <= n) do
       inc(i_non_neg);
     if i_non_neg <= n then begin
       z := z + a[i_neg]*a[i_non_neg];
       inc(i_neg); inc(i_non_neg);
     end;
   end;

   if (i_neg > n) or (i_non_neg > n) then break;
 until false;

 writeln('z = ', z:0:0);
end.
Kelsi
Volvo,ты просто супер-пупер!Сспасибо, что взялся помочь! :rev:
Но не мог бы мне объяснить, что такое inc и для чего он нужен (в смысле какие ф-ии выполняет)?
i_neg, i_non_neg - это у тебя x,y?
A[i]=random(200)-100 huh.gif ?
break, по ходу дела прирывает цикл?
Мне действительно хочется это все понять... Нет смысла списывать чужие решения - это мозгов не прибавит! rolleyes.gif
Объясни если не сложно...
volvo
По порядку:

Цитата(Kelsi @ 12.04.05 19:48)
что такое inc и для чего он нужен (в смысле какие ф-ии выполняет)?
inc(x) это то же самое, что и x := x + 1;

Цитата(Kelsi @ 12.04.05 19:48)
i_neg, i_non_neg - это у тебя x,y?
Не совсем smile.gif это текущий индекс соответственно отрицательного и неотрицательного числа в массиве. Когда нужно найти следующее отрицательное число, начинаем просматривать массив с индекса i_neg, а для поиска НЕотрицательного - с индекса i_non_neg...

Цитата(Kelsi @ 12.04.05 19:48)
A[i]=random(200)-100 huh.gif ?
Это - генерация случайных чисел в интервале от -100 до 100
Цитата(Kelsi @ 12.04.05 19:48)
break, по ходу дела прирывает цикл?
:yes:
Kelsi
Для отрицательных чисел в массиве нужно всегда использовать такую загогулину-random? ;)
P.S. от куда ты такой умный взялся unsure.gif ? Прям чувствую себя просто дурой набитой...
volvo
Цитата(Kelsi @ 12.04.05 20:22)
P.S. от куда ты такой умный взялся unsure.gif ?
Это как понимать? angry.gif Вот и помогай после этого людям...

Цитата
Для отрицательных чисел в массиве нужно всегда использовать такую загогулину-random?
Об этом Вы сможете прочитать в любой книжке по Паскалю.

Закрыто
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.