IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Создание магического квадрата, +2 задачи на составление ур-ия прямой
gooddron123
сообщение 27.12.2004 15:51
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


1) Написать алгоритм создания магического квадрата любой размерности. (Магический квадрат: суммы элементов в каждом столбце равны сумме элементов в каждой строке равны сумме элементов на 2 больших диагоналях)
2) Дано 300 точек. Построить прямую (уравнение прямой), содержащую максимальное кол-во точек из этих 300.
(Примечание: в задаче необходимо использовать записи)
3)Дано 300 точек. Найти такую прямую (уравнение прямой) , чтобы разницы между суммой точек сверху и суммой точек снизу была минимальна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 27.12.2004 17:17
Сообщение #2


Гость






gooddron123
Цитата
Написать алгоритм создания магического квадрата любой размерности


Размерность до 16х16.
Const
 mn = 16;

Var
 p: Boolean;

Procedure Swap(Var a, b: Integer);
 Var T: Integer;
 Begin
   T := a; a := b; b := T
 End;

Procedure CreateMagic(n: Integer);
 Var
   i, j, k, s, b, r, m: Integer;
   a: Array[1 .. mn, 1 .. mn] Of Integer;
 Begin
   p := True;

   If Odd(n) Then
     Begin
       i := 1; j := Succ(n div 2);
       For k := 1 To Sqr(n) do
         Begin
           a[i,j] := k;
           If k mod n = 0 Then Inc(i)
           Else
             Begin
               Dec(i); Inc(j);
               If i = 0 Then i := n;
               If j > n Then j := 1
             End
         End;
     End

   Else
     If n mod 4 = 0 Then
       Begin
         k := 1;
         For i := 1 To n Do
           For j := 1 To n Do
             Begin
               a[i, j] := k; Inc(k)
             End;
         j := 2; m := n div 2;
         For i := 1 To m Do
           For k := 1 To m Div 2 Do
             Begin
               If j = Succ(m) Then j := 2
               Else
                 If j = (m + 2) Then j := 1;
                 s := Succ(n - i); b := Succ(n - j);
                 Swap(a[i, j], a[s, b]);
                 Swap(a[i, b], a[s, j]);
                 Inc(j, 2)
             End
       End

     Else
       If n <> 2 Then
         Begin
           k := 1;
           For i := 1 To n Do
             For j := 1 To n Do
               Begin
                 a[i, j] := k; Inc(k)
               End;
           r := Pred(n div 2) div 2; m := n div 2;

           For i := 1 To m Do
             Begin
               j := i;
               For k := 1 To r Do
                 Begin
                   If j > m Then j := 1;
                   s := Succ(n - i); b := Succ(n - j);
                   Swap(a[i, j], a[s, b]);
                   Swap(a[i, b], a[s, j]);
                   Inc(j)
                 End
             End;

           i := 1; j := Succ®;
           For k := 1 To m Do
             Begin
               If j > m Then j := 1;
               s := Succ(n - i);
               Swap(a[i, j], a[s, j]);
               Inc(i); Inc(j)
             End;

           i := 1; j := r + 2;
           For k := 1 To m Do
             Begin
               If j > m Then j := 1;
               b := Succ(n - j);
               Swap(a[i, j], a[i, b]);
               Inc(i); Inc(j)
             End
         End

       Else p := False;

   If p Then
     Begin
       For i := 1 To n Do
         Begin
           For j := 1 To n Do
             Write(a[i, j]: 4);
           WriteLn
         End
     End
   Else
     WriteLn( 'do not exists' )
 End;

Var
 n: Integer;

begin
 WriteLn('n = '); ReadLn(n);
 CreateMagic(n);
 ReadLn
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 17:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"