|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите сделать задание. Нужно отсортировать массив до 1 и после
Я написал, но ответ не тот который нужен. Где ошибка?
Код:
var a:array[0..4] of integer; i,j,l,k,max,min:integer; begin for i:=0 to 4 do a[i]:=StrToInt(StringGrid1.Cells[i,0]); for i:=0 to 4 do begin min:=1; if (a[i]<1) then for j:=i+1 to 4 do if (a[i]<a[Min]) then min:=j; s:=a[i]; a[i]:=a[Min]; a[min]:=s; end; for i:=0 to 4 do begin max:=1; if (a[i]>1) then for l:=i+1 to 4 do if (a[i]>a[Max]) then max:=l; k:=a[i]; a[i]:=a[Max]; a[max]:=k; StringGrid2.Cells[i,0]:=IntToStr(a[i]); end; end; |
#2
|
|||
|
|||
непонятно, что конкретно нужно сделать.
Просто переместить те элементы, которые < 1, в начало массива? Типа так: Код:
var I, J, tmp : Integer; A : Array [0..4] Of Integer; begin // read and array for i:=0 to 4 do a[i]:=StrToInt(StringGrid1.Cells[i,0]); // "sorting" For I := 0 To 4 Do If A[i] >= 1 Then For J := I + 1 To 4 Do If A[J] < 1 Then Begin tmp := A[J]; A[J] := A[i]; A[i] := tmp; Break; End; // Print array for i:=0 to 4 do StringGrid1.Cells[i,0] := IntToStr(a[i]) end; |
#3
|
|||
|
|||
Вот задание "Превратить массив таким образом, чтобы сначала расположились все элементы модуль которых не превышает 1, а затем все остальные". Не в начале а которые меньше 1.Я так понял или я ошибся?
|
#4
|
|||
|
|||
Ты ошибся.
Причем в 2х местах. 1. У тебя должно быть не integer, а как минимум Double для типа элементов массива 2. Сравнение идет по модулю, т.е. абсолютному значению Должно быть как-то так: Код:
var I, J : Integer; tmp : Double; A : Array [0..4] Of Double; begin // read and array for i:=0 to 4 do a[i]:=StrToFloat(StringGrid1.Cells[i,0]); // "sorting" For I := 0 To 4 Do If Abs(A[i]) >= 1 Then For J := I + 1 To 4 Do If Abs(A[J]) < 1 Then Begin tmp := A[J]; A[J] := A[i]; A[i] := tmp; Break; End; // Print array for i:=0 to 4 do StringGrid1.Cells[i,0] := FloatToStr(a[i]) end; |
#5
|
|||
|
|||
Так тогда не понял задание, можете объяснить. Я использовал ваш код, ввёл числа: 3 разных числа, 1 и 0. И поменялось 1 число на 0. В чём смысл задания?
|
#6
|
|||
|
|||
Видимо, смысл в том, что бы перенести значения от -1 до 1 (по модулю меньше 1) в начало массива.
|