Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Задача с двумя массивами [D5, WinXP]


Страницы:   1 2

Борис ©   (2008-11-18 17:38:00) 

Привет всем!
Помогите,пожалуйста, решить задачу -
Дано массив X(100) и Y(100). Нужно построить алгоритм, который меняет местами значения єлементов X(k) и Y(k) для єтих массивов, не используя вспомогательных переменных.
Спасибо!


ivak   (2008-11-26 00:16:00) [1]


> Здесь разве i  не переменная?


i - счётчик)
учи паскаль


KilkernnyCat   (2008-11-24 16:42:00) [2]


> Anatoly Podgoretsky

Значит, при неопределенных - проблема...


Anatoly Podgoretsky   (2008-11-24 14:18:00) [3]


> А если хотябы один из элементов MaxInt?

При определенных условиях это не является проблемой.


Denis__   (2008-11-24 14:10:00) [4]


> x[i] := x[i] - y[i];
> y[i] := y[i] + x[i];
> x[i] := - (x[i] - y[i]);

Здесь разве i  не переменная?

> Например строк.

Да много чего можно придумать:) Сказал то, что первое в голову пришло


Denis__   (2008-11-24 14:08:00) [5]


> капец,обмен без дополнителльной переменной !!! по паскалю
> в школе проходили на первом месяце


Класс 8 чтоль. Время на решение задачи - 5 минут. Кто справился - получает 5. кто не справляется, тот не просто не понимает о чем речь. У некоторых возникают вопросы типа [20]


Anatoly Podgoretsky   (2008-11-24 14:05:00) [6]

Denis__ ©   (24.11.08 13:53) [20]
Например строк.


Anatoly Podgoretsky   (2008-11-24 14:05:00) [7]


> Точнее "пробегали"!

В перерыве между занятиями.


Denis__   (2008-11-24 13:53:00) [8]

А кто сказал, что массивы из Integer?
А если из реалов, причем в одном очень большие числа, а в другом - маленькие? Или массив поинтеров%) или массив множеств, тогда там тоже не так. ку?


Германн   (2008-11-22 02:20:00) [9]


> ivak ©   (22.11.08 00:10) [18]
>
> капец,обмен без дополнителльной переменной !!! по паскалю
> в школе проходили на первом месяце:
>

Точнее "пробегали"!
:)


ivak   (2008-11-22 00:10:00) [10]

капец,обмен без дополнителльной переменной !!! по паскалю в школе проходили на первом месяце:

a := a + b;
b := a - b;
a := a - b;

вроде так...
ну а с массивом тоже самое только ещё for добавить.


Jeer   (2008-11-19 10:40:00) [11]


> у которых конец дня и на школьные задачки времени нету,


Зачем нам школьные задачи :) Это твоя задача.
А "умничают" для того, чтобы ты понял - простые решения на самом деле состоят из серии сложных.


int64   (2008-11-19 10:28:00) [12]

Zlodey   (18.11.08 18:50) [11]
StriderMan   (18.11.08 18:55) [12]

А если хотябы один из элементов MaxInt?


Борис   (2008-11-19 10:12:00) [13]

Для "начинающих" со стажем 15 лет, у которых конец дня и на школьные задачки времени нету, скажу- Respect for StriderMan . Zlodey -тоже вариант, но весь кайф в том , чтобы не использовать ни переменные, ни указатели, ни константы ни т.п. Дома вечером на досуге пришел к такому же решению на бумаге (после 19:00 у меня алергия на монитор). Словами классика скажу-"Все гениальное просто". Спасибо всем кто не "умничал".


Тын-Дын   (2008-11-18 21:13:00) [14]


> Борис   (18.11.08 17:38)  


См. ветку "Быстрый SWAP", там есть решение.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1226768553&n=18


Anatoly Podgoretsky   (2008-11-18 18:56:00) [15]


> Спасайся бегством.

Так долго бегать придется, если закон не изменили, то до 27 лет.


StriderMan   (2008-11-18 18:55:00) [16]

x[i] := x[i] - y[i];
y[i] := y[i] + x[i];
x[i] := - (x[i] - y[i]);


Zlodey   (2008-11-18 18:50:00) [17]

Можно и иначе:


var
 Form1: TForm1;
 M1: array [0..2] of Integer = ((1), (2), (3));
 M2: array [0..2] of Integer = ((4), (5), (6));

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
 i: Integer;
 P: Pointer;
begin
 for i := Low(M1) to High(M1) do
 begin
   M1[i] := M1[i] + M2[i];
   M2[i] := M1[i] - M2[i];
   M1[i] := M1[i] - M2[i];
 end;
 for i := Low(M1) to High(M1) do
   ShowMessageFmt('%d', [M1[i]]);
 for i := Low(M2) to High(M2) do
   ShowMessageFmt('%d', [M2[i]]);
end;


StriderMan   (2008-11-18 18:47:00) [18]


> Zlodey   (18.11.08 18:40) [7]

так это и есть неявное использование третьей переменной. Память выделяется же. даже указатель на нее есть :)


Palladin   (2008-11-18 18:43:00) [19]


> Zlodey   (18.11.08 18:40) [7]

"не в кассу", P дополнительная переменная )


Сергей М.   (2008-11-18 18:42:00) [20]

Бориску нв царство ? (с)


> Борис   (18.11.08 17:38)


Спасайся бегством.
Или озвучь сумму.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо