можно так же в ассемблере) ли и в других\языках с использованием поинтеров
А вот простенькая задачка
Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.
Любой говорите? Perl пойдет?($a,$b) = ($b,$a);
Развить Мышление
#41
Отправлено 26.09.2011, 17:07:13
#42
Отправлено 27.09.2011, 10:25:38
Самое правильное решение, причем для либых типов с их сохранением.Любой говорите? Perl пойдет?
($a,$b) = ($b,$a);
Аналогично решение записывается в Python, Ruby, Lua, F#, Ocaml'e
Большиству остальных довольствоваться только частными случаями - на каждый
обмен свой костыль
Через стек можно махнуть значения в Asm, Forth, всяких стековых IL'ах (типа нетовского)можно так же в ассемблере) ли и в других\языках с использованием поинтеров
С поинтерами будут работать только частные случаи, да и то под вопросом
#43
Отправлено 27.09.2011, 13:28:54
А вот простенькая задачка
Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.
Любой говорите? Perl пойдет?($a,$b) = ($b,$a);
C этим языком не знаком, а если дизасемблировать ехешник то я думаю компилятор все равно третью переменную использует.
Вот еще несколько вариантов решения
Код C# int x = 1; int y = 45; x = (y + x) - (y = x);
Код C# push(a); a = b; pop(b);
Код Pascal x:=x*y; y:=x div y; x:=x div y;
Код Pascal x:=round((x/100+y)*100); y:=x mod 100; x:=x div 100;
a := a xor b; b := b xor a; a := a xor b;
Мне нравиться метод с ипользованием стека, три такта процессора занимает.
наверное хватит, эту задачку хорошо студентам давать.
Сообщение отредактировал russo_turisto: 27.09.2011, 15:48:10
#44
Отправлено 27.09.2011, 16:27:24
Perl .... ехешник ...C этим языком не знаком, а если дизасемблировать ехешник то я думаю компилятор все равно третью переменную использует.
Код C# push(a); a = b; pop(b);Компилятор C# не нашел таких страшных слов у себя
Код Pascal x:=x*y; y:=x div y; x:=x div y;Fail> y := 0
Код Pascal x:=round((x/100+y)*100); y:=x mod 100; x:=x div 100;Fail> x := 100 y := 0
Итого 3 из 5 не работают в принципе, а последний работает только на целых
не нашел такогоМне нравиться метод с ипользованием стека, три такта процессора занимает.
вот им как раз плохо. лучше пусть основы учат, а это бесполезное баловство.... эту задачку хорошо студентам давать.
#47
Отправлено 05.10.2011, 16:33:39
Вот как это можно сделать на PHP (или, как его в народе называют, ПХП):Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.
$x = 4; //вместо чисел можно задавать и строковые константы, $y = 5; //например, "Да" и "Нет" list($y, $x) = array($x, $y);
#48
Отправлено 06.10.2011, 09:23:14
Вот как это можно сделать на PHP (или, как его в народе называют, ПХП):
Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.$x = 4; //вместо чисел можно задавать и строковые константы, $y = 5; //например, "Да" и "Нет" list($y, $x) = array($x, $y);
если дизасемблировать экзешник там не будет использоваться третья переменная ?
Сообщение отредактировал drptz: 06.10.2011, 09:24:11
#53
Отправлено 07.10.2011, 12:23:34
На здоровье. И если я кэп, то на правах кэпа напоминаю: построить троллейбус из буханки хлеба ( == дизассемболировать экзешник) пытались вы, а не я.Спасиба, кэп!
Лучше не засоряйте тему картинками с дебильным юмором. Против вас же и обернется.
Ваш К.О.
Сообщение отредактировал Visual1: 07.10.2011, 13:08:50
#54
Отправлено 07.10.2011, 14:43:08
На здоровье. И если я кэп, то на правах кэпа напоминаю: построить троллейбус из буханки хлеба ( == дизассемболировать экзешник) пытались вы, а не я.
Спасиба, кэп!
Лучше не засоряйте тему картинками с дебильным юмором. Против вас же и обернется.
Ваш К.О.
Где я пытался?
Вы помимо к.о. еще и модератор?
Что обернется и куда?
#55
Отправлено 07.10.2011, 15:31:58
Ах да, не пытался. Только хотел попытаться.Где я пытался?
Я не модератор (пока). Но предложить не засорять тему дебильными картинками я могу, или нет?Вы помимо к.о. еще и модератор?
Вы уже не маленький, должны сами понимать. Или все еще маленький? Тогда марш в песочницу! Не мешай взрослым дядям разговаривать.Что обернется и куда?
#58
Отправлено 11.10.2011, 12:35:38
О да, уже из Аааавстралии кое-кто слюной брызжет. Ну и зря.О да, щас наш MSDOS за оффтопик и выхватит... Модераааатор...
Однако же задачка. Дано целое неотрицательное число. Надо проверить, является ли оно степенью двойки.
public static bool IsPower2(uint num) { return (num & -num) == num; }
Количество пользователей, читающих эту тему: 0
пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0