У меня есть матрица. По определенному закону я должен переназначить значения элементов...

0 голосов
59 просмотров

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


Информатика (29 баллов) | 59 просмотров
0

if x[i] < y[i] to do

0

Недописка

0

Матрица - это двумерный массив, некрасиво к нему обращаться с одним индексом.

0

x[i]:=y[i];y[i]:=x[i]; - это неверно, сначала y попадет в х, потом скопируется назад. х пропадет, везде будет y.

Дан 1 ответ
0 голосов

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

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

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

x[i] = y[i];

y[i] = temp;

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

(4.0k баллов)
0

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