• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите решить

13Ви13

Ученик
Регистрация
13 Ноя 2015
Сообщения
4
Реакции
0
Баллы
0
Помогите решить

Ребята помогите пожалуйста!
Выдает ошибку, что не так?
Найти значение у (линейная интерполяция)
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
 begin
  write ( 'введите xi , yi ') ;
  readln ( x [ i ] , y [ i ] ) 
 end ;
write( 'введите q  ') ;
readln ( q ) ;
 
ошибка: нельзя преобразовать тип real к array [1..4] of real
 
Вот что выходит Рисунок2.png.webp
 
А ну да все правильно :) Y у вас массив же, замените у на z будет вам счастье
т.е. вместо
y := a * q + b ;
writeln ( 'y = ', y ) ;

z:= a * q + b ;
writeln ( 'z= ', z) ;
 
СПАСИБО, ВСЕ РАБОТАЕТ!!!!!!!!!!!!!!!!!:bsod:
 
Назад
Сверху