181

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera
Нагадайте, будь ласка, яка у вас зараз версія Делфі?

Подякували: ProgramBandera1

182 Востаннє редагувалося ProgramBandera (12.08.2019 22:19:53)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Torbins написав:

ProgramBandera
Нагадайте, будь ласка, яка у вас зараз версія Делфі?

RAD Studio 10.3 Rio

183 Востаннє редагувалося ProgramBandera (04.09.2019 00:19:57)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Добрий вечір панове! Створював константу типу Strig і визначення для неї скопіював з інтернету. Він (текст) там був з надстроковим текстом, і так скопіювався мені між апострофами з тим надстроковим текстом.
Так як в прикладі нижче

const Milihram_Milimetr3 = 'Мілліграм на кубічний міліметр (мг/мм³ або мг · мм⁻³) - похідна одиниця густини в системі СІ, часткова одиниці кг/м³, яка визначається як маса в кілограмах в одиниці об''єму в кубічних метрах. 1 мг/мм³ = 1000 кг/м³.';

Підкажіть будь-ласка а як самому в редакторі коду писати надрядковий текст. Це ДУЖЕ СУТТЄВО полегшить мені задачу виводу тексту на екран.
Можливо цей текст можна попередньо якось десь створювати а потім копіювати в редактор коду, але де його створювати.
Спробував в ворді не виходить. Можливо його треба в ворді якось особливо зберігати?
ДУЖЕ ДУЖЕ буду вдячний тому хто допоможе!!!!!

184

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

У жодному. Якби ви вчились так, як треба зазирнули в таблицю символів Юнікод, то в розділі Latin-1 побачили б символи ² та ³, але не набагато більше. Хіба що ще ¼, ½ та ¾.

Подякували: leofun01, ProgramBandera2

185

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Unicode subscripts and superscripts (деякі редактори не підтримують їх відображення).

Подякували: ProgramBandera, koala2

186 Востаннє редагувалося ProgramBandera (04.09.2019 07:34:10)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

У жодному. Якби ви вчились так, як треба зазирнули в таблицю символів Юнікод, то в розділі Latin-1 побачили б символи ² та ³, але не набагато більше. Хіба що ще ¼, ½ та ¾.

Добрий ранок! Я перепрошую пане Koala але ось ця таблиця не піде?
https://replace.org.ua/uploads/images/6671/22a6cadce2b9078b5002dc5acb1e9780.png

Та питання було де набрати текст щоб він був в Unicode, це в ворді можливо?

Або ось ця
https://replace.org.ua/uploads/images/6671/aace2050c1b24b4cee9337d1c41b924a.png

Але як це набрати в редакторі коду тоді?

Подякували: koala1

187 Востаннє редагувалося dot (04.09.2019 07:49:54)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

У жодному. Якби ви вчились так, як треба зазирнули в таблицю символів Юнікод, то в розділі Latin-1 побачили б символи ² та ³, але не набагато більше. Хіба що ще ¼, ½ та ¾.

Дo остањого шче можна таке: 11⁄12, правда, з буквами, јак бачу, не працьује.

ProgramBandera написав:

Але як це набрати в редакторі коду тоді?

Не знају јакоју ОСʼоју живете, але загалом можна через Compose Key, дља Вікн ось наприклад WinCompose.

Подякували: ProgramBandera1

188 Востаннє редагувалося ProgramBandera (04.09.2019 07:51:13)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Наприклад потрібно записати 10 в 17 степені
це можливо якось ось таким текстом вивести RichEdit

RichEdit1.Lines.Add('10' + [U + 2081] + [U + 2087]);

189 Востаннє редагувалося koala (04.09.2019 10:11:39)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Гадаю

'10'#$2081#$2087'=100000000000000000'

#число - символ із кодом _число_
$10 = 16 (шістнадцяткове число)

Подякували: ProgramBandera1

