// PascalABC.NET 3.1, сборка 1219 от 16.04.2016 begin var a:=ReadLines('m17.txt').JoinIntoString.ToIntegers; a.Println; var b:=a.Select((x,i)->Rec(x,i)).Where(x->x.Item1<0) .Select(x->x.Item2).ToArray; if b.Count<>2 then Writeln('Количество отрицательных элементов не равно двум') else begin a:=SeqFill(b[0],0).Concat(a.Skip(b[0]).Take(b[1]-b[0]+1)) .Concat(SeqFill(a.Length-b[1]-1,0)).ToArray; a.Println end end.
Файл с исходными данными имеет имя m17.txt. Тестовый файл находится во вложении. Разбивка на строки сделана по 5 значений, но может быть совершенно произвольной. Также нет привязки именно к 17 числам, главное - чтобы отрицательных чисел было ровно два, иначе будет выдано сообщение о их неверном количестве.
var h,m,s: integer; i:integer; x,y: integer; g: real;
begin setwindowsize(w,w); read(h,m,s); h := h mod 12; setpenwidth(2); circle(w div 2, w div 2, r); for i := 0 to 59 do begin g := (i*360/60 - 90) * pi/180; if i mod 12 = 0 then begin x := w div 2 + round((r - dl) * cos(g)); y := w div 2 + round((r - dl) * sin(g)); end else begin x := w div 2 + round((r - dl div 3) * cos(g)); y := w div 2 + round((r - dl div 3) * sin(g)); end; line(x,y,w div 2 + round(r*cos(g)),w div 2 + round(r*sin(g))) end; setbrushcolor(clwhite); while true do begin setpencolor(clwhite); circle(w div 2, w div 2, sl); setpencolor(clblack); setpenwidth(1); g := (6*s - 90) * pi/180; x := w div 2 + round(sl * cos(g)); y := w div 2 + round(sl * sin(g)); line(w div 2, w div 2, x, y); setpenwidth(2); g := ((60*m + s)/10 - 90) * pi/180; x := w div 2 + round(ml * cos(g)); y := w div 2 + round(ml * sin(g)); line(w div 2, w div 2, x, y);
setpenwidth(3); g := (360*(60*60*h + 60*m + s)/12/60/60 - 90) * pi/180; x := w div 2 + round(hl * cos(g)); y := w div 2 + round(hl * sin(g)); line(w div 2, w div 2, x, y); s := s + 1; if s = 60 then begin m := m + 1; s := 0; end; if m = 60 then begin h := (h + 1) mod 12; m := 0 end;
0*42
3*41
0*5
364*3