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

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

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

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

Паскаль. Среднее значение элементов массива.

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

tiffany

Ученик
Регистрация
28 Июн 2010
Сообщения
8
Реакции
0
Баллы
0
Паскаль. Среднее значение элементов массива.

привет)
помогите пожал-та,нужно :
найти среднее значение положительных элементов массива [1..12] через константу задать массив
 
привет)
помогите пожал-та,нужно :
найти среднее значение положительных элементов массива [1..12] через константу задать массив
Как модератор, начну с замечания: не цепляйтесь к старым темам, создавайте свои.
Теперь по программе:
Код:
CONST
 A:ARRAY[1..12] of Real=(23.8, -7.5, -345.4, 26.0, 20.0, -17.9,
                         28.0, -3.1, -555.6, 22.0, 24.2, -89.1);
VAR
 Sum:Real;
 N_pos, i:Integer;

BEGIN
 N_pos:=0;
 Sum:=0;
 For i:=1 to 12 do
  If A[i]>0 then
   begin
    Sum:=Sum+A[i];
    Inc(N_pos);
   end;
 WriteLn('The medium value is ', Sum/N_pos:4:1);
 ReadLn;
END.
 
Задача простейшая, могли бы и сами решить...
Код:
const
a:array[1..12] of integer=(0,1,-1,2,-2,3,-3,4,-4,5,-5,6);
var i:byte;
    n:byte;
    s:real;
begin
s:=0;
n:=0;
for i:=1 to 12 do
if a[i]>0 then
 begin
 s:=s+a[i];
 n:=n+1;
 end;
s:=s/n;
write(s:5:2);
end.

Эх,Vladimir_S опередил.
 
Что есть, то есть.
Кстати, уже не первый раз так :)
 
спасибо большое)
может легко,но я не могу понять ((
 
Вообще-то желательно более определённо обозначить верхний предел суммирования, а то получается неопределённость вида бесконечность деленная на бесконечность. И ещё, согласно определению уравнения, в его записи должен присутствовать знак равенства, поэтому в вашем случае не уравнение, а выражение.
 
Вообще-то желательно более определённо обозначить верхний предел суммирования, а то получается неопределённость вида бесконечность деленная на бесконечность. И ещё, согласно определению уравнения, в его записи должен присутствовать знак равенства, поэтому в вашем случае не уравнение, а выражение.
Да нет, Alex, это просто вычисление косинуса через ряд, и никаких неопределенностей там не возникает. Tiffany, уточните задание. Очевидно, нужно либо (как указывает Alex) ввести ограничение на число членов, либо задать точность результата.

Вообще, подобные задачи многократно решались на форуме. Вот, например:
http://www.tehnari.ru/f41/t32388/
 
спасибо большое)
может легко,но я не могу понять ((
Ну хорошо, распишу алгоритм.
1. Как требуется в условии, задается некий массив из 12 чисел, положительных и отрицательных, в форме массива-константы.
2. Организуется цикл для подсчета суммы только положительных членов массива (S) и количества таких членов (N).
3. Выводится результат - число S/N.
И чего тут не понять?
 
Вообще-то желательно более определённо обозначить верхний предел суммирования, а то получается неопределённость вида бесконечность деленная на бесконечность. И ещё, согласно определению уравнения, в его записи должен присутствовать знак равенства, поэтому в вашем случае не уравнение, а выражение.

задание звучало так: решить через while и repeat,все! знака нет. только эта формула.
 
Ну хорошо, распишу алгоритм.
1. Как требуется в условии, задается некий массив из 12 чисел, положительных и отрицательных, в форме массива-константы.
2. Организуется цикл для подсчета суммы только положительных членов массива (S) и количества таких членов (N).
3. Выводится результат - число S/N.
И чего тут не понять?

спасибо)
не знаю...мозг мб не способен понять((((
печально...
 
задание звучало так: решить через while и repeat,все! знака нет. только эта формула.
Ладно.
Будем считать, что задание состоит в том, чтобы найти значение приведенного выражения при различных Х с заданной точностью, например 10 в степени -7.
Код:
VAR
 X:REAL;

Function SUM(Xs:REAL):REAL;
 VAR
   a,S:REAL;
   n:INTEGER;
 Begin
   a:=1;
   S:=1;
   n:=1;
   Repeat
    Inc(n);
    a:=-a*SQR(Xs)/(2*n-2)/(2*n-3);
    S:=S+a;
   Until Abs(a)<1E-7;
   Sum:=S;
 End;

BEGIN
 Write('X= ');
 ReadLn(X);
 WriteLn('Y= ',Sum(X):8:6);
 WriteLn('Cos(X)= ',cos(X):8:6);
 ReadLn;
END.
И вариант с другим циклом:
Код:
VAR
 X:REAL;

Function SUM(Xs:REAL):REAL;
 VAR
   a,S:REAL;
   n:INTEGER;
 Begin
   a:=1;
   S:=1;
   n:=1;
   While Abs(a)>1E-7 do
    begin
     Inc(n);
     a:=-a*SQR(Xs)/(2*n-2)/(2*n-3);
     S:=S+a;
    end;
   Sum:=S;
 End;

BEGIN
 Write('X= ');
 ReadLn(X);
 WriteLn('Y= ',Sum(X):8:6);
 WriteLn('Cos(X)= ',cos(X):8:6);
 ReadLn;
END.
 
спасибо)))
а можно объяснить эти моменты:

- Function SUM(Xs:REAL):REAL;

- Inc(n);

- Until Abs(a)<1E-7;

что они означают?????))
 
спасибо)))
а можно объяснить эти моменты:

