Предмет: Информатика, автор: fobas22

У меня есть матрица. По определенному закону я должен переназначить значения элементов между собой. Допустим у меня есть х=1 и у=2, как мне «поменять» у них значения между собой?
Вот кусок кода допустим, в котором я не уверен
for i=1 to n do
if x[i] Begin
x[i]:=y[i];
y[i]:=x[i];
end;
Получу ли я ожидаемый результат?


fobas22: if x[i] < y[i] to do
fobas22: Недописка
Аноним: Матрица - это двумерный массив, некрасиво к нему обращаться с одним индексом.
Аноним: x[i]:=y[i];
y[i]:=x[i]; - это неверно, сначала y попадет в х, потом скопируется назад. х пропадет, везде будет y.

Ответы

Автор ответа: Browze
2

Не получишь. Во-первых, не знаю, законно или нет, но у тебя нет логического выражения в условной конструкции(if).

Во-вторых, опять же, не знаю, если ли в твоем языке функция swap(), которое меняет содержимое, но я бы сделал так:

temp := x[i]; //объяви сначала дополнительную переменную

x[i] = y[i];

y[i] = temp;

Ибо, если судить по твоему коду, ты присваиваешь переменной X значение переменной Y(получается, что теперь X = Y), а затем присваиваешь переменной Y значение переменной X(хотя они уже равны).


Browze: В плюсах логичнее использовать функцию std::swap из библиотеки , чтобы не реализовывать свой алгоритм обмена. Вообще, это функция в этом языке перегружена под множество классов(Например, тот же basic_string - привычный нам string). Поэтому, если пользуешься C++, советую использовать.
Похожие вопросы
Предмет: Математика, автор: alihanzalelov6
Предмет: Математика, автор: ПолинкаМашинка1116