Var n, i, a, q: integer; x: array[-30000..30000] of boolean; begin q := 0; write('n='); readln(n); for i := 1 to n do begin read(a); x[a] := true; end; write('Ваш массив без повторяющийхя элементов '); for i := -30000 to 30000 do if x[i] then begin write(i, ' '); inc(q); end; writeln; writeln('Кол-во элементов в новом массиве=', q);end.
Спираль из центра массива по часовой стрелке (для нечетных n): const n=7; var a:array[1..n,1..n] of integer; i,j,d,k,l,m:integer; begin k:=n*n; i:=n div 2 + 1; j:=n div 2 + 1; a[i,j]:=k; d:=1; for m:=1 to n div 2 do begin for l:=1 to d do begin k:=k-1; j:=j+1; a[i,j]:=k; end; for l:=1 to d do begin k:=k-1; i:=i+1; a[i,j]:=k; end; d:=d+1; for l:=1 to d do begin k:=k-1; j:=j-1; a[i,j]:=k; end; for l:=1 to d do begin k:=k-1; i:=i-1; a[i,j]:=k; end; d:=d+1; end; d:=d-1; for l:=1 to d do begin k:=k-1; j:=j+1; a[i,j]:=k; end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; end.
Согласно конструкции оператора ветвления: if <условие> then <команда, в случае, когда условие выполняется> else <когда условие НЕ выполняется>;
Обратите внимание на точки с запятыми. Также обратите внимание, что разрешается только одна команда. То есть, следующее решение будет неверно: if a > b then x:=a; y=b;
В таких случаях надо "оборачивать" с и end: if a > b then begin x:=a; y=b; end;
Или так: if a > b then begin x:=a; y=b; end else a:=5;
Рекомендую ещё раз обратить внимание на точки с запятой.
begin q := 0; write('n='); readln(n); for i := 1 to n do begin read(a); x[a] := true; end; write('Ваш массив без повторяющийхя элементов '); for i := -30000 to 30000 do if x[i] then begin write(i, ' '); inc(q); end; writeln; writeln('Кол-во элементов в новом массиве=', q);end.