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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2010, 23:09   #1
warma2d
Пользователь
 
Аватар для warma2d
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию Одномерный Массив Delphi7

Здравствуйте!


помогите пожалуйста с двумя идеями (то есть только с мясом самой программы) как можно решить вот такую задачу
"Найти номера пары последовательных элементов массива с наибольшим произведением." и другая задача "Найти номер наибольшего элемента массива , значения которых также принадлежат отрезку [- 2; 2,5]."

чтобы не показаться полным лентяем, скажу, что решил задачи самостоятельно, такие как "Напечатать элементы массива , по абсолютной величине большие 5, и найти их сумму."
также додумался как сделать такую задачу

"Для массива найти разность между суммой элементов с четными номерами и произведением элементов с нечетными номерами."

В знак доказательства выкладываю коды, но надеюсь, что это не будет неправильным действием

Код:
program Zadanie21;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  math;

Const

 m=40;
 Var
 b:array [1..m] of real; // Massiv
 n:integer; //Kol-vo n
 i:integer; //rabo4aya peremennaya
 s:real; // Summa
  begin
   writeln('V-te kol-vo n <=40');
   readln(n);
   writeln ('v-te massiv ');
   for i:=1 to n do
    read (b[i]);

    s:=0;
    for i:=1 to n do
      begin
      if abs (b[i])>5 then
      writeln('b=',b[i]:2:2);
       if abs (b[i])>5 then
    s:=s+b[i]; // SUMMA ELEMENTOV

    end;
     writeln('s=',s:2:2);

    readln;
    readln;
end.





program Zadanie;

{$APPTYPE CONSOLE}

uses
  SysUtils,math;
 Const

 m=40;
 Var
 b:array [1..m] of real; // Massiv
 n:integer; //Kol-vo n
 i:integer; //rabo4aya peremennaya
 s:real; // Summa
 p:real; //proizvedenie
 R:real; //Raznost
  begin
   writeln('V-te kol-vo n <=40');
   readln(n);
   writeln ('v-te massiv ');
   for i:=1 to n do
    read (b[i]);

    s:=0;
    for i:=1 to n do
      begin
      if not Odd(i) then
    s:=s+b[i]; // SUMMA ELEMENTOV 4etnux
    end;

    p:=1;
    for i:=1 to n do
      begin
      if Odd(i) then
      p:=p*b[i]; //Proizvedenie NE 4etnux
    end;
    R:=S-P;


    writeln('s=',s:2:2);
    writeln('p=',p:2:2);
    writeln('R=',R:2:2);
    readln;
    readln;
end.


Заранее Благодарю!
Skype: warma2d
ICQ: 838012
mail warma2d@ya.ru
warma2d вне форума Ответить с цитированием
Старый 14.11.2010, 23:28   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,864
По умолчанию

Цитата:
"Найти номера пары последовательных элементов массива с наибольшим произведением."
Перемножаем первые 2 элемента массива, записываем как максимум. Запоминаем индекс 1.
Проходим по массиву от 2-го элемента до предпоследнего. Перемножаем текущий и следующий. Если результат больше максимума, перезаписываем максимум и индекс.

Цитата:
"Найти номер наибольшего элемента массива , значения которых также принадлежат отрезку [- 2; 2,5]."
Записываем индекс = 0, максимум = -3.
Проходим по всем элементам массива. Если текущий элемент принадлежит отрезку и больше максимума, перезаписываем максимум и индекс.
Если индекс = 0 - говорим, что таких элементов нет, иначе выводим значение индекса.
Arigato вне форума Ответить с цитированием
Старый 15.11.2010, 00:17   #3
warma2d
Пользователь
 
Аватар для warma2d
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

Arigato очень благодарен за ответ.
но вы бы не могли написать ваши мысли в коде? т.к. у меня еще не хватает опыта с русских слов записать в код
Skype: warma2d
ICQ: 838012
mail warma2d@ya.ru
warma2d вне форума Ответить с цитированием
Старый 15.11.2010, 09:11   #4
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Код:
Program Lab1;
const m=10;
var
 A : array[1..m] of Integer;
 i,S,K : Integer;
 BigMult, start : Integer;
begin
for i := 1 to m do
 begin
 A[i] := -100 + random(200);
 end;

for i:=1 to m do write(A[i],' ');
writeln;

BigMult := A[1] * A[2];
start := 1;
for i := 2 to m-1 do
 begin
 if BigMult < A[i] * A[i+1] then
  begin
  BigMult := A[i] * A[i+1];
  start := i;
  end;
 end;

writeln(start,' ',start+1);

end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 15.11.2010, 09:53   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"Найти номер наибольшего элемента массива , значения которых также принадлежат отрезку [- 2; 2,5].
Твоя program Zadanie21:
Код:
 if  (b[i]>=-2)and(b[i]<=2.5)and(b[i]>b[max]) then max:=i;
...
Здесь max:integer - номер максимального элемента
Смысл понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2010, 21:18   #6
superDmitry
Пользователь
 
Аватар для superDmitry
 
Регистрация: 15.11.2010
Сообщений: 16
Печаль

Доброго времени суток! Я студент 1-го курса, и хотя не очень силён в программировании в программе Lab1 полностью разобрался)
Но программу Zadanie21 ей богу никак не могу сделать(. Очень прошу помогите пожайлуста!!!
Если Вас не затруднит, пожалуйста, напишите сюда полный текст программы.
Заранее огромное спасибо!
superDmitry вне форума Ответить с цитированием
Старый 16.11.2010, 11:14   #7
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Код:
program Zadanie21;
Const
 m=40;
 Var
 b:array [1..m] of real; // Massiv
 n:integer; //Kol-vo n
 i,max:integer; //rabo4aya peremennaya
  begin
   writeln('V-te kol-vo n <=40');
   readln(n);
   writeln ('v-te massiv ');
   for i:=1 to n do
//    read (b[i]);
   b[i] := -5 + 10*random();

   for i:=1 to n do
    write (b[i],' ');
   writeln;

    // Находим первый элемент в массиве удовлетворяющий условию
    max := 0;
    for i:=1 to n do
     if (b[i]>=-2)and(b[i]<=2.5) then begin max:=i; break; end;
    if max = 0 then begin writeln('В массиве нет ни одного элемента, лежащего в заданном отрезке');Exit; end;
    
    // Находим максимальный элемент удовлетворяющий условию
    for i:=max+1 to n do
     if (b[i]>=-2)and(b[i]<=2.5)and(b[i]>b[max]) then max:=i;

    writeln('Max=',b[max]:2:2);
    readln;
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 16.11.2010, 13:56   #8
superDmitry
Пользователь
 
Аватар для superDmitry
 
Регистрация: 15.11.2010
Сообщений: 16
По умолчанию

ОГРОМНОЕ СПАСИБО за помощь, Z1000000 !!!
superDmitry вне форума Ответить с цитированием
Старый 16.11.2010, 16:02   #9
warma2d
Пользователь
 
Аватар для warma2d
 
Регистрация: 17.12.2008
Сообщений: 50
По умолчанию

Z1000000, Stilet
Благодарю за помощь!
ещё теперь научился использовать random)
Skype: warma2d
ICQ: 838012
mail warma2d@ya.ru
warma2d вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив Горящее сердце Помощь студентам 5 02.06.2010 18:42
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
Одномерный массив xxxPascalxxx Помощь студентам 3 18.01.2009 15:23