Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.
ProgramBandera
Нагадайте, будь ласка, яка у вас зараз версія Делфі?
RAD Studio 10.3 Rio
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Програма розв'язування задач з фізики! Для учнів 7-го класу.
Сторінки Попередня 1 … 8 9 10 11 12 … 26 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
ProgramBandera
Нагадайте, будь ласка, яка у вас зараз версія Делфі?
RAD Studio 10.3 Rio
Добрий вечір панове! Створював константу типу Strig і визначення для неї скопіював з інтернету. Він (текст) там був з надстроковим текстом, і так скопіювався мені між апострофами з тим надстроковим текстом.
Так як в прикладі нижче
const Milihram_Milimetr3 = 'Мілліграм на кубічний міліметр (мг/мм³ або мг · мм⁻³) - похідна одиниця густини в системі СІ, часткова одиниці кг/м³, яка визначається як маса в кілограмах в одиниці об''єму в кубічних метрах. 1 мг/мм³ = 1000 кг/м³.';
Підкажіть будь-ласка а як самому в редакторі коду писати надрядковий текст. Це ДУЖЕ СУТТЄВО полегшить мені задачу виводу тексту на екран.
Можливо цей текст можна попередньо якось десь створювати а потім копіювати в редактор коду, але де його створювати.
Спробував в ворді не виходить. Можливо його треба в ворді якось особливо зберігати?
ДУЖЕ ДУЖЕ буду вдячний тому хто допоможе!!!!!
У жодному. Якби ви вчились так, як треба зазирнули в таблицю символів Юнікод, то в розділі Latin-1 побачили б символи ² та ³, але не набагато більше. Хіба що ще ¼, ½ та ¾.
Unicode subscripts and superscripts (деякі редактори не підтримують їх відображення).
У жодному. Якби ви вчились так, як треба зазирнули в таблицю символів Юнікод, то в розділі Latin-1 побачили б символи ² та ³, але не набагато більше. Хіба що ще ¼, ½ та ¾.
Добрий ранок! Я перепрошую пане Koala але ось ця таблиця не піде?
Та питання було де набрати текст щоб він був в Unicode, це в ворді можливо?
Або ось ця
Але як це набрати в редакторі коду тоді?
У жодному. Якби ви вчились так, як треба зазирнули в таблицю символів Юнікод, то в розділі Latin-1 побачили б символи ² та ³, але не набагато більше. Хіба що ще ¼, ½ та ¾.
Дo остањого шче можна таке: 11⁄12, правда, з буквами, јак бачу, не працьује.
Але як це набрати в редакторі коду тоді?
Не знају јакоју ОСʼоју живете, але загалом можна через Compose Key, дља Вікн ось наприклад WinCompose.
Наприклад потрібно записати 10 в 17 степені
це можливо якось ось таким текстом вивести RichEdit
RichEdit1.Lines.Add('10' + [U + 2081] + [U + 2087]);
Гадаю
'10'#$2081#$2087'=100000000000000000'
#число - символ із кодом _число_
$10 = 16 (шістнадцяткове число)
ProgramBandera
Спочатку переконайтеся, що у вас pas-файли зберігаються в форматі юнікод. Для цього клацніть правою кнопкою миші в редакторі коду, і далі File Format > Utf8. Після цього можна буде писати просто "RichEdit1.Lines.Add('10⁴')" замість "RichEdit1.Lines.Add('10'#$2074)".
Складніші конструкції з складеними символами можуть не зовсім правильно відображатися в редакторі, але також повинні працювати. Хоча для таких випадків вам ніхто не заважає завести константи, наприклад "SampleMean = 'x'#$0305;".
Добрий вечір! Пане 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
Якщо у вас є вільна хвилинка підкажіть що не так роблю! Наперед велике дякую!
Мені потрібно скоротити якось ось таки блоки коду
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
А при якому значенні ComboBox15.ItemIndex має виводитися t=t, на вашу думку?
Скорочений код для другого питання майже точно відповідає коду з першого, тільки умову слід переробити (if ... in [3,4,6..9] ...)
І "дякую" - дієслово, тобто "велике дякую" означає, що велике - те, до кого ви звертаєтеся. Порівняйте "тяжке ношу" чи "дурне кричу".
А при якому значенні ComboBox15.ItemIndex має виводитися t=t, на вашу думку?
Скорочений код для другого питання майже точно відповідає коду з першого, тільки умову слід переробити (if ... in [3,4,6..9] ...)
І "дякую - дієслово, тобто "велике дякую" означає, що велике - те, до кого ви звертаєтеся.
Велике дякую пане koala
Код запрацював так як треба
if ComboBox15.ItemIndex in [3..9] then
RichEdit1.Lines.Add(NumberedString('t1 = t%s',ComboBox15.ItemIndex-3));
Доброго дня панове!
В паскалі піднесення до квадрату робить функція sqr(x), а як підносять до кубу, і так далі 4-й степінь 5-й степінь.... Де прочитати про ту функцію? В літературі щось не можу знайти її. Не перемножати ж змінну від трьох і більше разів саму на себе?
Стандартний спосіб для Паскаля використовує формулу
xy = eln(x^y)=ey*ln x
Тобто
function power(x,y:real):real;
begin
result := exp(y*log(x));
end;
Хоча, здається, в Delphi додали таку функцію, і зветься вона саме Power.
http://docwiki.embarcadero.com/Librarie … h.IntPower каже, що є ще й IntPower з другим цілим параметром.
Добрий вечір панове! Підкажіть будь-ласка от чому в калькуляторі 0,02 в кубі виводить 0,000008, а в мене в RichEdit виводить 8E-006.
0,02*0,02*0,02= 0,000008 а не 8E-006
ось частина коду на процедуру густини
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 знаків після крапки?
8E-006 - це і є 0.000008. E тут позначає "помножити на десять у степені", тобто якраз 8 мільйонних.
За можливістю прочитайте http://docs.embarcadero.com/products/ra … const.html; якщо коротко: "%f" - завжди 123.456, "%e" - завжди 1.23456E2, "%g" - найкоротший з двох варіантів, і всюди свої особливості.
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;
http://docwiki.embarcadero.com/CodeExam … t_(Delphi)
program ideone;
uses SysUtils;
begin
writeln(FormatFloat('0.####################', 0.002*0.002*0.002));
end.