190

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera
Спочатку переконайтеся, що у вас pas-файли зберігаються в форматі юнікод. Для цього клацніть правою кнопкою миші в редакторі коду, і далі File Format > Utf8. Після цього можна буде писати просто "RichEdit1.Lines.Add('10⁴')" замість "RichEdit1.Lines.Add('10'#$2074)".
Складніші конструкції з складеними символами можуть не зовсім правильно відображатися в редакторі, але також повинні працювати. Хоча для таких випадків вам ніхто не заважає завести константи, наприклад "SampleMean = 'x'#$0305;".

Подякували: ProgramBandera, leofun012

191 Востаннє редагувалося ProgramBandera (05.09.2019 20:40:00)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Добрий вечір! Пане koala до вас питання.
Ви раніше підказали мені ось таку функцію

Function NumberedString(format_string:string; number:integer) : string;
 var number_string : string;
  begin
   if number<>0 then
    number_string:=IntToStr(number)

   else

   number_string:=' ';
   result := Format(format_string, [number_string]);
  end;

Вона в мене чудово працює в ось цьому рядку коду

  14..20: begin
           for idx0 := 4 to 8 do
            ComboBox16.Items.Add(UNITS_M_U[idx0]);
           for idx1 := 15 to 21 do
            ComboBox16.Items.Add(UNITS_P_С2[idx1]);

           BitBtn1.Top := 642;
           BitBtn2.Top := 642;
           CheckBox3.Visible := True;
           Options[2] := True;
           CheckBox3.Caption := NumberedString('s%s - Від''ємне переміщення',ComboBox10.ItemIndex-14);

І вона виводить мені s без числа, або з числом якщо це потрібно. А чому вона не виводить без числа в ось цьому коді

if Pos('=',Edit1.Text)<>0 then
         begin
          if ComboBox15.ItemIndex in [4..9] then
          RichEdit1.Lines.Add(NumberedString('t = t%s',ComboBox15.ItemIndex-3));
         end

Я не можу добитись щоб вона вивела t = t. Або іще один приклад

if Pos('=',Edit1.Text)<>0 then
         begin
          if ComboBox15.ItemIndex in [4..9] then
          RichEdit1.Lines.Add(NumberedString('t1 = t%s',ComboBox15.ItemIndex-3));
         end

Тут не виводить t1 = t. І так далі не виводить
t2 = t
t3 = t
t4 = t
...
t6 = t
Якщо у вас є вільна хвилинка підкажіть що не так роблю! Наперед велике дякую!

192

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Мені потрібно скоротити якось ось таки блоки коду

if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          4: RichEdit1.Lines.Add('t = t1');
          5: RichEdit1.Lines.Add('t = t2');
          6: RichEdit1.Lines.Add('t = t3');
          7: RichEdit1.Lines.Add('t = t4');
          8: RichEdit1.Lines.Add('t = t5');
          9: RichEdit1.Lines.Add('t = t6');
          end;
         end
if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t1 = t');
          5: RichEdit1.Lines.Add('t1 = t2');
          6: RichEdit1.Lines.Add('t1 = t3');
          7: RichEdit1.Lines.Add('t1 = t4');
          8: RichEdit1.Lines.Add('t1 = t5');
          9: RichEdit1.Lines.Add('t1 = t6');
          end;
         end
if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t2 = t');
          4: RichEdit1.Lines.Add('t2 = t1');
          6: RichEdit1.Lines.Add('t2 = t3');
          7: RichEdit1.Lines.Add('t2 = t4');
          8: RichEdit1.Lines.Add('t2 = t5');
          9: RichEdit1.Lines.Add('t2 = t6');
          end;
         end

.........
..............
.............

if Pos('=',Edit1.Text)<>0 then
         begin
          case ComboBox15.ItemIndex of
          3: RichEdit1.Lines.Add('t6 = t');
          4: RichEdit1.Lines.Add('t6 = t1');
          5: RichEdit1.Lines.Add('t6 = t2');
          6: RichEdit1.Lines.Add('t6 = t3');
          7: RichEdit1.Lines.Add('t6 = t4');
          8: RichEdit1.Lines.Add('t6 = t5');
          end;
         end

193 Востаннє редагувалося koala (06.09.2019 08:28:19)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

