Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 22:54   #1
prs58
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 26
По умолчанию Для двух векторов вычислить значение выражения по формуле (Паскаль)

Пробовал,не получалось составить программу для этой задачи, поэтому прошу помощи:

Для векторов a и b размерностью n=10 вычислить значение y по формуле

prs58 вне форума Ответить с цитированием
Старый 13.11.2011, 23:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

формула очень мелкая. нужно только догадываться..
но задача, по сути - очень простая:
Код:

   y := 0;
   for i:=1 to 10 do 
     if odd(i) then y := y - abs(a[i]-b[i])
     else y := y + abs(a[i]-b[i]);

   WriteLn('Значение выражения Y=',y);
и всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2011, 00:03   #3
prs58
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 26
По умолчанию

То есть программа будет выглядеть полностью вот так?
Код:
uns crt;
const
n:=10;
var
a: array [1..n] of integer;
i, S:integer;
ard:real;
begin
writeln ('ввести значение y по формуле')
y := 0;
   for i:=1 to 10 do 
     if odd(i) then y := y - abs(a[i]-b[i])
     else y := y + abs(a[i]-b[i]);

   WriteLn('Значение выражения Y=',y);
prs58 вне форума Ответить с цитированием
Старый 14.11.2011, 00:39   #4
prs58
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 26
По умолчанию

Serge_Bliznykov

Правильно я написал?
prs58 вне форума Ответить с цитированием
Старый 14.11.2011, 00:42   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нет.
во-первых, Вам нужно описать ДВА массива (а и b)

во-вторых, нужно обеспечить ввод чисел в этим массивы (каким Вам угодно способом, например, в цикле через Read()

в-третьих, Вы описали НЕ НУЖНЫЕ переменные (S и ard), зато забыли описать нужные - где описание Y ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2011, 00:54   #6
prs58
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 26
По умолчанию

Код:
uns crt;
const
n:=10;
var a, b: array [1..n] of integer;
Y:real;
begin
writeln ('ввести значение y по формуле')
read(a);
read(b);
y := 0;
   for i:=1 to 10 do 
     if odd(i) then y := y - abs(a[i]-b[i])
     else y := y + abs(a[i]-b[i]);

   WriteLn('Значение выражения Y=',y);
Теперь так?Сделал ввод a и b через read.

Описал два массива a и b и описал переменную Y.
prs58 вне форума Ответить с цитированием
Старый 14.11.2011, 01:12   #7
prs58
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 26
По умолчанию

Serge_Bliznykov

Или что-то все равно не так сделал?
prs58 вне форума Ответить с цитированием
Старый 14.11.2011, 02:14   #8
prs58
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 26
По умолчанию

Код:
uses crt;
const
n=10;
var a,b:array [1..10] of integer;
i:integer;
y:real;
begin
write ('ввести значение y по формуле:');
read(a[i]);
read(b[i]);
y:=0;
for i :=1 to 10 do
if odd(i) then y := y - abs(a[i]-b[i])
else y := y + abs(a[i]-b[i]);
WriteLn('Значение выражения Y=',y);
end.
Вот еще как получилось,в программе проверял все проходит нормально, на как начинаю её запускать сразу вылетает ошибка
prs58 вне форума Ответить с цитированием
Старый 14.11.2011, 06:30   #9
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Код:
write ('ввести значение y по формуле:');
read(a[i]);
read(b[i]);
у вас цикл для i не объявлен, соответственно он пытается обработать a[0], b[0], что выходит за границы массива
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 14.11.2011, 08:20   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
const
   n=10;
var a,b:array [1..n] of integer;
   i:integer;
   y:longint;
begin
  WriteLn ('введите значение векторов:');
  for i:=1 to n do begin
    Write('A',i,':'); 
    read(a[i]);
    Write('B',i,':'); 
    readln(b[i]);
  end;

  y:=0;
  for i :=1 to n do
    if odd(i) 
        then y := y - abs(a[i]-b[i])
        else y := y + abs(a[i]-b[i]);

   WriteLn('Значение выражения Y=',y);
   Readln;
end.

p.s. данное выражение оперирует только с двумя текущими элементами массивов,
поэтому, можно обойтись вообще ОДНИМ циклом - в том же цикле, где идёт чтение элементов, там же и вычислять Y
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить приближённое значение интеграла по формуле трапеции и Симпсона для n=80 ∫_0^n(π-x) sin⁡ xdx Lyonya-myshin C++ Builder 1 13.06.2011 23:11
Вычислить значение математического выражения для заданных данных Rusak723 Паскаль, Turbo Pascal, PascalABC.NET 3 08.06.2011 17:53
вычислить значение по простой формуле Clockgen Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 17.01.2011 13:38
Вычислить значение выражения WhiteKuz Помощь студентам 0 15.12.2009 22:27
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25