Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 29.08.2010, 20:40   #11 (permalink)
tiffany
Новичок
 
Регистрация: 28.06.2010
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Вообще-то желательно более определённо обозначить верхний предел суммирования, а то получается неопределённость вида бесконечность деленная на бесконечность. И ещё, согласно определению уравнения, в его записи должен присутствовать знак равенства, поэтому в вашем случае не уравнение, а выражение.
задание звучало так: решить через while и repeat,все! знака нет. только эта формула.
tiffany вне форума   Ответить с цитированием

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

Можете узнать больше информации о этой проблеме, почитав похожие темы

Количество элементов массива С++
Количество элементов массива

Старый 29.08.2010, 20:44   #12 (permalink)
tiffany
Новичок
 
Регистрация: 28.06.2010
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ну хорошо, распишу алгоритм.
1. Как требуется в условии, задается некий массив из 12 чисел, положительных и отрицательных, в форме массива-константы.
2. Организуется цикл для подсчета суммы только положительных членов массива (S) и количества таких членов (N).
3. Выводится результат - число S/N.
И чего тут не понять?
спасибо)
не знаю...мозг мб не способен понять((((
печально...
tiffany вне форума   Ответить с цитированием
Старый 29.08.2010, 21:33   #13 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от tiffany Посмотреть сообщение
задание звучало так: решить через 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 31.08.2010, 20:01   #14 (permalink)
tiffany
Новичок
 
Регистрация: 28.06.2010
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

- Function SUM(Xs:REAL):REAL;

- Inc(n);

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

что они означают?????))
tiffany вне форума   Ответить с цитированием
Старый 31.08.2010, 21:08   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от tiffany Посмотреть сообщение
спасибо)))
а можно объяснить эти моменты:

- 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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.09.2010, 13:46   #16 (permalink)
tiffany
Новичок
 
Регистрация: 28.06.2010
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

снова прошу помощи с тем же заданием, т к мне преподаватель сказал оно не совсем верно сделано:
----найти среднее значение положительных элементов массива [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[i]>0 then
begin
s:=s+a[i];
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[i]>0 then

помогите!!!! преподаватель не принимает!!!
tiffany вне форума   Ответить с цитированием
Старый 11.09.2010, 14:02   #17 (permalink)
tiffany
Новичок
 
Регистрация: 28.06.2010
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

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

очень нужно!!!!!
tiffany вне форума   Ответить с цитированием
Старый 11.09.2010, 21:06   #18 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

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

очень нужно!!!!!
Вообще-то большого проку в подобной "помощи" не вижу - Вы сами явно не желаете разбираться с азами программирования, всё ждете, что добрые "дяди" за Вас всё сделают. По сути же - это игра в "испорченный телефон". Подойдите к преподавателю и попросите сформулировать задание полностью в письменном виде - может быть, тогда будет понятнее. Пока же это просто какой-то набор слов. Между прочим, в приведенном Вами выражении начисто отсутствует как правая, так и левая части. Для них нужно присутствие как минимум знака равенства.
Честно говоря, смутно догадываюсь, в чем смысл задания. Вероятно, нужно проследить изменение величины слагаемых и суммы в целом в зависимости от n. Какой при этом брать х, впрочем, непонятно. Если так, то "то, что Вам решали здесь", вовсе не "не то", а просто требуется незначительная доводка. Хорошо бы Вы это поняли и сделали сами.
Vladimir_S вне форума   Ответить с цитированием
Старый 11.09.2010, 21:19   #19 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

помогите!!!! преподаватель не принимает!!!
Помочь ничем не могу - приведенные стрАки и операторы заданы АБСОЛЮТНО ВЕРНО, выложенную Вами программу сейчас протестировал, ошибок нет, единственное - нужно перед самым последним end. добавить оператор Readln; , чтобы "задержать" экран с результатом. Всё остальное - правильно. Поэтому либо Вы неверно сформулировали задание, либо Ваш преподаватель... э-э... чудак.
Vladimir_S вне форума   Ответить с цитированием
Старый 13.09.2010, 06:59   #20 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Подозреваю, что преподаватель число 0 относит к положительным числам, а это неверно. Спросите у него, считает ли нуль положительным или нет? Если считает - откройте вузовский учебник по высшей алгебре и ткните его носом в соответствующее определение множества положительных чисел.

Про неверное задание значений элементов массива - возможно, нужно было определять массив как действительный, типа REAL, более полную формулировку задания дайте для уточнения, хотя для проверки решения этот вариант вполне приемлемый.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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