А при якому значенні ComboBox15.ItemIndex має виводитися t=t, на вашу думку?
Скорочений код для другого питання майже точно відповідає коду з першого, тільки умову слід переробити (if ... in [3,4,6..9] ...)
І "дякую" - дієслово, тобто "велике дякую" означає, що велике - те, до кого ви звертаєтеся. Порівняйте "тяжке ношу" чи "дурне кричу".

Подякували: ProgramBandera1

194

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

А при якому значенні ComboBox15.ItemIndex має виводитися t=t, на вашу думку?
Скорочений код для другого питання майже точно відповідає коду з першого, тільки умову слід переробити (if ... in [3,4,6..9] ...)
І "дякую - дієслово, тобто "велике дякую" означає, що велике - те, до кого ви звертаєтеся.

Велике дякую пане koala :) :)

Код запрацював так як треба  *YAHOO*

if ComboBox15.ItemIndex in [3..9] then
          RichEdit1.Lines.Add(NumberedString('t1 = t%s',ComboBox15.ItemIndex-3));

195 Востаннє редагувалося ProgramBandera (09.09.2019 13:21:29)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Доброго дня панове!
В паскалі піднесення до квадрату робить функція sqr(x), а як підносять до кубу, і так далі 4-й степінь 5-й степінь.... Де прочитати про ту функцію? В літературі щось не можу знайти її. Не перемножати ж змінну від трьох і більше разів саму на себе?

196

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Стандартний спосіб для Паскаля використовує формулу
xy = eln(x^y)=ey*ln x
Тобто

function power(x,y:real):real;
begin
    result := exp(y*log(x));
end;

Хоча, здається, в Delphi додали таку функцію, і зветься вона саме Power.

Подякували: ProgramBandera1

197

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

http://docwiki.embarcadero.com/Librarie … h.IntPower каже, що є ще й IntPower з другим цілим параметром.

Подякували: ProgramBandera1

198 Востаннє редагувалося ProgramBandera (09.09.2019 23:34:53)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Добрий вечір панове! Підкажіть будь-ласка от чому в калькуляторі 0,02 в кубі виводить 0,000008, а в мене в RichEdit виводить 8E-006.
0,02*0,02*0,02= 0,000008 а не 8E-006

https://replace.org.ua/uploads/images/6671/b65f35af55474a7798f6d9485fb68196.png

ось частина коду на процедуру густини

