|
#1
|
|||
|
|||
6 простых задач
сдавать надо, сейчас просто разбиратся не могу, 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, согласен. При следуюшем таком сообщении будет бан. |
#7
|
|||
|
|||
да для меня все задачи интересные...я вот вечером прихожу и все,надо уроки делать и даж времени на учебник нету....институт блин...просто думал форму начинающим а я в делфи 000 вот и поделился с людьми своей проблемой)
|
#8
|
|||
|
|||
Еще раз говорю. Если ты хочешь получить готовые решения, то тебе тогда в другой раздел. Если хочешь все-таки разобраться сам, то делай и спрашивай то, что не получается, но показывай свой код.
Подсказки: 1. Задача на цикл по массиву. Строка в данном случае рассматривается как массив символов. Символы можно сравнивать напрямую. Прочитай, хотябы, про сортировку пузырьком. Потребуется функция Length. 2. То же самое. Плюс: определение, что индекс элемента нечерный (остаток от деления на 2 <> 0), плюс перевод числа в строку и определение ее длинны (Length). 3. Читаем файл по строкам (F : TextFile) и если в строке есть нужное слово (функция Pos), то выводим ее, если нет - ничего не делаем. 4. Уже дали решение 5. Работа с канвой (Canvas, например у TImage). Просто использование методов канвы + цикл для вичисления по соотв. формулам центра. 6. Самая сложная задача в смысле кол-ва кода. Читай про связанные списки и работу с ними. Есть книжка "Готовые алгоритмы Delphi", где можно подсмотреть решение. Если первый метод "вывести элементы списка на экран" довольно простой, то со вторым, "отсортировать по возрастанию список по значению поля символьного типа" придется немного помучиться (сравнивать-то можно напрямую, а вот сортировать там сложнее, хотя, возможно, пузырек опять прокатит, только надо аккуратно его реализовать). |
#9
|
||||
|
||||
И так на всякий случай, есть такая функция Odd которая позволяет несколько доступнее определить четность/нечетность числа.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
все,первый три сдал...сейчас думаю что-то 4-ая сложная пропустить и сразу за график взятся или все таки разобраться с кодом предложенным мне...
|
#11
|
|||
|
|||
Разберись лучше. Там не сложно на самом деле.
|
#12
|
|||
|
|||
ну как сказать...на код пока забил а вот с рисованием...как нарисовать окружность я понял а вот как перемещать ее....
блин, трудно все это( |
#13
|
|||
|
|||
Цитата:
|
#14
|
|||
|
|||
благодарю за решение 4-ой,первым способом...)
просто во втором непонятно что а там вроде стринггрид... правда либо я глуплю,либо так надо было сделать,но короче заработало,еще раз спасибо) |