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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2008, 15:12   #1
Cubar
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 28
По умолчанию Метод Ньютона

Здравствуйте!
Я сейчас делаю программу "Метод Ньютона" на языке "Delphi 7.0".
Цель: разработать программу, которая решает линейные алгебраические уравнения методом Ньютона.
Вид уравнений, которые будет решать программа, такой:
Ax(3)+Bx(2)+Cx+D=0,
где: x - неизвестное;
A,B,C,D - заданные числа.

Сейчас делаю защиту "от дурака".
Надо сделать так, чтобы в поле "TEdit", можно было вводить только цифры, знаки "-", "." или ",". Так вот, я сделал только то, что можно ввести:
1) цифры.
2) "-", но только чтобы выводился на первом месте и чтобы нельзя было ввести повторно это символ.
3) "." или ",", чтобы если пользователь введет "." или ",", то автоматически вместо это символа появлялся тот, который по умолчанию стоит в Windows для ввода действительных чисел, также чтобы нельзя было ввести "," на первом месте.

А вот чтобы "," или "." можно было ввести только 1 раз никак не получается.
Помогите, пожалуйста, кто знает, как это сделать.

Вот код защиты, которую я сделал:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
'.',',':
// разделитель целой и дробной частей числа
  begin
  If Key<>DecimalSeparator then
    begin
    Key:=DecimalSeparator; // заменим разделитель на допустимый
    end;
  If (Length (Edit1.Text)=0) and (Key=DecimalSeparator) then
    begin
    Key:=Chr (0);
    end;
  end;
'-': // минус можно ввести только первым символом, т.е. когда ячейка пустая
If Length (Edit1.Text)<>0 then
  begin
  // остальные символы запрещены
  Key:=Chr (0);
  end;
#48..#57:;
#13:Edit2.SetFocus;
#8:;
else
Key:=Chr(0);
end;
end;
Cubar вне форума Ответить с цитированием
Старый 07.02.2008, 15:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Надо сделать так, чтобы в поле "TEdit", можно было вводить только цифры, знаки "-", "." или ",".
Для этого есть TMaskEdit
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.02.2008, 16:44   #3
Cubar
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 28
По умолчанию

Stilet, это совсем не то.
Компонент "TMaskEdit" нужен для создания маски ввода. Но мне нужна не маска ввода, т.е. там ввод идет по конкретной маске, а в моем случае, это не подходит, т.к. ввести можно, например: "-0,5" или "1".
Нужно создать условие в "Procedure TForm1.Edit1KeyPress" по вводу.
Помогите, кто знает, как это сделать.
Cubar вне форума Ответить с цитированием
Старый 07.02.2008, 17:13   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Напиши так:
if Pos(DecimalSeparator,Edit1.Text) <> 0 then Key := Chr(0);
puporev вне форума Ответить с цитированием
Старый 07.02.2008, 18:18   #5
Cubar
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 28
По умолчанию

Спасибо тебе большое, Puporev. Выручил.
Cubar вне форума Ответить с цитированием
Старый 07.02.2008, 18:22   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

А TryStrToInt и дальнейшая проверка значения не подходит?
B_N вне форума Ответить с цитированием
Старый 09.02.2008, 19:07   #7
Cubar
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 28
По умолчанию Re: Метод Ньютона

Ребят, спасибо всем, кто пытался помочь мне.
Защиту от дурака я уже сделал.
У меня для Вас есть еще 1 вопрос:
Как сделать, так, чтобы выводилось действительное число с определенным количеством символов, т.е.
"X=0,983928383", нужно вывести "X" в таком виде "X=0,98".
В "Borland Pascal 7.0" это делается вот так:
Код:
WriteLn (X.2.0);
А как это сделать в "Borland Delphi 7.0"?
Cubar вне форума Ответить с цитированием
Старый 09.02.2008, 19:25   #8
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Writeln(x:2:2);
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 09.02.2008, 19:33   #9
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

uses Math;
Str := FloatToStr(RoundTo(X, -2));
still_alive вне форума Ответить с цитированием
Старый 09.02.2008, 20:01   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Форматированный вывод можно делать по разному, например так:
StrtofloatF(x,ffFixed,5,2), где 5 - общее количество знаков, 2 - после запятой.
Во вложении несколько способов форматированного вывода вещественных чисел.
Вложения
Тип файла: doc Таблица 7.doc (28.5 Кб, 19 просмотров)

Последний раз редактировалось puporev; 09.02.2008 в 20:18.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение СНАУ методом Ньютона Tina Помощь студентам 7 09.04.2012 08:52
Метод Ньютона(помогите исправить ошибку) Юлёк Общие вопросы C/C++ 2 07.07.2008 12:47
Метод Ньютона Durak Помощь студентам 1 30.04.2008 21:55
Интерполяционный полином Ньютона Skay Общие вопросы Delphi 2 19.10.2007 22:18