if ((ComboBox9.ItemIndex = 84) or (ComboBox10.ItemIndex = 84) or              // m - Маса
     (ComboBox11.ItemIndex = 84) or (ComboBox12.ItemIndex = 84) or
     (ComboBox13.ItemIndex = 84) or (ComboBox14.ItemIndex = 84)) and
     ((ComboBox9.ItemIndex = 280) or (ComboBox10.ItemIndex = 280) or            // а - Сторона
     (ComboBox11.ItemIndex = 280) or (ComboBox12.ItemIndex = 280) or
     (ComboBox13.ItemIndex = 280) or (ComboBox14.ItemIndex = 280)) then
  begin
   Definition := STORONA;
   RichEdit1.Lines.Add(Definition);
   Definition := OBYEM;
   RichEdit1.Lines.Add(Definition);
   Definition := EmptyLine;
   RichEdit1.Lines.Add(Definition);
   RichEdit1.Lines.Add ('Визначаємо об''єм куба.');
   RichEdit1.Lines.Add ('V=a'+#$00B3);
   RichEdit1.Lines.Add(Definition);
   Variables[49,0] :=  IntPower(Variables[41,0],3) ;
   RichEdit1.Lines.Add (Format('%.25gм * %.25gм * %.25gм = %.25gм³.',
                       [Variables[41,0], Variables[41,0], Variables[41,0], Variables[49,0]]));
   RichEdit1.Lines.Add(Definition);
   RichEdit1.Lines.Add ('Визначаємо густину речовини.');
   Definition := GUSTINA_RECHOVNI;
   RichEdit1.Lines.Add(Definition);
   Definition := EmptyLine;
   RichEdit1.Lines.Add(Definition);
   Pict := TPicture.Create;
   try
    Pict.LoadFromFile('Формули\Густина речовини ρmV.jpg');
    Clipboard.Assign(Pict);
    RichEdit1.PasteFromClipboard;
   finally
    Pict.Free;
   end;
   RichEdit1.Lines.Add(Definition);
   Variables[14,0] :=  Variables[13,0] / Variables[49,0];
   RichEdit1.Lines.Add (Format('%.25gкг / %.25gм³ = %.25gкг/м³.',
                       [Variables[13,0], Variables[49,0], Variables[14,0]]));
   undo := False;
   Output_Value := True;
  end

  else

обраховує і виводить це неподобство ось цей код

Variables[49,0] :=  IntPower(Variables[41,0],3) ;
   RichEdit1.Lines.Add (Format('%.25gм * %.25gм * %.25gм = %.25gм³.',
                       [Variables[41,0], Variables[41,0], Variables[41,0], Variables[49,0]]));

Як мені це побороти?????????
Я так розумію що в функції (Format ('%g за кількість знаків після коми відповідає ось цей запис (Format ('%.25g, то чому ж вона не виводить 25 знаків після крапки?

199

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

8E-006 - це і є 0.000008. E тут позначає "помножити на десять у степені", тобто якраз 8 мільйонних.
За можливістю прочитайте http://docs.embarcadero.com/products/ra … const.html; якщо коротко: "%f" - завжди 123.456, "%e" - завжди 1.23456E2, "%g" - найкоротший з двох варіантів, і всюди свої особливості.

Подякували: ProgramBandera1

200

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

8E-006 - це і є 0.000008. E тут позначає "помножити на десять у степені", тобто якраз 8 мільйонних.
За можливістю прочитайте http://docs.embarcadero.com/products/ra … const.html; якщо коротко: "%f" - завжди 123.456, "%e" - завжди 1.23456E2, "%g" - найкоротший з двох варіантів, і всюди свої особливості.

Добрий день пане koala! З цим виводом функції Format я вже ознайомився, в ній ніякий варіант мені не допоможе.
Я ненароком натрапив на код з типом ZReal, який якби вже не має виводити ось це неподобство 8E-006.
Але як мені прописати цей тип в моєму коді я ще поки не розібрався. Знайшов одну  функцію яка напевно створює цей тип, та там для мене мало зрозуміло чи це вона та сама що мені потрібно, і чи мені для неї в uses та type потрібно щось дописувати чи ні. Буду розбиратись помалу що це таке.

var
  Form1: TForm1;
prover, glob_check,skob,nev,trig:boolean;
obrazec1,obrazec2:extended;
znac_oper:char;
 obrazec12,zn1,zn2,zn: ZReal;
 big: int64;
 zt,zt1,zt2,pamet:string;

i,j,i_local,c,meraisch,t,sk: integer;
a:array [0..1000] of string;
b:array [0..1000] of char;

implementation

uses Unit2;

{$R *.dfm}

function zr_e (stroka: string): string;
var n:integer;
begin

  zn:=strtozr(stroka);
  zn2:=ZRToLongInt(zn,-1);
  zn1:= subzr(zn,zn2);

   if ( ComparisonZR(zn1,realtozr(0.0000001))=-1) then
      begin
   zn:= ZRToLongInt(zn,-1);
   stroka:=zrtostr(zn);
   end;
  if ( ComparisonZR(zn1,realtozr(0.9999))=1) and ( ComparisonZR(zn1,realtozr(1))=-1) then
     begin
  zn:= ZRToLongInt(zn,1);
  stroka:=zrtostr(zn);
  end;

for n:=1 to length(stroka) do
if stroka[n]='+' then
  begin
  stroka[n-1]:='e';
  delete(stroka,n,1);
  end;

for n:=1 to length(stroka) do
if stroka[n]='-' then
  begin
  stroka[n-1]:='e';
  end;




 //if  (ComparisonZR(zn,realtozr(9E5))=-1) and ( ComparisonZR(zn,realtozr(9E-5))=1) then
 //stroka:=floattostr(zrtoreal(zn));

  zr_e:=stroka;
end;