Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 18.04.2010, 19:33   #1 (permalink)
Ciber
Новичок
 
Регистрация: 18.04.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Срочно нужна помощь по Delphi не позднее 25.04

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

Старый 18.04.2010, 19:33
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Мой вам совет - прочитайте похожие обсуждения

Два БП в один компьютер, срочно нужна помощь
Ассемблер. Срочно нужна помощь
Срочно нужна помощь по VBA Excel
Срочно нужна помощь, не запускается игра
Срочно нужна помощь!
Срочно нужна помощь в выборе нетбука

Старый 18.04.2010, 21:16   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ciber Посмотреть сообщение
Составьте программу, проверяющую, можно ли, меняя местами элементы одномерного массива А, получить одномерный массив B.
Можно. И безо всякой программы. Меняйте местами, что хотите - массив всё равно останется одномерным.
А если серьезно - то что это, извините, за ахинея? Конечно, можно строить всякие предположения - например, что требуется составить алгоритм получения из массива А УПОРЯДОЧЕННОГО (напр. по возрастанию) массива В путем перестановки ПАР СОСЕДНИХ ЭЛЕМЕНТОВ. Ну или еще что-нибудь в этом роде. Но, поскольку Вы не считаете нужным ХОТЯ БЫ ВНИМАТЕЛЬНО ПРОЧИТАТЬ то, что вываливаете на форум, то и с нас спрос не велик - разгадывать шарады типа "а что имел в виду автор вопроса?" мы не обязаны.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.04.2010, 21:55   #3 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Я конечно согласен по поводу точности задания, и шарад. Как я понял задание: вводятся два массива, А и В. Надо определить, можно ли перестановкой элементов в массиве А сделать его равным массиву В
MrSTEP вне форума   Ответить с цитированием
Старый 18.04.2010, 22:14   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
Я конечно согласен по поводу точности задания, и шарад. Как я понял задание: вводятся два массива, А и В. Надо определить, можно ли перестановкой элементов в массиве А сделать его равным массиву В
Пожалуй. Скорее всего, так. Однако, всё равно не понятно. Очень странная формулировка задачи - не "разработать алгоритм", а "определить, можно ли...". Совершенно очевидно, что да, можно.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.04.2010, 22:49   #5 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.04.2010, 16:22   #6 (permalink)
Ciber
Новичок
 
Регистрация: 18.04.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
Подозреваю, что при следующем наборе тестовых данных:
А=(1,2,3,4,5);
В=(5,4,1,2,3);
программа должна сообщить, что "можно", а при
А=(2,3,1);
В=(1 4,3);
"нельзя"
если я понял, то так он должен быть
Ciber вне форума   Ответить с цитированием
Старый 19.04.2010, 16:53   #7 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Сортируем первый и второй массивы. Сравниваем. Финиш.
Long Cat вне форума   Ответить с цитированием
Старый 20.04.2010, 00:06   #8 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

Вот 1 задача, а вторая очень лёгкая попробуйте сами её сделать(если что мы поможем)
Код:
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.
DDS вне форума   Ответить с цитированием
Старый 22.04.2010, 17:34   #9 (permalink)
Ciber
Новичок
 
Регистрация: 18.04.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от DDS Посмотреть сообщение
Вот 1 задача, а вторая очень лёгкая попробуйте сами её сделать(если что мы поможем)
Код:
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?
Ciber вне форума   Ответить с цитированием
Старый 22.04.2010, 17:57   #10 (permalink)
DDS
Member
 
Регистрация: 15.02.2009
Сообщений: 695
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 523
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.