- Function SUM(Xs:REAL):REAL;

- Inc(n);

- Until Abs(a)<1E-7;

что они означают?????))

1. В программе вычисление ряда (суммы) оформлено в виде подпрограммы-функции. Приведенная строка - ее заголовок. После того, как функция описана, с ней можно обращаться точно также, как и с любой стандартной функцией Паскаля (напр. Sin(x), Ln(x) и т.п.).
2. Inc(n) это увеличение числа n на 1. Полностью эквивалентно выражению n:= n + 1;
3. Условие завершения цикла. Цикл будет выполняться до тех пор, пока абсолютная величина переменной a не сделается меньше 10 в степени -7.
 
снова прошу помощи с тем же заданием, т к мне преподаватель сказал оно не совсем верно сделано:
----найти среднее значение положительных элементов массива [1..12] через константу задать массив---

вот решение DDS

const
a:array[1..12] of integer=(0,1,-1,2,-2,3,-3,4,-4,5,-5,6);
var i:byte;
n:byte;
s:real;
begin
s:=0;
n:=0;
for i:=1 to 12 do
if a>0 then
begin
s:=s+a;
n:=n+1;
end;
s:=s/n;
write(s:5:2);
end.

Проблема в том что эта страка задана не верно : const
a:array[1..12] of integer=(0,1,-1,2,-2,3,-3,4,-4,5,-5,6);
помогите ее исправить
и еще одно,тоже не верно :
условие не правильно,тоже сказали исправить : if a>0 then

помогите!!!! преподаватель не принимает!!!
 
помогите еще с этим выражением,это не уравнение.
паскаль.JPG
http://www.tehnari.ru/vbimghost.php?do=myimages

нужно посчитать сумму используя while и repeat...нужно высчитать насколько изменяется шаг, правая часть выражения (дробь) и левая ! то что мне решали здесь не то! там надо высчитывать __а__ при а1,а2 (показатели внизу) подставляя в выражение ....я не знаю как объяснить то что надо....препод говорит но я не понимаю....м б кто то поймет....в принципе тут не надо пригалать особого ума(у кого он есть,в отличие от меня) и посчитать просто через while и repeat

очень нужно!!!!!
 
помогите еще с этим выражением,это не уравнение.
паскаль.JPG
http://www.tehnari.ru/vbimghost.php?do=myimages

нужно посчитать сумму используя while и repeat...нужно высчитать насколько изменяется шаг, правая часть выражения (дробь) и левая ! то что мне решали здесь не то! там надо высчитывать __а__ при а1,а2 (показатели внизу) подставляя в выражение ....я не знаю как объяснить то что надо....препод говорит но я не понимаю....м б кто то поймет....в принципе тут не надо пригалать особого ума(у кого он есть,в отличие от меня) и посчитать просто через while и repeat

очень нужно!!!!!

Вообще-то большого проку в подобной "помощи" не вижу - Вы сами явно не желаете разбираться с азами программирования, всё ждете, что добрые "дяди" за Вас всё сделают. По сути же - это игра в "испорченный телефон". Подойдите к преподавателю и попросите сформулировать задание полностью в письменном виде - может быть, тогда будет понятнее. Пока же это просто какой-то набор слов. Между прочим, в приведенном Вами выражении начисто отсутствует как правая, так и левая части. Для них нужно присутствие как минимум знака равенства.
Честно говоря, смутно догадываюсь, в чем смысл задания. Вероятно, нужно проследить изменение величины слагаемых и суммы в целом в зависимости от n. Какой при этом брать х, впрочем, непонятно. Если так, то "то, что Вам решали здесь", вовсе не "не то", а просто требуется незначительная доводка. Хорошо бы Вы это поняли и сделали сами.
 
снова прошу помощи с тем же заданием, т к мне преподаватель сказал оно не совсем верно сделано:
...
Проблема в том что эта страка задана не верно : const
a:array[1..12] of integer=(0,1,-1,2,-2,3,-3,4,-4,5,-5,6);
помогите ее исправить
и еще одно,тоже не верно :
условие не правильно,тоже сказали исправить : if a>0 then

помогите!!!! преподаватель не принимает!!!


Помочь ничем не могу - приведенные стрАки и операторы заданы АБСОЛЮТНО ВЕРНО, выложенную Вами программу сейчас протестировал, ошибок нет, единственное - нужно перед самым последним end. добавить оператор Readln; , чтобы "задержать" экран с результатом. Всё остальное - правильно. Поэтому либо Вы неверно сформулировали задание, либо Ваш преподаватель... э-э... чудак.
 
Подозреваю, что преподаватель число 0 относит к положительным числам, а это неверно. Спросите у него, считает ли нуль положительным или нет? Если считает - откройте вузовский учебник по высшей алгебре и ткните его носом в соответствующее определение множества положительных чисел.

Про неверное задание значений элементов массива - возможно, нужно было определять массив как действительный, типа REAL, более полную формулировку задания дайте для уточнения, хотя для проверки решения этот вариант вполне приемлемый.
 
Назад
Сверху