Помогите решить
Ребята помогите пожалуйста!
Выдает ошибку, что не так? Найти значение у (линейная интерполяция) Program int ; var x , y : array [ 1 .. 4 ] of real ; i : integer ; q : real ; z , a , b : real ; begin for i := 1 to 4 do begin writeln ( ‘ введите xi , yi ’ ) ; read ( x [ i ] , y [ i ] ) end ; read ( q ) ; for i := 1 to 3 do begin if ( q >= x [ i ] ) and ( q <= x [ i + 1 ] ) then begin a := ( y [ i + 1 ] - y [ i ] ) / ( x [ i + 1 ] - x [ i ] ) ; b := y [ i ] - a * x [ i ] ; y := a * q + b ; writeln ( ‘ y = ‘ , y ) ; end ; end ; writeln ( ‘ q не принадлежит интервалу ‘ ) end . |
А что это такое?
|
Да вроде все нормально, только перед выражением
a := ( y [ i + 1 ] - y [ i ] ) / ( x [ i + 1 ] - x [ i ] ) ; я бы сделал проверку что ( x [ i + 1 ] - x [ i ] ) <> 0 А что за ошибка то ? |
Прежде всего, "не так" ваше чересчур вольное обращение с кавычками, апострофами и т.п. Вообще-то Паскаль понимает только один вид: ' (это где клавиша с русской буквой "Э"). Исправьте.
Есть еще одно. Старайтесь при считывании с экрана НЕ пользоваться оператором Read, лучше Readln. Read - он такой... немного скользкий, может внести путаницу. Ввод данных я бы оформил так: Код:
for i := 1 to 4 do |
ошибка: нельзя преобразовать тип real к array [1..4] of real
|
Вложений: 1
Вот что выходит Вложение 249093
|
А ну да все правильно :) Y у вас массив же, замените у на z будет вам счастье
т.е. вместо y := a * q + b ; writeln ( 'y = ', y ) ; z:= a * q + b ; writeln ( 'z= ', z) ; |
СПАСИБО, ВСЕ РАБОТАЕТ!!!!!!!!!!!!!!!!!:bsod:
|
Часовой пояс GMT +4, время: 13:26. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.