Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.09.2010, 21:50
pavlovnik pavlovnik вне форума
Прохожий
 
Регистрация: 24.09.2010
Сообщения: 5
Репутация: 10
По умолчанию 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  
Старый 26.09.2010, 03:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Дяденька, за готовыми решениями вам в другой раздел - Работа.

Задачи 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  
Старый 26.09.2010, 15:18
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от lmikle
Решение на граничных условиях.
Наверное, можно решить красивее, но пока не могу придумать. Кстати, данному алгоритму пофиг, четная размерность матрицы или нет.
4-ю задачу я уже решал, вот ссылочка... и на мой взгляд, у меня решение попроще)
Ответить с цитированием
  #4  
Старый 26.09.2010, 23:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Тоже добавлю свое решение 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  
Старый 27.09.2010, 00:36
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от Страдалецъ
Тоже добавлю свое решение 4 задачки:
Все-таки у меня покрасивше алгоритм будет) Хотя, как говорится, свое г.., всегда малиной пахнет) Очень приятно, за разнообразность решений.
Цитата:
Сообщение от XTen
ICQ: 410691984
Уважаемые админы, обратите внимание на данного пользователя, так как, по моим меркам, он разрушительно влияет на форум.
Неприятно, что появляются темы, заканчивающиеся не решением проблемы, а номером его аськи. Интелектуальный потенциал форума ослабевает, а его организация близится к "барахолке".
Ответить с цитированием
  #6  
Старый 27.09.2010, 04:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Гы, все предложенные решения используют один и тот же алгоритм. Разная реализация, но суть одна и та же.

Тут явно должен быть какой-то хитрый алгоритм, бо как не зря в условии сказано, что n нечетное. Но я его не вижу.

По поводу товарища XTen, согласен. При следуюшем таком сообщении будет бан.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025