Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.06.2010, 13:39
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
Вопрос Сложение чисел после точки

Доброго времени суток!
у меня есть вопрос по сложению чисел
например мне надо сложить число формата
5.2.4 с 6.2.4 так чтоб в конце получился ответ 11.4.8
Помогите кто с чем может?
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.
Ответить с цитированием
  #2  
Старый 16.06.2010, 14:22
x128 x128 вне форума
Новичок
 
Регистрация: 03.02.2010
Сообщения: 64
Репутация: 133
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  n1,n2: TStringList;
begin
  n1:=TStringList.Create;
  n2:=TStringList.Create;
  ExtractStrings(['.'], [], PChar(edit1.Text), n1);
  ExtractStrings(['.'], [], PChar(edit2.Text), n2);
  edit3.Text:=IntToStr(StrToInt(n1[0])+StrToInt(n2[0]))+'.'+
              IntToStr(StrToInt(n1[1])+StrToInt(n2[1]))+'.'+
              IntToStr(StrToInt(n1[2])+StrToInt(n2[2]));
  n1.Destroy;
  n2.Destroy;
end;
Такой вариант решения пододет?
Ответить с цитированием
  #3  
Старый 16.06.2010, 14:50
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
По умолчанию

мне бы чтоб он брал числа из edit1 и edit2?
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.

Последний раз редактировалось blezigens, 16.06.2010 в 14:54.
Ответить с цитированием
  #4  
Старый 16.06.2010, 14:56
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
По умолчанию

Сейчас забабахаем
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #5  
Старый 16.06.2010, 14:56
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
По умолчанию Спасибо

Спасибо
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.
Ответить с цитированием
  #6  
Старый 16.06.2010, 15:04
x128 x128 вне форума
Новичок
 
Регистрация: 03.02.2010
Сообщения: 64
Репутация: 133
По умолчанию

Цитата:
Сообщение от blezigens
мне бы чтоб он брал числа из edit1 и edit2?
так там и есть, из edit1 и edit2 беруться числа, а в edit3 пишется результат
Ответить с цитированием
  #7  
Старый 16.06.2010, 15:10
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
По умолчанию Сравнение

Можго ли сделать так если
n1:TStringList больше n2:TStringList
то совершаеться действие
и как это сделать
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.
Ответить с цитированием
  #8  
Старый 16.06.2010, 15:20
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
По умолчанию

На попробуй функцию писанную на скорую руку
Код:
function MyPlus(OneStr, TwoStr: String): String;
var
 TempOne, TempTwo, Otvet: String;
 One, Two, Res: Integer;
begin
 TempOne := OneStr + '.';
 TempTwo := TwoStr + '.';
 while (Length(TempOne) <> 0) and (Length(TempTwo) <> 0) do
 begin
  One := StrToInt(Copy(TempOne,1,Pos('.',TempOne) - 1));
  Two := StrToInt(Copy(TempTwo,1,Pos('.',TempTwo) - 1));
  Res := One + Two;
  Otvet := Otvet + IntToStr(Res) + '.';
  Delete(TempOne,1,Pos('.',TempOne));
  Delete(TempTwo,1,Pos('.',TempTwo));
 end;
 Delete(Otvet,Length(Otvet),1);
 Result := Otvet;
end;
ограничения: должно быть равное кол-во групп и использовать только точки в качестве разделителя групп
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #9  
Старый 16.06.2010, 16:05
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
Вопрос

Можно ли сделать так чтоб если в edit1 было записано любое число в формате 35.89.89 и сравнивались эти 3 числа как отдельные
и если
Например
2-рое число после точки было больше либо равно любому из двух чисел то
выявлялось showmessage( 35< 89 = 89 ).
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.
Ответить с цитированием
  #10  
Старый 16.06.2010, 16:08
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
По умолчанию

Ну ты блин загнул . Это ты там что, решаешь уравнения чтоли
Вообще рассматривай это все естественно как строку. Режь её ка тебе нужно и сравнивай как хочешь. Думаю со строками нет проблем?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Последний раз редактировалось Kailon, 16.06.2010 в 16:10.
Ответить с цитированием
  #11  
