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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2009, 19:57   #1
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию Максимум суммы 2 элементов

здасьте.. мне надо найти максимум суммы двух элементов..
код слегка странноватый

Код:
procedure TForm1.Button3Click(Sender: TObject);
var p,q,pr,ch,code,i,max,max1,max2:integer; a:array[1..100] of integer;
    c,st:string;
begin  edit2.Text:=Edit2.Text+' ';  label7.Show;
p:=1; i:=0;
st:=edit2.Text;  max:=-maxINT;max1:=-maxINT;

{обработка Edit2}
repeat
pr:=pos(' ',st);
c:=copy(st,1,pr-1);
delete(st,1,pr);
val(c,ch,code);
i:=i+1;q:=i;
a[i]:=ch;
until st='';

{Нахождение максимума}
for i:=1 to q do begin
if a[i]>max then max:=a[i];end;

{Нахождение второго максимума}
for i:=1 to q do begin
if (a[i]>max1) and (a[i]<max) then max2:=a[i]; end;
max2:=max+max2;
label7.Caption:=label7.Caption+IntToStr(max2);
end;

Последний раз редактировалось Siluet; 26.09.2009 в 20:00.
Siluet вне форума Ответить с цитированием
Старый 26.09.2009, 21:01   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Каких элементов?
Двух элементов массива?

Код:
var
 i,n,tmp:integer;
 maximum:integer;
begin
 for i:=1 to 100-1 do //100 - кол-во элементов в массиве
  for n:=1 to 100-i do
   if ar[n]<ar[n+1] then
   begin
    tmp:=ar[n];
    ar[n]:=ar[n+1];
    ar[n+1]:=tmp;
   end;
 maximum:=ar[1]+ar[2];
end;
С сортировкой красивей)

Последний раз редактировалось TwiX; 26.09.2009 в 21:16.
TwiX вне форума Ответить с цитированием
Старый 26.09.2009, 21:10   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Или просто:

Код:
var
 m1, m2:integer;
 i:integer;

begin
 m1:=ar[1];
 m2:=ar[2];
 for i:=3 to 100 do
 begin
  if m1>m2 then
  begin
   if ar[i]>m2 then m2:=ar[i];
  end
  else if ar[i]>m1 then m1:=ar[i];
 end;
 maximumOf2:=m1+m2;
end;

Последний раз редактировалось TwiX; 26.09.2009 в 21:14.
TwiX вне форума Ответить с цитированием
Старый 26.09.2009, 21:16   #4
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
Или просто:

Код:
var
 m1, m2:integer;
 i:integer;

begin
 m1:=ar[1];
 m2:=ar[2];
 for i:=3 to 100 do
 begin
  if m1>m2 then
  begin
   if ar[i]>m2 then m2:=ar[i];
  end
  else if ar[i]>m1 then m1:=ar[i];
 end;
 maximumOf2:=m1+m2;
end;
чтото неправильно работает
Siluet вне форума Ответить с цитированием
Старый 26.09.2009, 21:17   #5
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

вот смотрите:
допустим вот массив: 2 4 8 6 2 9 2 3 4 8 1
два максимальных числа 9 и 8
вот необходимо чтобы программа эти 2 числа нашла..
Siluet вне форума Ответить с цитированием
Старый 26.09.2009, 21:19   #6
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Я там знак перепутал: вместо < поставил >.
Теперь поправил.
Максимальные элементы в первых двух элементах массива.
TwiX вне форума Ответить с цитированием
Старый 26.09.2009, 21:27   #7
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

оо.. работает! спасибо большое )
Siluet вне форума Ответить с цитированием
Старый 26.09.2009, 21:44   #8
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

а вот на делфи почему то не определяет

Код:
var q,pr,ch,code,i,m1,m2,maximum,kol:integer; ar:array[1..100] of integer;
    c,st:string;
begin  edit2.Text:=Edit2.Text+' ';  label7.Show;
p:=1; i:=0;
st:=edit2.Text;
kol:=length(st);
repeat
pr:=pos(' ',st);
c:=copy(st,1,pr-1);
delete(st,1,pr);
val(c,ch,code);
i:=i+1;q:=i;
ar[i]:=ch;
until st='';

 m1:=ar[1];
 m2:=ar[2];
 for i:=3 to kol do begin
  if m1>m2 then begin
   if ar[i]>m2 then m2:=ar[i];
  end
  else if ar[i]>m1 then m1:=ar[i];
 end;
maximum:=m1+m2;
label7.Caption:=label7.Caption+IntToStr(maximum);
end;
Siluet вне форума Ответить с цитированием
Старый 26.09.2009, 21:49   #9
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Я на делфи и пробовал)
TwiX вне форума Ответить с цитированием
Старый 26.09.2009, 21:53   #10
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

посмотри код
может ошибку найдеш..
Siluet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция подсчета суммы элементов после первого отрицательного nikzntu Общие вопросы C/C++ 0 13.01.2009 21:40
Вычислить и запомнить суммы положительных элементов каждой строки матрицы kiko Паскаль, Turbo Pascal, PascalABC.NET 1 13.12.2008 17:32
Найти разность суммы элементов массива В(20) с чётными номерами... никита989 Помощь студентам 6 16.01.2008 13:51
Найти отношения суммы элементов главной диагонали и суммы элементов побочной диагонали квадратной матрицы Elmander Помощь студентам 2 21.06.2007 07:15