Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.03.2009, 12:17   #1
Shevali
Пользователь
 
Регистрация: 09.03.2009
Сообщений: 49
По умолчанию Поменять значения переменных.

Всего несколько дней изучаю (самостоятельно) Паскаль, попалась такая задачка: Поменять между собой значения двух переменных (не используя третьей переменной). Я делал так:
Код:
var
a, b: integer;
begin
write ('vvesti a:  ');
readln (a);
write ('vvesti b:  ');
readln (b);
a:=b:
writeln('a:  ',a);
b:=a;
writeln ('b:  ',b);
end.
Значению a присваивается значение b, а вот значению b присваивается значение a но уже изменённое (а не начальное). Видимо нужно ввести в программу что-то ещё, только я незнаю что. Подскажите.
Спасибо.

Последний раз редактировалось Stilet; 04.10.2013 в 13:49.
Shevali вне форума
Старый 15.03.2009, 12:21   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
a:=a+b;
b:=a-b;
a:=a-b;
Советую посмотреть как это работает в отладчике(через F7 и Watch)
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума
Старый 15.03.2009, 12:27   #3
Shevali
Пользователь
 
Регистрация: 09.03.2009
Сообщений: 49
По умолчанию

Если так, то действительно получается. Спасибо.
Shevali вне форума
Старый 15.03.2009, 14:18   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Поменять между собой значения двух переменных (не используя третьей переменной)
кстати, если задание точно в такой формулировке, то, в общем случае, задача решения не имеет! Тип данных у переменных в задаче не задан.
А он может быть, например, массивом, или множеством, или, просто напросто строкой! :-( (про пользовательские типы данных я уже просто молчу.. )

А предложенное выше решение и для Integer не так безоблачно:
попробуйте код при больших значениях a и b (например, a := MaxInt и b:= MaxInt) :-(

В случае целочисленных типов (byte, word, Integer, LongInt) можно предложить такой способ:
Код:
var
  a, b : Integer;
begin
  a := MaxInt;
  b := 38;
  a := a xor b;
  b := a xor b; 
  a := a xor b;
end.

Последний раз редактировалось Serge_Bliznykov; 15.03.2009 в 14:20.
Serge_Bliznykov вне форума
Старый 04.10.2013, 13:19   #5
NaNamIT
Новичок
Джуниор
 
Регистрация: 23.07.2012
Сообщений: 2
По умолчанию

Подробное решение на сайте http://solution.3dn.ru/publ/zadachi/a_i_b/1-1-0-12
Подробно все рассказанно и показанно на примерах советую посмотреть
NaNamIT вне форума
Старый 04.10.2013, 13:37   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от NaNamIT Посмотреть сообщение
Подробное решение на сайте http://solution.3dn.ru/publ/zadachi/a_i_b/1-1-0-12
Подробно все рассказанно и показанно на примерах советую посмотреть
Угу. Достаточно подробно.
но.
первое. Ничего более нового (по сравнению с тем, о чём было сказано в данной теме) там не говорится.

второе. И, главное, делается та же самая ошибка, что и в исходном задании: ничего не сказано про тип данных!!!!
Это, по меньшей мере, - НЕ КОРРЕКТНО! ;(

вот, попробуйте поменять значения переменных A и B, если они, например, строкового типа:
Код:
var A, B : string;
begin
   A := 'Кукареку!';
   B := 'Два';

  ????
Serge_Bliznykov вне форума
Старый 04.10.2013, 13:54   #7
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Цитата:
var A, B : string;
begin
A := 'Кукареку!';
B := 'Два';
A= сцепитьстроки

B= Удалить из A кол-во символов равное B справа
A= Удалить из A кол-во символов равное А слева

Вроде как функции для такой работы с текстовыми переменными в паскале есть. Но все равно, Serge_Bliznykov прав в том задача не корректно поставлена.
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума
Старый 04.10.2013, 13:57   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  A:='Кукареку!';
  B:='Два';
  A:=A+B;
  B:=Copy(A,1,Length(A)-Length(B));
  A:=Copy(A,Length(B)+1,Length(A)-Length(B));
Подойдет?

ADD

SaLoKiN +1, вот именно

Ой, а теме то 100 лет скоро будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.10.2013 в 14:23.
Аватар вне форума
Старый 04.10.2013, 14:39   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Аватар, SaLoKiN - отлично!!! (хоть и не соответствует изложенному статье! )

"продолжаем разговор..." (c) Карлсон..

а если A и B типа double?
Код:
  a, b : double;
begin
  a := 0.000037457;
  b := 2.12E14;
  ???
а если A и B типа множество?
Код:
var
  a, b : set of byte;
begin
  a := [1,2,3,30,50,100];
  b := [1, 3, 6, 9, 12];

  ????
Задача, разумеется, та же самая - поменять их местами без использования доп.переменных.
Serge_Bliznykov вне форума
Старый 04.10.2013, 14:52   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сергей
Цитата:
а если A и B типа double?
А в чём здесь прикол? Почему нельзя использовать
Код:
a:=a+b;
b:=a-b;
a:=a-b;
?
===============================

А если множества не пересекаются, то, рискну предположить, что для них подойдёт тот же код, что и выше (операторы + и - определены и для паскалевских множеств)
Вадим Мошев вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОменять значения местами qip2005 Паскаль, Turbo Pascal, PascalABC.NET 6 24.12.2008 23:38
Вальс переменных Иллидан Общие вопросы Delphi 9 27.01.2008 10:39
Замена переменных NoName_emaNoN Win Api 4 18.01.2008 09:05
Ошибка в переменных Maugli-rus Общие вопросы Delphi 2 24.12.2007 07:44
Проверка переменных *_ViruS_* Общие вопросы C/C++ 3 21.09.2007 21:33