Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 15.01.2012, 22:31   #1 (permalink)
grekkk
Новичок
 
Регистрация: 15.01.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Pascal ABC. Массивы. Нахождение значения переменной Y

Народ помогите пожалуйста.Буду признателен за помощь.Составить программу для нахождения значение переменной y.Условия в файле

A9 – натуральный логарифм из суммы абсолютных значений элементов массива Х
Миниатюры
a9.jpg  
grekkk вне форума   Ответить с цитированием

Старый 15.01.2012, 22:31
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Суть содержания этой темы схожа с этими темами

Двумерные массивы и процедуры PASCAL
Работа с простой переменной
Нахождение конечной суммы ряда
Помогите решить задачу по Pascal. Тема - массивы
Pascal массивы
Нахождение минимальных пересечений

Старый 15.01.2012, 23:01   #2 (permalink)
grekkk
Новичок
 
Регистрация: 15.01.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я тут начал,а закончить не могу(((((((помогите
program qq;
const n=4;
var x: array [1..N]of integer;
s,i: integer;
A9,y: real;
begin
for i:=1 to n do readln;

s:=0;

for i:=1 to n do s:=s+x[i];
end;
s:=0
for i:=1 to N do
A9:= A9 + abs(x[i]);
A9:= ln(A9);
grekkk вне форума   Ответить с цитированием
Старый 16.01.2012, 08:43   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от grekkk Посмотреть сообщение
for i:=1 to n do readln;
А зачем вам столько раз вводить абсолютно в никуда какие-либо значения? Возможно, вы хотели реализовать заполнение массива с клавиатуры? Тогда вам нужно исправить строку на следующее:
Код:
for i:=1 to n do readln(x[i]);
Цитата:
Сообщение от grekkk Посмотреть сообщение
end;
Вам нужно либо вначале открыть операторную скобку begin, либо поместить эту команду в конец программы, завершив вместо точки с запятой просто точкой.
Цитата:
Сообщение от grekkk Посмотреть сообщение
s:=0
Во-первых, выдаст ошибку из-за отсутствия точки с запятой, во-вторых, команда абсолютно бессмысленна в данном месте программы, так как вы предварительно уже в данной переменной подсчитали сумму элементов массива, зачем же ее опять обнулять без вывода значения на экран.
Дальнейший листинг нужно просматривать с опорой на ваше задание, а качать неохота
AlexZir вне форума   Ответить с цитированием
Старый 16.01.2012, 08:50   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от grekkk Посмотреть сообщение
for i:=1 to n do s:=s+x[i];
Насколько я понял задание, вам нужно подсчитать сумму абсолютных значений элементов массива, а не обычную сумму элементов. Поэтому код следующий более правильный:
Код:
for i:=1 to n do s:=s+ABS(x[i]);
Остальной рассчет вообще неверный, потому что вам нужно предварительно подсчитать A9, а не суммировать его значение с модулем N+1 элемента массива, который, к тому же, будет отсутствовать. Далее вам нужно применить команду ветвления, где условием будет значение A9.
AlexZir вне форума   Ответить с цитированием
Старый 16.01.2012, 09:59   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вообще-то стоило бы подвигнуть Вас на самостоятельное доведение программы до ума, да уж ладно. Вот отлаженный вариант, правда у меня нормальный Free Pascal, а не это... ну, в общем, АВС.
Код:
const
 n=4;
var
 x:array [1..N] of real;
 i:integer;
 A9,y,s: real;

begin
 s:=0;
 for i:=1 to n do
  begin
   write('x[',i:2,']= ');
   readln(x[i]);
   s:=s+abs(x[i]);
  end;
 A9:=ln(s);
 if A9>3.8 then
  y:=A9+Cos(A9)/1000
 else
  y:=A9*A9*A9+2.5*Sqrt(1+A9);
 writeln('y = ',y:0:5);
 readln;
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:21.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.