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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2008, 14:49   #11
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Знаешь, у меня не заработало, если в именах констант или переменных в формуле есть цифры. Т.е. нельзя задавать им имена x1,x2,x3. Может я что-то не так делаю?
Но если назвать их a,b,c, то все работает нормально.
Код:
var m: array[0..10] of extended;
Itog: extended;
const
a: Extended = 11111111;
b: Extended = 222222222;
c: Extended = 333333333;
begin
  CalcExpress1.Variables.Clear;
  CalcExpress1.Variables.Add('a');
  CalcExpress1.Variables.Add('b');
  CalcExpress1.Variables.Add('c');
  m[0] := a; m[1] := b; m[2] := c;
  CalcExpress1.Formula := '2*a+3*b+6*c';
  Itog:= CalcExpress1.calc(m);
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.10.2008, 15:07   #12
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

a,b,c-это не переменные х1,х2,х3, а коэффициенты при неизвестных, т.е. то что у тебя 2,3,6. Автор спрашивал как вытащить из формулы эти коэффмциенты и вставить их в таблицу, ему не надо решать.
Например вводишь в Эдит по очереди линейные уравнения ситемы, и сразу формируется таблица коэффициентов. А потом система решается например по Гауссу или Крамеру.
Но если автору не надо, то мне тем более.
puporev вне форума Ответить с цитированием
Старый 14.10.2008, 15:54   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Например вводишь в Эдит по очереди линейные уравнения ситемы, и сразу формируется таблица коэффициентов.
Я именно этого и добиваюсь сделать). Мне и надо, чтобы по очереди вводились уравнения и из них формировалась общая таблица. У вас есть код, как это можно сделать?)
Цитата:
А потом система решается например по Гауссу или Крамеру.
.
Мне надо, чтобы пока что составлялась таблица, а дальнейшие действия с ней потом придумаю.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.10.2008, 16:53   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
s:=Edit1.text;
j:=0;
for i:=1 to length(s) do
if (i=1) or (s[i-1]='+') then
begin
inc(j);
StringGrid1.Cells[j-1,0]:=s[i];
end;
этот код хорошо считывает данные, но только со знаком "+". Например если я ему пишу 4х+6х, то в таблицу правильно заносятся значения 4 и 6. А если так: 4х-6х, то заносится только 4. Минус 6 не заносится. Почему? Как можно передалатьь ваш код, чтообы знак минус заносился вместе с константой, перед которой он стоит? Я пробовал так:
Цитата:
s:=Edit1.text;
j:=0;
for i:=1 to length(s) do
if (i=1) or (s[i-1]='+') or (s[i-1]='-') then
begin
inc(j);
StringGrid1.Cells[j-1,0]:=s[i];
end;
но так не работает и ничего не меняет в работе.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.10.2008, 18:16   #15
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я ведь для примера написал, просто разобрал Ваш случай, а вообще это так надо написать:
Код:
s:=Edit1.text;
n:=length(s);
if s[1]='-' then
   begin
     j:=0;
     for i:=1 to n do
     if s[i-1]='+' then
       begin
         inc(j);
         StringGrid1.Cells[j-1,0]:=s[i];
       end
           else if s[i-1]='-' then
       begin
         inc(j);
        StringGrid1.Cells[j-1,0]:=s[i-1]+s[i];
       end;
     end
else
   begin
     j:=0;
     for i:=1 to n do
     if (i=1)or(s[i-1]='+') then
       begin
         inc(j);
         StringGrid1.Cells[j-1,0]:=s[i];
       end
     else if s[i-1]='-' then
       begin
         inc(j);
         StringGrid1.Cells[j-1,0]:=s[i-1]+s[i];
       end;
     end;
puporev вне форума Ответить с цитированием
Старый 14.10.2008, 19:17   #16
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

s:=trim(edit1.text);

nn:=nn+1;
k:=1; l:=0;
try
for n:=1 to 3 do begin
k:=k+l;
l:=0;
for j:=1 to length(s) do begin
if s[j] in ['+','-','0'..'9'] then l:=l+1 else begin k:=j; break; end;
end;
if l=0 then r:=1 else r:=strtoint(copy(s,k,l));
cells[nn,n]:=inttostr(r);
end;
except
showmessage('Вы ошиблись');
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 15.10.2008, 10:42   #17
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

puporev, ваш код работает, но осталось помочь с двумя вопросами:
1. Как сделать, чтобы в таблицу заносились не только значения с одной цифрой, но двух значные? То есть только чтобы из уравнения 4х-6х заносились 4 и -6, но и, например, из уравнения 14х-26х заносились 14 и -26? А то из последнего уравнения заносятся только 1 и -2, т.е. первые цифры констант.
2. Как сделать, чтобы при новом вводе нового уравнения значения переносились на следующую строчку?
Помогите пожалуйста хотя бы с одним из этих вопросов). Буду безгранично благодарен вам, если поможете с двумя).
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.10.2008, 10:47   #18
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А сразу изложить всю задачу не судьба? Так и будем по одному шагу месяц писать программу. Напишите точно, что, в каком виде и куда будете заносить, куда выводить. Я так понимаю что коэффициенты будут не только целые числа, но и вещественные, должна быть колонка для свободных членов, количество уравнений любое и т.д.

Это сообщение можно удалить.

Последний раз редактировалось puporev; 15.10.2008 в 15:34. Причина: удалить.
puporev вне форума Ответить с цитированием
Старый 15.10.2008, 15:32   #19
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Чтобы не разводить писанину, прилагаю программку, в которой можно вводить в Эдит уравнение с любыми коэффициентами и целыми и вещественными. Вводить можно сколько угодно уравнений, только при вводе надо быть аккуратным. Именно из-за этого я бы не советовал вводить коэффициенты таким сложным путем, почему нельзя ввести их сразу в таблицу? Если организовать проверку правильности ввода, то это будет еще одна программа раза в 3 длиннее этой. Подумайте. Ну а эта программа пригодится при работе со строками.
Вложения
Тип файла: rar Создание таблицы из Эдит.rar (189.6 Кб, 13 просмотров)
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
произвольный выбор из констант Arhangel_bes Помощь студентам 11 12.10.2008 22:07
Считывание из Excelя Gladiator Общие вопросы Delphi 0 19.05.2008 21:10
Считывание пароля Terran Общие вопросы Delphi 1 22.03.2008 20:09
Считывание символов AI01 Общие вопросы C/C++ 5 01.03.2008 17:30
Замена констант в RichEdit. Pashekka Компоненты Delphi 1 24.09.2007 09:42