Старый 16.06.2010, 16:16
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
Вопрос

я со строками не знаком.
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.
Ответить с цитированием
  #12  
Старый 16.06.2010, 16:21
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
По умолчанию

А это число с точками только из трёх групп состоит или произвольно? Если произвольно, то какие тогда сравнивать?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #13  
Старый 16.06.2010, 16:27
Аватар для blezigens
blezigens blezigens вне форума
Прохожий
 
Регистрация: 21.02.2010
Сообщения: 24
Репутация: 10
Вопрос

а вот так если edit1 = числу в формате 12.64.9
тогда чтоб
12 было в g1:string;
64 было в g2:string;
9 было в g3:string
а потом вычислить какое из них больше
Например
Если g2 < g1 > g3 то совершаеться действие
Если g2 = g1 > g3 то совершаеться действие
Если g2 < g1 = g3 то совершаеться действие
Если g2 = g1 = g3 то совершаеться действие
Если g1 < g2 > g3 то совершаеться действие
Если g1 = g2 > g3 то совершаеться действие
Если g1 < g2 = g3 то совершаеться действие
Если g1 = g2 = g3 то совершаеться действие
Если g1 < g3 > g2 то совершаеться действие
Если g1 = g3 > g2 то совершаеться действие
Если g1 < g3 = g2 то совершаеться действие
Если g1 = g3 = g2 то совершаеться действие

в том то и дело что когда вводят число в edit1 не знаешь какое оно
__________________
Кто считается настоящим программистом?
Тот кто не боиться спрашивать.
Ответить с цитированием
  #14  
Старый 16.06.2010, 16:44
Аватар для SerginhoLD
SerginhoLD SerginhoLD вне форума
Новичок
 
Регистрация: 19.11.2009
Сообщения: 73
Репутация: 12
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var ed1,ed2: string;
    i,p:integer;
    a,b: array[1..3] of integer;
begin
  ed1:=edit1.Text; ed2:=edit2.Text;
  i:=1;
  while i<>4 do
  begin
    if i=3 then
    begin
      a[i]:=StrToInt(ed1);
      b[i]:=StrToInt(ed2);
    end
    else begin
      p:=Pos('.',ed1);
      a[i]:=StrToInt(Copy(ed1,1,p-1));
      ed1:=Copy(ed1,p+1,Length(ed1)-1);
      p:=Pos('.',ed2);
      b[i]:=StrToInt(Copy(ed2,1,p-1));
      ed2:=Copy(ed2,p+1,Length(ed2)-1);
    end;
    inc(i);
  end;
end;
вот тебе вычисляются массивы a и b
например в edit1: 13.72.2
то a[1]=13, a[2]=72, a[3]=2

дальше сравнивай и складывай как ты хочешь
__________________
знаете почему внизу эскалатора бабка в будке сидит?
она там педальки крутит и лесенка едет!

Последний раз редактировалось SerginhoLD, 16.06.2010 в 16:49.
Ответить с цитированием
  #15  
Старый 16.06.2010, 16:52
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 340
Версия Delphi: 11.3
Репутация: 429
Сообщение

Вот еще вариант
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 g1,g2,g3: Integer;
 TempS: String;
begin
 g1 := 0; g2 := 0; g3 := 0;
 TempS := Edit1.Text;
 g1 := StrToInt(Copy(Temps,1,Pos('.', TempS) - 1));
 Delete(TempS,1,Pos('.', TempS));
 g2 := StrToInt(Copy(Temps,1,Pos('.', TempS) - 1));
 Delete(TempS,1,Pos('.', TempS));
 g3 := StrToInt(Copy(Temps,1,Length(TempS)));
//а дальше уже идет простое сравнение чисел
 if (g1 > g2) and (g1 > g3) then
  begin
   //твой код
  end;

 if (g1 = g2) and (g1 > g3) then
  begin
   //твой код
  end;

 if (g1 > g2) and (g1 = g3) then
  begin
   /твой код
  end;
end;
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter