Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "a" и "b", как поменять местами? 
:(
    Опции темы
TwisT_X
  Дата 8.6.2005, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Знаете такую фигню как решение уравнений методом дихотомии..
Ну так вот если там а больше б то их надо поменять местами а как я не знаю помогите люди добрые если нужен код то только скажите сразу же дам.. smile


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 8.6.2005, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



1) Какой язык программирвоания используете? smile smile
2) Или приведите код, если не хотите приводить название языка...
PM   Вверх
TwisT_X
Дата 8.6.2005, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Вот это библиотечная функция :
Код

unit MyLib1;

interface
//Тип функции, описывающей левую часть уравнения,
//в методе дихотомии (в функции Dihot)
type TFunc = function(X: real): real;
var a, b, c, Dx: real;
//Метод дихотомии для решения уравнения вида f(x) = 0
//a, b - границы начального интервала неопределенностиь (b > a)
//Dx - Допустимая абсолютная погрешность по аргументу
//Func - функция, описывающая левую часть уравнения
//Dihot возращает найденое значение корня
function Dihot(a, b, Dx: real; Func: TFunc): real;

implementation

function Dihot(a, b, Dx: real; Func: TFunc): real;
//Метод дихотомии для решения уравнения вида f(x) = 0
//a, b - границы начального интервала неопределенностиь (b > a)
//Dx - Допустимая абсолютная погрешность по аргументу
//Func - функция, описывающая левую часть уравнения
//Dihot возращает найденое значение корня
var X, Fa, Fx: real;
//Fa - значение функции в начале интервала неопределенности
//X - текущее приближение корня
//Fx - значение функции в текущей точке
begin
 Dx := 2. * Dx;
 Fa := Func(a);
 repeat
  X := (a + b) / 2;
  Fx := Func(X);
  if (Fa*Fx > 0)
  then a := X
  else b := X;
 until (b - a <= DX);
 Result := (a + b) / 2.;
end;

end.


Это само приложение с подключенной библиотекой:
Код

unit UMedih;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MyLib1;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

function F(X: real): real;
begin
 Result := X* exp(X) - 10.;
end;{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Корень равен ' +
                  FloatToStr(Dihot(StrToFloat(Edit1.Text),
                                   StrToFloat(Edit2.Text),
                                   StrToFloat(Edit3.Text), F));
end;

end.



--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 8.6.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



Итак... тебе нужно чтобы b стало a, a a стало b?
PM   Вверх
TwisT_X
Дата 8.6.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Угадал поможешь плиз ?


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 8.6.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



smile
Задачка сложновата... фух... может вот так?
Код

 buf:=a;
 a:=b;
 b:=buf;

PM   Вверх
Fixin
Дата 8.6.2005, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



a := a+b;
b := a-b;
a := a-b;

Логические операции быстрее.............
PM MAIL ICQ   Вверх
Mayk
Дата 8.6.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 5
Всего: 134



Логические это
Код

a := a xor b;
b := b xor a;
a := a xor b;

вот это?
Мне xor нравится больше, так как a xor b = b xor a, а вот a-b не равняется b-a => xor'ирование легче запомнить smile

Это сообщение отредактировал(а) Mayk - 8.6.2005, 19:08


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Fixin
Дата 8.6.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



Ну а я вот не запомнил smile smile smile smile smile smile
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 8.6.2005, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



а с real'ами попрет точно?
PM   Вверх
TwisT_X
Дата 9.6.2005, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Pakshin A. S. а что значит "buf" и "real" ?..
так что мне лучше использовать ?.. smile



--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 9.6.2005, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



smile

ОБАЛДЕТЬ!!! Такого еще не встречал...
Самы простой и верный вариантик (как в учебниках рассматривают) демонстрирует этот пример консоли:
Код

var
 a, b: real;
 buf: real;
begin
 a:=1;
 b:=2;
 writeln(a, ' ', b);
 buf:=a;
 a:=b;
 b:=buf;
 writeln(a, ' ', b);
 realdn;
end.

Добавлено @ 09:51
Разъясняя что есть что, получаем..
real - числовой тип переменных... в него моно запихнуть десятичные дробные числа...
buf - буфер обмена, в котором мы сохраняем значение переменной, чтобы потом его вновь использовать...
Добавлено @ 09:58
Народ с xor'ами!!! Вверху... в коде написано ясно, что тама переменные real типа, а xor для real переменных не предусмотрен!!! smile smile
PM   Вверх
Pakshin A. S.
Дата 9.6.2005, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



Цитата

The following logical operators perform bitwise manipulation on integer operands.
...

Это по поиску xor в обычном хелпе...

Это сообщение отредактировал(а) Pakshin A. S. - 9.6.2005, 10:03
PM   Вверх
SoWa
Дата 10.6.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 3
Всего: 74



Цитата
a := a+b;
b := a-b;
a := a-b;

Точно- не успел я сказать.
Или так можно:
Код

c:=b;
b:=a;
a:=c;
Но это с 3 переменными.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Mayk
Дата 10.6.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 5
Всего: 134



Цитата(Pakshin @ 9.6.2005, 09:49)
Народ с xor'ами!!! Вверху... в коде написано ясно, что тама переменные real типа, а xor для real переменных не предусмотрен!!!

Ну это не проблема. XOR хочет интегеры? Сделаем его счастливым.
Паскаль АФАИР не любит указатели до такой степени до какой их любит си, но там есть absolute.
Пас не юзал давно и чему равен размер real в байтах не помню, так что не пинайте ногами, использовал 4-ех байтный single и стольки же байтный longint.
Код

var a, b : single;
    intA : longint absolute a;
    intB : longint absolute b;
begin
   a := 0.56;
   b := 21.0;
   writeln(a:2:5,' ',b:2:5, ' swapping->');
   intA := intA xor intB;
   intB := intB xor intA;
   intA := intA xor intB;
   writeln(a:2:5,' ',b:2:5);
end.


Вывод:
Код

0.56000 21.00000 swapping->
21.00000 0.56000


Это сообщение отредактировал(а) Mayk - 10.6.2005, 21:05


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.