molodzo
Удален
|
Извините, а можете еще помочь. 1 макс. элемент найти получилось, а вот как найти 3??? function max_in_mas (a: massiv): integer; Var max1,max2,max3: integer; j: byte; begin for j:=1 to n do begin if a[j]>max1 then max1:=a[j]; end; max_in_mas:=max1; for j:=1 to n do begin if (a[j]>max2) and (max1>a[j]) then max2:=a[j]; end; max_in_mas:=max2; for j:=1 to n do begin if (a[j]>max3) and (max1>a[j]) and (max2>a[j]) then max3:=a[j]; end; max_in_mas:=max1; end; BEGIN writeln('razmer massiva a=',n); vvod(a); max1:=max_in_mas(a); writeln('max1= ', max1:5:0); max2:=max_in_mas(a); writeln('max2= ', max2:5:0); max3:=max_in_mas(a); writeln('max3= ', max3:5:0); END. После всего получается, что 3 макс. элемента равны, а они должны быть разными.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 дек. 2006 11:16 | IP
|
|
amigo
Начинающий
|
просто отсортируйте массив
|
Всего сообщений: 54 | Присоединился: март 2006 | Отправлено: 14 дек. 2006 15:05 | IP
|
|
amigo
Начинающий
|
Вот алгоритм сортировки: Procedure max_in_mas; Var i,j: byte; max,p:integer; begin for i:=1 to n-1 do begin max:=A; p:=I; for j:=I+1 to n do begin if A[j]>max then begin p:=j; max:=A[j]; end; end; max:=A; A:=A[p]; A[p]:=max; end; end; После сортировки все элементы выстроены по порядку. Если нужно найти Первые три максимальных то это будут A[1], A[2],A[3] соответственно. (Сообщение отредактировал amigo 14 дек. 2006 15:53)
|
Всего сообщений: 54 | Присоединился: март 2006 | Отправлено: 14 дек. 2006 15:38 | IP
|
|
KMA
Долгожитель
|
amigo, Можно и по другому, например, как вы нашли максимальный элемент и затереть его, например, поставить значению элемента 0. Кстати, прошу, пожалуйста, очень пожалуйста, ставь i не в квадратные скобки, а в фигурные, ведь все же теряется. molodzo, не удивительно, что так получается, ведь вы же находите один максимальный элемент во всем списке. Draconit давай, о цене договоримся. Пиши задачу в личку.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 14 дек. 2006 16:52 | IP
|
|
amigo
Начинающий
|
Draconit давай, о цене договоримся. Пиши задачу в личку.
Мы уже с ним почти договорились... Нечего клиентов отбивать.
|
Всего сообщений: 54 | Присоединился: март 2006 | Отправлено: 14 дек. 2006 17:04 | IP
|
|
amigo
Начинающий
|
(Сообщение отредактировал amigo 14 дек. 2006 17:47)
|
Всего сообщений: 54 | Присоединился: март 2006 | Отправлено: 14 дек. 2006 17:26 | IP
|
|
molodzo
Удален
|
В моей задаче так делать нельзя, ведь потом мне надо вывести весь массив+вставить после каждого макс. эл-та 0.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 дек. 2006 18:10 | IP
|
|
amigo
Начинающий
|
Это переделать можно за 2 минуты. Вам главное идею понять, она описана. Совет: непишите вы max1,max2,max3 а вместо этого просто заведите массив на три элемента. В этом массиве Вы будете хранить номера трёх максимальных элементов. А в исходной функции начните первый цикл с 1 до 3-х. И уберите перемещение элементов массива. Вообщем подумайте. Желаю удачи!
|
Всего сообщений: 54 | Присоединился: март 2006 | Отправлено: 14 дек. 2006 18:26 | IP
|
|
kotenokGaw
Удален
|
Помогите составить программу пожалуйста: "В строке слова разделены одним пробелом. Поменять местами первое и последнее слово."
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 дек. 2006 18:41 | IP
|
|
molodzo
Удален
|
Спасибо всем!Буду думать!
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 дек. 2006 18:49 | IP
|
|
|