![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задача с двумя массивами [D5, WinXP]
Борис © (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)
Спасайся бегством.
Или озвучь сумму.