1. есть число n. пускай n=123. что будет, если разделить его на 10? получится 12,3. то есть 12 - целая часть, а 3 - остаток. далее снова делим на 10. 1,23. и в последний раз: 0,123. целая часть =0. на этом останавливаемся. а сколько раз выполнили деление? 3. вот и ответ. теперь запишем на паскале: как видно из вышенаписанного, нужно продолжать выполнять действия, пока целая часть не равна 0. то есть while n> 0 do и у нас есть некоторый счетчик итераций, значение которого и будет являться ответом. а тело цикла: n div 10 (целочисленное деление) inc(k) (увеличение счетчика) вторая: как я понял, нужно просто вывести на экран то, что должно получиться? нужно в цикле пройти по каждому символу. если он равен "*" (if s[i] = '*' then), ничего не делать. иначе вывести его два раза (write(s[i], добавить данные в начало файла нельзя. нужно либо записывать в новый, либо перезаписывать исходный (предварительно считав все в память)
//PascalABC.NET (версия 3.1, сборка 1196 от 09.03.2016) function Transpose(a: array[,] of integer): array[,] of integer; //Поворот на 90гр по часовой стрелке begin var m := Length(a, 0); var n := Length(a, 1); Result := new integer[n, m]; for var i := 0 to n-1 do begin for var j := 0 to m-1 do Result[i, j] := a[m-1-j, i]; end; end;
begin var n := ReadInteger('Введите n:'); //Заполнение матрицы NxN сл. числами и вывод на экран var a :=MatrixRandom(n, n); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(a[i,j]); println; end; println;
Println('поворот влево на 90 гр'); var b := Transpose(a); b:=Transpose(b); b:=Transpose(b); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(b[i,j]); println; end; println;
Println('поворот вправо на 90гр'); b := Transpose(a); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(b[i,j]); println; end; println;
Println('поворот на 180 гр'); b := Transpose(a); b := Transpose(b); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(b[i,j]); println; end; end.
Объяснение:
var
c :integer;
begin
c:=50;
end.