Решить формулу через оператор for (неясны некоторые моменты задания) - Pascal
Формулировка задачи:
дана формула W(k)=m*v^2/2,
где m - масса, v - скорость.
Составить алгоритм для получения зависимости W(k) от m, если:
v изменяется от v(1) до v(2) с шагом Δv,
m изменяется от m(1) до m(2) с шагом Δm.
решение через for
я несовсем поняла что имеется в виду под получением зависимости w(k) от m
немогу понять что делать. всё что получилось:
Решение задачи: «Решить формулу через оператор for (неясны некоторые моменты задания)»
textual
Листинг программы
uses crt; var v1,v2,v,m1,m2,m,w,dv,dm:real; n,k,i,j:integer; begin clrscr; repeat writeln('Введите диапазон изменения скорости v1>0 v2>v1:'); readln(v1,v2); until(v1>0)and(v2>v1); repeat write('Шаг изменения скорости dv>0 dv<',v2-v1:0:1,' dv='); readln(dv); until (dv>0)and(dv<v2-v1); repeat writeln('Введите диапазон изменения массы m1>0 m2>m1:'); readln(m1,m2); until(m1>0)and(m2>m1); repeat write('Шаг изменения массы dm>0 dm<',m2-m1:0:1,' dm='); readln(dm); until (dm>0)and(dm<m2-m1); n:=round((v2-v1)/dv)+1;{количество точек на 1 больше чем интервалов} k:=round((m2-m1)/dm)+1; for i:=1 to n do begin v:=v1+dv*(i-1); for j:=1 to k do begin m:=m1+dm*(j-1); w:=v*sqr(m)/2; writeln('v=',v:5:1,' m=',m:5:1,' w=',w:7:3); end; end; writeln; readln end.
Объяснение кода листинга программы
- Объявлены переменные: v1, v2, v, m1, m2, m, w, dv, dm (реальные), n, k, i, j (целые).
- Выполняется блок try до тех пор, пока не будет введено корректное значение для v1 и v2 (больше нуля и v2 больше v1).
- Выполняется блок try до тех пор, пока не будет введено корректное значение для dv (больше нуля и меньше v2-v1).
- Выполняется блок try до тех пор, пока не будет введено корректное значение для m1 и m2 (больше нуля и m2 больше m1).
- Выполняется блок try до тех пор, пока не будет введено корректное значение для dm (больше нуля и меньше m2-m1).
- Переменная n инициализируется как округленное значение (вверх) (v2-v1)/dv + 1.
- Переменная k инициализируется как округленное значение (вверх) (m2-m1)/dm + 1.
- В цикле for i от 1 до n выполняется: 8.1. Переменная v инициализируется как v1 + dv(i-1). 8.2. В цикле for j от 1 до k выполняется: 8.2.1. Переменная m инициализируется как m1 + dm(j-1). 8.2.2. Переменная w инициализируется как v*m/2. 8.2.3. Выводится сообщение 'v=',v:5:1,' m=',m:5:1,' w=',w:7:3.
- После окончания внутреннего цикла for, выводится сообщение и запрашивается ввод.