|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Delphi 7 выдает неверный результат расчета по формуле
Здравствуйте! Есть задача:
Найти Y, если Y = X1 + X2 + … + Xn, X = Z^3 - B + A^2 / tg^2*beta. Количество X вводятся пользователем программы. Для каждого X значения Z, B, А, beta разные (вводятся пользователем программы). Решаю Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils, Math, System; var xn,i:integer; a,b,z,beta,y:real; arr:array of real; begin y:=0; write('input quantity X: '); readln(xn); SetLength(arr,xn); for i:=0 to High(arr) do arr[i]:=0; for i:=0 to High(arr) do begin writeln('Input a,b,z,beta for x',i,': '); write('a='); readln(a); write('b='); readln(b); write('z='); readln(z); write('beta='); readln(beta); arr[i]:=((sqr(z)*z)-b+(sqr(a)/sqr(Tan(beta)))); end; for i:=0 to High(arr) do y:=y+arr[i]; writeln('y=',y:3:2); readln; end. Я что-то не так делаю, или что, потому что результат в образце: [скриншот вложение] Следует заметить, что образец писался на C++. Заранее спасибо |
#2
|
|||
|
|||
Ну, у меня получилось вот так:
Код:
program SumX; {$APPTYPE CONSOLE} uses SysUtils, Math; function getX(Num : Integer) : Double; var Z, B, A, beta : Double; begin WriteLn('Input values to calculate X'+IntToStr(I)); Write('Input Z='); ReadLn(Z); Write('Input B='); ReadLn(B); Write('Input A='); ReadLn(A); Write('Input beta='); ReadLn(beta); Result := Z*Z*Z - B + Sqr(A) / Sqr(Tan(beta)); // Rad // Result := Z*Z*Z - B + Sqr(A) / Sqr(Tan(beta*PI/180)); // Grad end; var N, I : Integer; Y : Double; begin Write('Input number of X='); ReadLn(X); Y := 0; For I := 1 To N Do Y := Y + getX(I); WriteLn(Format('Y=%.2f',[Y])); ReadLn; end; end. 1. Массив тебе не нужен. У тебя простое сложение, которое можно сделать по ходу чтения данных 2. Там в функции рассчета X есть 2 примерно одинаковые строчки. Одна для beta в радианах (// Rad), вторая - градусах (// Grad). Надо оставить одну - которая правильная. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
66demon666 (19.05.2017)
|
#3
|
|||
|
|||
Благодарю, не учел некоторых аспектов)
|