101

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

ProgramBandera написав:

... функція для зміни знаку дійсного числа на протилежний?

Сподіваюсь, що нема, бо є оператор мінус ( - ). Хоча, в якомусь сенсі його теж можна вважати функцією.

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

102

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

Variables[1,0] := - StrToFloat(Edit1.Text);
Подякували: topprogrammer, ProgramBandera, Torbins3

103

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

koala написав:
Variables[1,0] := - StrToFloat(Edit1.Text);

Як все просто!
Бо я знову хотів придумав збочений код :)

Variables[1,0] := StrToFloat(Edit1.Text);
Edit8.Text := ('-' + FloatToStr(Variables[1,0]));
Variables[1,0] := StrToFloat(Edit8.Text);

104

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

koala написав:
Variables[1,0] := - StrToFloat(Edit1.Text);

Круто, я б здогадався лише на мінус одиницю помножити.

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

105

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

Torbins, а ви власний компілятор ніколи не писали?
Чи хоча б розбір виразів?

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

106

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

Доброго дня панове!
Підкажіть як вивести константу типу String яка в загальному має 157 символів, так щоб вивелось в поле RichEdit1 з першого по 152 символ, а 5 останніх відкидалось. Там формула яка в мене пізніше дублюється.
Спробував ось так

RichEdit1.Lines.Add(Definition[0..152]);

видало помилку Елемент 0 недоступний - використовуйте 'Length' (Довжина) або 'SetLength'(Встановити довжину)
А Як правильно в коді прописати ту довжину, так як після Add я ставлю крапку а редактор коду не виводить ні Length ні SetLength.
Ось код! Допоможіть змінити його будь-ласка!

Definition := SHVIDKIST;
  RichEdit1.Lines.Add(Definition);
  Definition := EmptyLine;
  Definition := SHVIDKIST_RUHU_TILA;
  RichEdit1.Lines.Add(Definition[0..152]);
  Definition := EmptyLine;
  RichEdit1.Lines.Add(Definition);
  RichEdit1.Lines.Add ('Визначаємо швидкість');
  RichEdit1.SelAttributes.Color := clRed;
  RichEdit1.Lines.Add ('v=l/t');
  Variables[4,0] :=  Variables[2,0] / Variables[1,0];
  undo := False;

107 Востаннє редагувалося topprogrammer (28.05.2019 17:54:44)

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

Якось так

if Length(Definition) > 152 then
    RichEdit1.Lines.Add(Definition.SubString(0, 152))
else
    RichEdit1.Lines.Add(Definition);

Або так:

if Length(Definition) > 152 then
    RichEdit1.Lines.Add(Copy(Definition, 0, 152)); 
else
    RichEdit1.Lines.Add(Definition);

Або так:

if Length(Definition) > 152 then
    SetLength(Definition, 152);
Подякували: ProgramBandera1

108

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

Дякую пане topprogrammer.
Підкажіть іще одне: так як поле RichEdit працює з форматом RTF, то чи можу я в нього додати картинку.
Коли я в Word набираю формули і зберігаю документ в форматі RTF, формули там відтворюються як зображення, а не як текст, от я і подумав чи можливо програмно завантажити малюнок з формулою в RichEdit на місце ось цього рядка коду

RichEdit1.Lines.Add ('v=l/t');

109

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

Пане, вам уже не RichEdit потрібен, а браузер :)

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

110 Востаннє редагувалося ProgramBandera (28.05.2019 18:24:08)

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

koala написав:

Пане, вам уже не RichEdit потрібен, а браузер :)

Пане koala я знаю що в браузер можна підгружати малюнки, от я тільки не знаю як звідти зберігати текст в RTF. Я питаю про RichEdit для загального розвитку. :) Та і краще вже TJvRichEdit використовувати для запису формул як радив пан Торбінс.

111

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

ProgramBandera
TJvRichEdit дозволяє вставляти картинки, а звичайний TRichEdit - ні.


koala написав:

Torbins, а ви власний компілятор ніколи не писали?
Чи хоча б розбір виразів?

Не доводилося, хоча я приблизно розумію, як це працює.

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

112

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

Torbins написав:

ProgramBandera
TJvRichEdit дозволяє вставляти картинки, а звичайний TRichEdit - ні.

Доброї ночі пане Torbins! Замінив я RichEdit за вашою порадою на TJvRichEdit і все пройшло успішно, дякую!
Якщо ви не сильно зайняті не могли б ви будь-ласка допомогти мені з цим компонентом докладніше розібратись на прикладах?
Перше нагальне питання. Як замінити ось цей рядок коду, щоб він мені виводив формулу не лінійно а професійно, через дріб?

RichEdit1.Lines.Add ('s=A/F');


Або, якщо це не можливо то на місце цього рядка коду підгрузити картинку з цією формулою, скріншот якої я попередньо зроблю в Word. Но, потрібно щоб це не стерло попередній текст, який виводиться кодом

Definition := PEREMISCHENNYA_S;
  RichEdit1.Lines.Add(Definition);
  Definition := EmptyLine;
  RichEdit1.Lines.Add(Definition);
  RichEdit1.Lines.Add ('Визначаємо переміщення механічної роботи.');
  RichEdit1.SelAttributes.Color := clRed;
  RichEdit1.Lines.Add ('s=A/F');
  Variables[3,0] :=  Variables[27,0] / Variables[15,0];
  RichEdit1.Lines.Add (FloatToStr(Variables[27,1]) + ' / ' + FloatToStr(Variables[15,0])...
.....
....
....

і додавало наступний

RichEdit1.Lines.Add...
...
...

113

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

ProgramBandera
Загляніть в папку jvcl\examples\JvRichEdit - там приклад роботи з цим компонентом. Картинки там вставляються так:

procedure TEditorMainForm.InsertBitmap(Sender: TObject);
var
  Pict: TPicture;
begin
  if FOpenPictureDialog.Execute then
  begin
    Pict := TPicture.Create;
    try
      Pict.LoadFromFile(FOpenPictureDialog.FileName);
      Clipboard.Assign(Pict);
      Editor.PasteFromClipboard;
    finally
      Pict.Free;
    end;
  end;
end;

Можете запустити той проект, і подивитися, як це працює.

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

114

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

Torbins написав:

ProgramBandera
Можете запустити той проект, і подивитися, як це працює.

https://replace.org.ua/uploads/images/6671/e304ce5fa2ae0ba1d4991b452e536971.bmp
Це вже більш менш те що потрібно, правда з розміром картинки треба попрацювати і буде все добре. Дякую пане Torbins :)

