Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.
... функція для зміни знаку дійсного числа на протилежний?
Сподіваюсь, що нема, бо є оператор мінус ( - ). Хоча, в якомусь сенсі його теж можна вважати функцією.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Програма розв'язування задач з фізики! Для учнів 7-го класу.
Сторінки Попередня 1 … 4 5 6 7 8 … 26 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
... функція для зміни знаку дійсного числа на протилежний?
Сподіваюсь, що нема, бо є оператор мінус ( - ). Хоча, в якомусь сенсі його теж можна вважати функцією.
Variables[1,0] := - StrToFloat(Edit1.Text);
Variables[1,0] := - StrToFloat(Edit1.Text);
Як все просто!
Бо я знову хотів придумав збочений код
Variables[1,0] := StrToFloat(Edit1.Text);
Edit8.Text := ('-' + FloatToStr(Variables[1,0]));
Variables[1,0] := StrToFloat(Edit8.Text);
Variables[1,0] := - StrToFloat(Edit1.Text);
Круто, я б здогадався лише на мінус одиницю помножити.
Torbins, а ви власний компілятор ніколи не писали?
Чи хоча б розбір виразів?
Доброго дня панове!
Підкажіть як вивести константу типу 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;
Якось так
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);
Дякую пане topprogrammer.
Підкажіть іще одне: так як поле RichEdit працює з форматом RTF, то чи можу я в нього додати картинку.
Коли я в Word набираю формули і зберігаю документ в форматі RTF, формули там відтворюються як зображення, а не як текст, от я і подумав чи можливо програмно завантажити малюнок з формулою в RichEdit на місце ось цього рядка коду
RichEdit1.Lines.Add ('v=l/t');
Пане, вам уже не RichEdit потрібен, а браузер
Пане, вам уже не RichEdit потрібен, а браузер
Пане koala я знаю що в браузер можна підгружати малюнки, от я тільки не знаю як звідти зберігати текст в RTF. Я питаю про RichEdit для загального розвитку. Та і краще вже TJvRichEdit використовувати для запису формул як радив пан Торбінс.
ProgramBandera
TJvRichEdit дозволяє вставляти картинки, а звичайний TRichEdit - ні.
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...
...
...
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;
Можете запустити той проект, і подивитися, як це працює.
ProgramBandera
Можете запустити той проект, і подивитися, як це працює.
Це вже більш менш те що потрібно, правда з розміром картинки треба попрацювати і буде все добре. Дякую пане 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
Вітаю панове!
Якщо я створив в теці з .exe файлом теку Формули і закинув туда файл Час прямолінійного рівномірного руху.jpg
підкажіть як мені правильно прописати ось цей рядок
Pict.LoadFromFile('Час прямолінійного рівномірного руху.jpg');
Щоб він звантажував цей файл з теки Формули
Вітаю панове!
Якщо я створив в теці з .exe файлом теку Формули і закинув туда файл Час прямолінійного рівномірного руху.jpg
підкажіть як мені правильно прописати ось цей рядокPict.LoadFromFile('Час прямолінійного рівномірного руху.jpg');
Щоб він звантажував цей файл з теки Формули
Питання знято
Pict.LoadFromFile('Формули\Час прямолінійного рівномірного руху.jpg');
Привіт найкращим програмістам України!
В мене є масив
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;
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;
ProgramBandera
Хочу трохи вас похвалити, бо раніше ви кидали код, який взагалі не компілювався, а цей на перший погляд цілком коректний, та ще й повинен видавати правильний результат. На мою думку, це суттєвий прогрес.
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];