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

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

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

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

Помогите, пожалуйста, с программой на Паскале

  • Автор темы Автор темы Juliet
  • Дата начала Дата начала

Juliet

Новые
Регистрация
16 Дек 2011
Сообщения
18
Реакции
0
Баллы
0
Помогите, пожалуйста, с программой на Паскале

Заданы четыре вектора x={x1,x2,x3}; y={y1,y2,y3}; z={z1,z2,z3,z4} и p={p1,p2,p3,p4}. Логической переменной a присвоить значение TRUE, если скалярное произведение векторов x и y больше скалярного произведения векторов z и p и значение FALSE, в противном случае.
Вычисление скалярного произведения оформить в виде процедуры.
Исходные данные: x=(1;2;3); y=(2,5;6;3,2); z=(3,7;1,2;6,4;-5,3); p=(-1;4;1;-2)
 
И вот еще одна...))
Проверить численно первый замечательный предел lim(x→∞)(sin(x)/x)=1, задавая x значения 1; 1/2; 1/4; 1/8;… до тех пор, пока левая часть равенства не будет отличаться от правой менее, чем на заданную погрешность Ɛ.
 
Так устроит?
Код:
TYPE
 Vect=Array[1..4] of Real;
CONST
 x:Vect=(1,2,3,0);
 y:Vect=(2.5,6,3.2,0);
 z:Vect=(3.7,1.2,6.4,-5.3);
 p:Vect=(-1,4,1,-2);

Function SP(M1,M2:Vect):Real;
var
 j:Byte;
 Sum:Real;
begin
 for j:=1 to 4 do
  Sum:=Sum+M1[j]*M2[j];
 SP:=Sum;
end;

BEGIN
 Write(SP(x,y)>SP(z,p));
 Readln;
END.
 
И вот еще одна...))
Проверить численно первый замечательный предел lim(x→∞)(sin(x)/x)=1, задавая x значения 1; 1/2; 1/4; 1/8;… до тех пор, пока левая часть равенства не будет отличаться от правой менее, чем на заданную погрешность Ɛ.
Ладно, проверим:
Код:
CONST
 Eps=0.00001;
VAR
 i:Word;
 x:Real;
BEGIN
 i:=0;
 Repeat
  i:=i+1;
  x:=1.0/i;
 Until ABS(Sin(x)/x-1)<Eps;
 Writeln('i= ',i,'   Result= ',Sin(x)/x:0:6);
 Readln;
END.
 
Спасибо большое, но надо именно процедурой сделать...)
 
Спасибо большое, но надо именно процедурой сделать...)
Да пожалуйста:
Код:
TYPE
 Vect=Array[1..4] of Real;
CONST
 x:Vect=(1,2,3,0);
 y:Vect=(2.5,6,3.2,0);
 z:Vect=(3.7,1.2,6.4,-5.3);
 p:Vect=(-1,4,1,-2);

VAR
 R1,R2:Real;

Procedure SP(M1,M2:Vect;var Res:Real);
var
 j:Byte;
begin
 Res:=0;
 for j:=1 to 4 do
  Res:=Res+M1[j]*M2[j];
end;

BEGIN
 SP(x,y,R1);
 SP(z,p,R2);
 Write(R1>R2);
 Readln;
END.
 
Код:
TYPE
Vect=Array[1..4] of Real;
CONST
x:Vect=(1,2,3,0);
y:Vect=(2.5,6,3.2,0);
z:Vect=(3.7,1.2,6.4,-5.3);
p:Vect=(-1,4,1,-2);

VAR
R1,R2:Real;

Procedure SP(M1,M2:Vect;var Res:Real);
var
j:Byte;
begin
Res:=0;
for j:=1 to 4 do
Res:=Res+M1[j]*M2[j];
end;

BEGIN
SP(x,y,R1);
SP(z,p,R2);
Write(R1>R2);
Readln;
END.
__________________
Хм...спасибо...но что-то не работает она... Здесь ошибку выдает: x:Vect=(1,2,3,0);
 
Хм...спасибо...но что-то не работает она... Здесь ошибку выдает: x:Vect=(1,2,3,0);
Ну, не знаю - естественно, перед выкладыванием программы тестировались. У меня работают безупречно. А что у Вас за Паскаль? Если АВС, то я против его глюков - пас.
Да, и напишите подробнее - что за ошибка? Что пишет?
 
Да, ABC Pascal у меня...
Ладно, постараюсь удержаться в пределах нормативной лексики по поводу этого "изделия", тем более, что общаюсь с девушкой.
Пишет: ожидалось равенство "=" и курсор ставит между x и :
Ясно.
Скорее всего это означает, что этот :tehnari_ru_623: ох, то есть я хотел сказать "Паскаль АВС" не понимает типизированных констант.
Вероятно, иного выхода нет, как вводить значения компонент всех четырех векторов с клавиатуры. Это так:
Код:
TYPE
 Vect=Array[1..4] of Real;

VAR
 R1,R2:Real;
 x,y,z,p:Vect;
 i:Integer;

Procedure SP(M1,M2:Vect;var Res:Real);
var
 j:Integer;
begin
 Res:=0;
 for j:=1 to 4 do
  Res:=Res+M1[j]*M2[j];
end;

BEGIN
 For i:=1 to 4 do
  begin
   write('x',i,'= ');
   readln(x[i]);
  end;
 For i:=1 to 4 do
  begin
   write('y',i,'= ');
   readln(y[i]);
  end;
 For i:=1 to 4 do
  begin
   write('z',i,'= ');
   readln(z[i]);
  end;
 For i:=1 to 4 do
  begin
   write('p',i,'= ');
   readln(p[i]);
  end;

 SP(x,y,R1);
 SP(z,p,R2);
 Write(R1>R2);
 Readln;
END.

P.S. Ох, сказал бы я изобретателям этого ... пару ласковых.
 
Скорее всего это означает, что этот ох, то есть я хотел сказать "Паскаль АВС" не понимает типизированных констант.
Вероятно, иного выхода нет, как вводить значения компонент всех четырех векторов с клавиатуры.
Оу, все ясно)
Теперь все работает) спасибо)))
 
Назад
Сверху