![]() |
|
|
|
|
#1
|
|||
|
|||
|
сдавать надо, сейчас просто разбиратся не могу, 0 в этом,а надо сдать...потом буду сидеть учить,но лучше б чтоб они были. вот тексты.
1. дана символьная тсрока. расположить символы в строке по возрастанию их внутренних кодов. 2.дан массив целых чисел.упорядочить числа по возрастанию.определить количесвто цифр в числах, стоящих на нечетных местах.вывести информацию на экран дисплея. 3.вывести на дисплей все строки текстого файла, содержащие слово *москва*. 4.дано нечетное число n. заполнить квадратную матрицу размером n*n следующим образом: 1- 2- 3- 4-5 16-17-18-19-6 15-24-25-20-7 14-23-22-21-8 13-12-11-10-9 5.нарисовать окружность радиуса R=30 и передвигать ее по траектории x=r cos(t) (Rx) y=r sin(t) (Ry) при t [0.4П] , Rx=300; Ry=200 6. реализовать процедуры *вывести элементы списка на экран* и *отсортировать по возрастанию список по значению поля символьного типа* для динамической структуры данныз Список. элемент списка является записью с двумя полями : символьного типа и типа указатель на элемент списка. Элементы списка располагаются в динамической памяти. СПисок задается указателем на первый элемент спика. |
|
#2
|
|||
|
|||
|
Дяденька, за готовыми решениями вам в другой раздел - Работа.
Задачи 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;Наверное, можно решить красивее, но пока не могу придумать. Кстати, данному алгоритму пофиг, четная размерность матрицы или нет. |
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Тоже добавлю свое решение 4 задачки:
Код:
procedure TForm5.Button1Click(Sender: TObject);
Type
TDirection = (dRight, dDown, dLeft, dTop);
Var
Count, i, Col, Row: Integer;
Direction: TDirection;
begin
Count := MatrixSize.Value * MatrixSize.Value;
Direction := dRight;
Col := 0; Row := 0;
for i := 1 to Count
do begin
Matrix.Cells[Col, Row] := IntToStr(i);
case Direction of
dRight: if (Col + 1 = MatrixSize.Value) or (Matrix.Cells[Col + 1, Row] <> '')
then begin
Direction := dDown;
Inc(Row);
end
else Inc(Col);
dDown: if (Row + 1 = MatrixSize.Value) or (Matrix.Cells[Col, Row + 1] <> '')
then begin
Direction := dLeft;
Dec(Col);
end
else Inc(Row);
dLeft: if (Col = 0) or (Matrix.Cells[Col - 1, Row] <> '')
then begin
Direction := dTop;
Dec(Row);
end
else Dec(Col);
dTop: if (Row = 0) or (Matrix.Cells[Col, Row - 1] <> '')
then begin
Direction := dRight;
Inc(Col);
end
else Dec(Row);
end;
end;
end; |
|
#5
|
|||
|
|||
|
Цитата:
Цитата:
Неприятно, что появляются темы, заканчивающиеся не решением проблемы, а номером его аськи. Интелектуальный потенциал форума ослабевает, а его организация близится к "барахолке". |
|
#6
|
|||
|
|||
|
Гы, все предложенные решения используют один и тот же алгоритм. Разная реализация, но суть одна и та же.
Тут явно должен быть какой-то хитрый алгоритм, бо как не зря в условии сказано, что n нечетное. Но я его не вижу. По поводу товарища XTen, согласен. При следуюшем таком сообщении будет бан. |