Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Срочно нужна помощь по Delphi не позднее 25.04 (http://www.tehnari.ru/f43/t35255/)

Ciber 18.04.2010 19:33

Срочно нужна помощь по Delphi не позднее 25.04
 
Составьте программу, проверяющую, можно ли, меняя местами элементы одномерного массива А, получить одномерный массив B.
Дана вещественная матрица размером NxM. Упорядочить ее строки по неубыванию суммы их элементов.

Vladimir_S 18.04.2010 21:16

Цитата:

Сообщение от Ciber (Сообщение 324714)
Составьте программу, проверяющую, можно ли, меняя местами элементы одномерного массива А, получить одномерный массив B.

Можно. И безо всякой программы. Меняйте местами, что хотите - массив всё равно останется одномерным.
А если серьезно - то что это, извините, за ахинея? Конечно, можно строить всякие предположения - например, что требуется составить алгоритм получения из массива А УПОРЯДОЧЕННОГО (напр. по возрастанию) массива В путем перестановки ПАР СОСЕДНИХ ЭЛЕМЕНТОВ. Ну или еще что-нибудь в этом роде. Но, поскольку Вы не считаете нужным ХОТЯ БЫ ВНИМАТЕЛЬНО ПРОЧИТАТЬ то, что вываливаете на форум, то и с нас спрос не велик - разгадывать шарады типа "а что имел в виду автор вопроса?" мы не обязаны.

MrSTEP 18.04.2010 21:55

Я конечно согласен по поводу точности задания, и шарад. Как я понял задание: вводятся два массива, А и В. Надо определить, можно ли перестановкой элементов в массиве А сделать его равным массиву В

Vladimir_S 18.04.2010 22:14

Цитата:

Сообщение от MrSTEP (Сообщение 324757)
Я конечно согласен по поводу точности задания, и шарад. Как я понял задание: вводятся два массива, А и В. Надо определить, можно ли перестановкой элементов в массиве А сделать его равным массиву В

Пожалуй. Скорее всего, так. Однако, всё равно не понятно. Очень странная формулировка задачи - не "разработать алгоритм", а "определить, можно ли...". Совершенно очевидно, что да, можно.

MrSTEP 18.04.2010 22:49

Подозреваю, что при следующем наборе тестовых данных:
А=(1,2,3,4,5);
В=(5,4,1,2,3);
программа должна сообщить, что "можно", а при
А=(2,3,1);
В=(1 4,3);
"нельзя"

Ciber 19.04.2010 16:22

Цитата:

Сообщение от MrSTEP (Сообщение 324776)
Подозреваю, что при следующем наборе тестовых данных:
А=(1,2,3,4,5);
В=(5,4,1,2,3);
программа должна сообщить, что "можно", а при
А=(2,3,1);
В=(1 4,3);
"нельзя"

если я понял, то так он должен быть

Long Cat 19.04.2010 16:53

Сортируем первый и второй массивы. Сравниваем. Финиш.

DDS 20.04.2010 00:06

Вот 1 задача, а вторая очень лёгкая попробуйте сами её сделать(если что мы поможем:tehnari_ru_674:)
Код:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
 var j, m ,x, k: Integer;
    a,b:array[1..10]of integer;
    i:byte;
    s1,s2:string;
 begin
  randomize;
  form1.Panel1.Caption:='';
  form1.Panel2.Caption:='';
  form1.Panel3.Caption:='';
    for i:=1 to 10 do
        begin
        a[i]:=random(10);
        b[i]:=random(10);
        s1:=IntToStr(a[i]);
        s2:=IntToStr(b[i]);
        form1.Panel1.Caption:=form1.Panel1.Caption+s1+'  ';
        form1.Panel2.Caption:=form1.Panel2.Caption+s2+'  ';
        end;
{сортируем массив а}
  for i := 1 to 9 do
        begin
          m := i;
          x := A[i];
          for j := i + 1 to 10 do
            if x > A[j] then
              begin
                m := j;
                x := A[j];
              end;
            A[m] := A[i];
            A[i] := x;
        end;

{сортируем массив b}
  for i := 1 to 9 do
        begin
          m := i;
          x := b[i];
          for j := i + 1 to 10 do
            if x > b[j] then
              begin
                m := j;
                x := b[j];
              end;
            b[m] := b[i];
            b[i] := x;
        end;
 k:=0;
 for i:=1 to 10 do
    if a[i]=b[i] then inc(k);
 if k=10 then form1.Panel3.Caption:=' Можно '
        else form1.Panel3.Caption:=' Нельзя '
end;

end.


Ciber 22.04.2010 17:34

Цитата:

Сообщение от DDS (Сообщение 325216)
Вот 1 задача, а вторая очень лёгкая попробуйте сами её сделать(если что мы поможем:tehnari_ru_674:)
Код:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
 var j, m ,x, k: Integer;
    a,b:array[1..10]of integer;
    i:byte;
    s1,s2:string;
 begin
  randomize;
  form1.Panel1.Caption:='';
  form1.Panel2.Caption:='';
  form1.Panel3.Caption:='';
    for i:=1 to 10 do
        begin
        a[i]:=random(10);
        b[i]:=random(10);
        s1:=IntToStr(a[i]);
        s2:=IntToStr(b[i]);
        form1.Panel1.Caption:=form1.Panel1.Caption+s1+'  ';
        form1.Panel2.Caption:=form1.Panel2.Caption+s2+'  ';
        end;
{сортируем массив а}
  for i := 1 to 9 do
        begin
          m := i;
          x := A[i];
          for j := i + 1 to 10 do
            if x > A[j] then
              begin
                m := j;
                x := A[j];
              end;
            A[m] := A[i];
            A[i] := x;
        end;

{сортируем массив b}
  for i := 1 to 9 do
        begin
          m := i;
          x := b[i];
          for j := i + 1 to 10 do
            if x > b[j] then
              begin
                m := j;
                x := b[j];
              end;
            b[m] := b[i];
            b[i] := x;
        end;
 k:=0;
 for i:=1 to 10 do
    if a[i]=b[i] then inc(k);
 if k=10 then form1.Panel3.Caption:=' Можно '
        else form1.Panel3.Caption:=' Нельзя '
end;

end.


Спасибо за прогу))) но почему то он не разу не выдал сообщение "Можно", как его реализовать с помощью StringGrid?

DDS 22.04.2010 17:57

Не сразу выдал "можно", т.к. заполнение массива идет случайным образом и, следовательно, они не с первой попытки заполнились одинаково.
Со StringGrid сделаю, а со второй задачей Вы разобрались?


Часовой пояс GMT +4, время: 02:17.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.