тема 20
unknown
pascal
2 years ago
1.9 kB
6
Indexable
Program Circles; Uses GraphABC; Const N = 10; //количество кругов MinR = 5; //минимальный радиус Var R : Array [1 .. N] Of Integer; //массив с радиусами WW, //ширина графического окна WH, //высота графического окна MaxR, //максимальный радиус X, Y, // координаты текущего круга i, k, j, temp, m, left, right, mid, search : Integer; Begin CenterWindow; WW := WindowWidth; WH := WindowHeight; MaxR := WW div N div 2; //Заполняем массив случайными радиусами For i := 1 To N Do R[i] := Random(MaxR - MinR + 1) + MinR; //печатаем массив For i := 1 To N Do Write(R[i], ' '); Writeln; //рисуем круги Y := WH div 2; X := MaxR; SetPenColor(clWhite); SetBrushColor(clRed); For i := 1 To N Do begin Circle(X, Y, R[i]); X := X + 2 * MaxR; end; //сортировка простым выбором For i := 1 To N - 1 Do begin //ищем минимальный эл-т среди R[i]..R[N] k := i; For j := i To N Do begin If R[j] < R[k] Then k := j; end; //переставляем i-ый и k-ый temp := R[k]; R[k] := R[i]; R[i] := temp; //печатаем массив For m := 1 To N Do Write(R[m], ' '); Writeln; end; //бинарный поиск Readln(search); left := 1; right := N; mid := (left + right) div 2; While (left <= right) And (R[mid] <> search) Do begin mid := (left + right) div 2; If R[mid] > search Then right := mid - 1 Else If R[mid] < search Then left := mid + 1; end; If R[mid] = search Then Writeln(mid) Else Writeln('Нет'); end.
Editor is loading...