begin
   Definition := CHAS;
   RichEdit1.Lines.Add(Definition);
   Definition := EmptyLine;
   RichEdit1.Lines.Add(Definition);
   RichEdit1.Lines.Add ('Визначаємо час прямолінійного рівномірного руху.');
   Pict := TPicture.Create;
   try
      Pict.LoadFromFile('Час прямолінійного рівномірного руху.jpg');
      Clipboard.Assign(Pict);
      RichEdit1.PasteFromClipboard;
    finally
      Pict.Free;
   end;
   Definition := EmptyLine;
   RichEdit1.Lines.Add(Definition);
   Variables[1,0] :=  Variables[2,0] / Variables[4,0];
   RichEdit1.Lines.Add (FloatToStr(Variables[2,0]) + ' / ' + FloatToStr(Variables[4,0]) + ' = ' + FloatToStr(Variables[1,0]));
   undo := False;
  end

115

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

Вітаю панове!
Якщо я створив в теці з .exe файлом теку Формули і закинув туда файл Час прямолінійного рівномірного руху.jpg
підкажіть як мені правильно прописати ось цей рядок

Pict.LoadFromFile('Час прямолінійного рівномірного руху.jpg');

Щоб він звантажував цей файл з теки Формули

116

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

ProgramBandera написав:

Вітаю панове!
Якщо я створив в теці з .exe файлом теку Формули і закинув туда файл Час прямолінійного рівномірного руху.jpg
підкажіть як мені правильно прописати ось цей рядок

Pict.LoadFromFile('Час прямолінійного рівномірного руху.jpg');

Щоб він звантажував цей файл з теки Формули

Питання знято

Pict.LoadFromFile('Формули\Час прямолінійного рівномірного руху.jpg');

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

117 Востаннє редагувалося ProgramBandera (05.06.2019 13:33:26)

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

Привіт найкращим програмістам України!
В мене є масив

Variables: array [1..54, 0..6] of extended;

Мені потрібно в 48-му рядку визначити максимальне та мінімальне значення, а тоді від максимального відняти мінімальне.
Я тут намудрував ось такий код, але не впевнений чи він правильний. Якщо є хвилинка гляньте чи все вірно, якщо ж ні то підкажіть як його правильно виправити

 var
  a, b, MaxRow, MaxColumn, MinRow, MinColumn: Integer;
  Max, Min: Extended;
  Variables: array [1..54, 0..6] of extended;
 begin
  begin
   Max := Variables[48,0];
   MaxRow := 48;
   MaxColumn := 0;
   for a := 48 to 48 do
    for b := 0 to 6 do
     if Variables[a,b] > Max then
      begin
       Max := Variables[a,b];
       MaxRow := a;
       MaxColumn := b;
      end;

  end;

  begin
   Min := Variables[48,0];
   MinRow := 48;
   MinColumn := 0;
   for a := 48 to 48 do
    for b := 0 to 6 do
     if Variables[a,b] < Min then
      begin
       Min := Variables[a,b];
       MinRow := a;
       MinColumn := b;
      end
  end;
  Variables[2,0] :=  Variables[MaxRow,MaxColumn] - Variables[MinRow,MinColumn];
 end;

118

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

for a := 48 to 48 do

записується простіше:

a:=48

Вам не треба цикл робити. І min/maxRow не потрібні, це просто a. Ну і взагалі вам не потрібні номери рядків/стовпців, вам потрібні лише значення.

Max := Variables[48,0];
Min := Variables[48,0];
for b:=1 to 6 do begin
    if Max<Variables[48,i] then Max:=Variables[48,i];
    if Min>Variables[48,i] then Min:=Variables[48,i];
end;
... := Max-Min;
Подякували: ProgramBandera1

119

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

ProgramBandera
Хочу трохи вас похвалити, бо раніше ви кидали код, який взагалі не компілювався, а цей на перший погляд цілком коректний, та ще й повинен видавати правильний результат. На мою думку, це суттєвий прогрес.

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

120

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

koala написав:
Max := Variables[48,0];
Min := Variables[48,0];
for b:=1 to 6 do begin
    if Max<Variables[48,i] then Max:=Variables[48,i];
    if Min>Variables[48,i] then Min:=Variables[48,i];
end;
... := Max-Min;

Тобто змінні Max Min таки лишаються, а далі має бути напевно так

for a:=0 to 6 do begin
    if Max<Variables[48,a] then Max:=Variables[48,a];
    if Min>Variables[48,a] then Min:=Variables[48,a];
end;
... := Max-Min;

Я правильно зрозумів? Треба for b:=1 to 6 do треба замінити на for а:=0 to 6 do begin, якщо ми лишаємо тільки а

    if Max<Variables[48,i] then Max:=Variables[48,i];
    if Min>Variables[48,i] then Min:=Variables[48,i];

міняю на

    if Max<Variables[48,a] then Max:=Variables[48,a];
    if Min>Variables[48,a] then Min:=Variables[48,a];