Дяденька, за готовыми решениями вам в другой раздел - Работа.
Задачи 1-4 на массивы и циклы,
Задача 5 на простую графику,
Задача 6 на связанный список на указателях.
Все достаточно стандартные.
Единственная интересная задача - задача 4.
И то, только если рассматривать алгоритм навигации на массиве.
Задача 4 решается примерно так:
Код:
procedure TForm1.FillArray(N : Integer);
var
A : Array Of Array Of Integer;
I, J : Integer;
dI, dJ : Integer;
V : Integer;
begin
// Create array
SetLength(A,N);
For I := Low(A) To High(A) Do
SetLength(A[i],N);
// Init array
For I := Low(A) To High(A) Do
For J := Low(A[i]) To High(A[i]) Do
A[I,J] := 0;
// Fill array
I := Low(A); J := Low(A[i]);
dI := 1; dJ := 0;
V := 1;
A[I,J] := V;
While V <= N*N Do
Begin
A[I,J] := V;
If Abs(dI) = 1
Then
Begin
If dI = 1 Then
Begin
If (I + dI > High(A)) Or (A[I + dI, J + dJ] <> 0)
Then
Begin
dJ := 1;
dI := 0;
End;
End
Else
Begin
If (I + dI < Low(A)) Or (A[I + dI, J + dJ] <> 0) Then
Begin
dJ := -1;
dI := 0;
End;
End;
End
Else
Begin
If dJ = 1 Then
Begin
If (J + dJ > High(A[i])) Or (A[I + dI, J + dJ] <> 0)
Then
Begin
dI := -1;
dJ := 0;
End;
End
Else
Begin
If (J + dJ < Low(A[i])) Or (A[I + dI, J + dJ] <> 0) Then
Begin
dI := 1;
dJ := 0;
End;
End;
End;
I := I + dI;
J := J + dJ;
Inc(V);
End;
// Print array
StringGrid1.ColCount := N;
StringGrid1.RowCount := N;
For I := 0 To N-1 Do
For J := 0 To N-1 Do
StringGrid1.Cells[I,J] := InttoStr(A[I,J]);
end;
Решение на граничных условиях.
Наверное, можно решить красивее, но пока не могу придумать. Кстати, данному алгоритму пофиг, четная размерность матрицы или нет.