Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
1

Не суммируются числа

25.09.2017, 00:58. Показов 1151. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хоть убей но не суммируются тупо два числа) Спасайте)
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var a,b,e,y,x,s,s_x,h,chisl,znam,first:real; k:integer;
begin
  znam:=1;
  chisl:=1;
  k:=1;
  a:=StrToFloat(TEdit1.Text); // считает 0.1
  x:=a;
  b:=StrToFloat(TEdit2.Text); // считает 0.9
  h:=(b-a)/10;
  e:=StrToFloat(TEdit3.Text); // считает 0.00001 (1E-5)
  TMemo1.Lines.Add('a = '+FloatToStr(a));
  TMemo1.Lines.Add('b = '+FloatToStr(b));
  TMemo1.Lines.Add('e = '+FloatToStr(e));
  TMemo1.Lines.Add('h = '+FloatToStr(h));
  while s<e do begin
   znam:=znam*(k*2)*(k*2+1);
   chisl:=chisl*x*x;
   if ((k mod 2)=0) then first:=1 else first:=-1;
   s_x:=first*(chisl/znam);
   s:=s+s_x;
   TMemo1.Lines.Add('S(x)='+FloatToStr(s_x)+' ;');
   TMemo1.Lines.Add('S='+FloatToStr(s)+' ;');
   x:=x+h;
   inc(k);
  end;
end;

Как по мне - это абсурдно, в чём проблема?
Вот что выводится в MEMO:
Кликните здесь для просмотра всего текста
a = 0.1
b = 0.9
e = 1E-5
h = 0.08
S(x)=-0.00166666666666667 ;
S=-0.00166666666666667 ;
S(x)=2.7E-6 ;
S=-0.00166396666666667 ;
S(x)=-4.34571428571429E-9 ;
S=-0.00166397101238095 ;
S(x)=6.97728571428572E-12 ;
S=-0.00166397100540367 ;
S(x)=-1.11890290909091E-14 ;
S=-0.00166397100541486 ;
S(x)=1.79311363636364E-17 ;
S=-0.00166397100541484 ;
S(x)=-2.87239727272727E-20 ;
S=-0.00166397100541484 ;
S(x)=4.60005975E-23 ;
S=-0.00166397100541484 ;
S(x)=-7.3654757868421E-26 ;
S=-0.00166397100541484 ;
S(x)=1.1791775997792E-28 ;
S=-0.00166397100541484 ;
S(x)=-1.88761631585207E-31 ;
S=-0.00166397100541484 ;
S(x)=3.02144451624055E-34 ;
S=-0.00166397100541484 ;
S(x)=-4.83603284679186E-37 ;
S=-0.00166397100541484 ;
S(x)=7.7400348370575E-40 ;
S=-0.00166397100541484 ;
S(x)=-1.23873847865338E-42 ;
S=-0.00166397100541484 ;
S(x)=1.9824507849661E-45 ;
S=-0.00166397100541484 ;
S(x)=-3.17258762595752E-48 ;
S=-0.00166397100541484 ;
S(x)=5.07709293054883E-51 ;
S=-0.00166397100541484 ;
S(x)=-8.12471902435197E-54 ;
S=-0.00166397100541484 ;
S(x)=1.30015320777496E-56 ;
S=-0.00166397100541484 ;
S(x)=-2.08053309549814E-59 ;
S=-0.00166397100541484 ;
S(x)=3.32927326251328E-62 ;
S=-0.00166397100541484 ;
S(x)=-5.32745318177195E-65 ;
S=-0.00166397100541484 ;
S(x)=8.52483112028781E-68 ;
S=-0.00166397100541484 ;
S(x)=-1.36410670208715E-70 ;
S=-0.00166397100541484 ;
S(x)=2.18276870689563E-73 ;
S=-0.00166397100541484 ;
S(x)=-3.49272390661642E-76 ;
S=-0.00166397100541484 ;
S(x)=5.58879593528636E-79 ;
S=-0.00166397100541484 ;
S(x)=-8.94272677476739E-82 ;
S=-0.00166397100541484 ;
S(x)=1.43093401868163E-84 ;
S=-0.00166397100541484 ;
S(x)=-2.2896409669125E-87 ;
S=-0.00166397100541484 ;
S(x)=3.66364570484528E-90 ;
S=-0.00166397100541484 ;
S(x)=-5.86216452944443E-93 ;
S=-0.00166397100541484 ;
S(x)=9.379963005383E-96 ;
S=-0.00166397100541484 ;
S(x)=-1.50086957352128E-98 ;
S=-0.00166397100541484 ;
S(x)=2.40150553906279E-101 ;
S=-0.00166397100541484 ;
S(x)=-3.84258194398075E-104 ;
S=-0.00166397100541484 ;
S(x)=6.14839376121979E-107 ;
S=-0.00166397100541484 ;
S(x)=-9.83782913471644E-110 ;
S=-0.00166397100541484 ;
S(x)=1.57411338889497E-112 ;
S=-0.00166397100541484 ;
S(x)=-2.51867393550782E-115 ;
S=-0.00166397100541484 ;
S(x)=4.03001939899378E-118 ;
S=-0.00166397100541484 ;
S(x)=-6.44824648984149E-121 ;
S=-0.00166397100541484 ;
S(x)=1.03175237119634E-123 ;
S=-0.00166397100541484 ;
S(x)=-1.65085418475035E-126 ;
S=-0.00166397100541484 ;
S(x)=2.64144387438433E-129 ;
S=-0.00166397100541484 ;
S(x)=-4.22642851676967E-132 ;
S=-0.00166397100541484 ;
S(x)=6.76246717444817E-135 ;
S=-0.00166397100541484 ;
S(x)=-1.08202262862568E-137 ;
S=-0.00166397100541484 ;
S(x)=1.73127905818243E-140 ;
S=-0.00166397100541484 ;
S(x)=-2.77011240891363E-143 ;
S=-0.00166397100541484 ;
S(x)=4.43228132358083E-146 ;
S=-0.00166397100541484 ;
S(x)=-7.09180643165363E-149 ;
S=-0.00166397100541484 ;
S(x)=1.13471312626618E-151 ;
S=-0.00166397100541484 ;
S(x)=-1.81557817526509E-154 ;
S=-0.00166397100541484 ;
S(x)=2.90498246279378E-157 ;
S=-0.00166397100541484 ;
S(x)=-4.64806057456503E-160 ;
S=-0.00166397100541484 ;
S(x)=7.43703390900563E-163 ;
S=-0.00166397100541484 ;
S(x)=-1.18994661055388E-165 ;
S=-0.00166397100541484 ;
S(x)=1.90394735778456E-168 ;
S=-0.00166397100541484 ;
S(x)=-3.0463665240842E-171 ;
S=-0.00166397100541484 ;
S(x)=4.87426505444502E-174 ;
S=-0.00166397100541484 ;
S(x)=-7.79894592850823E-177 ;
S=-0.00166397100541484 ;
S(x)=1.24785024135669E-179 ;
S=-0.00166397100541484 ;
S(x)=-1.99658969563028E-182 ;
S=-0.00166397100541484 ;
S(x)=3.1945890037739E-185 ;
S=-0.00166397100541484 ;
S(x)=-5.1114130437166E-188 ;
S=-0.00166397100541484 ;
S(x)=8.17837060401793E-191 ;
S=-0.00166397100541484 ;
S(x)=-1.30855635090333E-193 ;
S=-0.00166397100541484 ;
S(x)=2.09371667727818E-196 ;
S=-0.00166397100541484 ;
S(x)=-3.34998792695598E-199 ;
S=-0.00166397100541484 ;
S(x)=5.3600448591435E-202 ;
S=-0.00166397100541484 ;
S(x)=-8.57617167295892E-205 ;
S=-0.00166397100541484 ;
S(x)=1.37220302394347E-207 ;
S=-0.00166397100541484 ;
S(x)=-2.19554907147554E-210 ;
S=-0.00166397100541484 ;
S(x)=3.51291627750279E-213 ;
S=-0.00166397100541484 ;
S(x)=-5.62072491147456E-216 ;
S=-0.00166397100541484 ;
S(x)=8.99325165527114E-219 ;
S=-0.00166397100541484 ;
S(x)=-1.43893458416773E-221 ;
S=-0.00166397100541484 ;
S(x)=2.30231767837309E-224 ;
S=-0.00166397100541484 ;
S(x)=-3.68374316107185E-227 ;
S=-0.00166397100541484 ;
S(x)=5.89404351068114E-230 ;
S=-0.00166397100541484 ;
S(x)=-9.43055466208674E-233 ;
S=-0.00166397100541484 ;
S(x)=1.50890203214783E-235 ;
S=-0.00166397100541484 ;

Затем программа вылетает от переполнения.
Как видно S(x) всегда разное прям кардинально, а вот S стоит на месте почти. Почему?! Что за бред?!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2017, 00:58
Ответы с готовыми решениями:

Циклы. С клавиатуры вводятся числа и последовательно суммируются. Когда их сумма превысит 150, вывести сумму
С клавиатуры вводятся действительные числа и последовательно суммируются. Когда их сумма . превысит...

С клавиатуры вводятся числа и последовательно суммируются. Найти количество введенных чисел, когда их сумма превысила 100
Заранее спасибо!!

С клавиатуры вводятся действительные числа и последовательно суммируются. Когда их сумма превысит 150, найти сумму введенных чисел.
С клавиатуры вводятся действительные числа и последовательно суммируются. Когда их сумма превысит...

не суммируются поля
Помогите в составлении отчета на Access - не суммируются поля. БД при необходимости вышлю....

10
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
25.09.2017, 01:12 2
Скорее всего приведен не тот кусок кода.
0
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
25.09.2017, 01:18  [ТС] 3
Цитата Сообщение от northener Посмотреть сообщение
Скорее всего приведен не тот кусок кода.
В смысле? Именно тот кусок кода приведён! Прикрепил проект.
Вложения
Тип файла: zip ProjectThypson.zip (70.6 Кб, 6 просмотров)
0
Айлурофил
441 / 375 / 107
Регистрация: 27.05.2017
Сообщений: 2,155
Записей в блоге: 1
25.09.2017, 01:38 4
Лучший ответ Сообщение было отмечено Thypson как решение

Решение

Так в чем проблема? Всё считается согласно тому, что написано.
1
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
25.09.2017, 01:40  [ТС] 5
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Так в чем проблема? Всё считается согласно тому, что написано.
Разве при сложении -0.00166666666666667 и 2.7E-6 должно стать лишь -0.00166396666666667 ?
0
Айлурофил
441 / 375 / 107
Регистрация: 27.05.2017
Сообщений: 2,155
Записей в блоге: 1
25.09.2017, 01:43 6
Лучший ответ Сообщение было отмечено Thypson как решение

Решение

А разве нет?
1
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
25.09.2017, 01:54  [ТС] 7
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
А разве нет?
Просто лучший ответ! Я тупой!)
А как же тогда выполнить задание? Вроде всё же правильно, но получается что до точности 10^-5 не дойдёт никогда...
Что не так в моём коде по заданию:
Необходимо вывести на экран таблицу значений функции Y(х) и ее разложения в ряд S(х) с точностью https://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon. Близость значений S(х) и Y(х) во всем диапазоне значений х указывает на правильность вычисления S(х) и Y(х). Вывести число итераций, необходимое, для достижения заданной точности.
a=0.1
b=0.9
https://www.cyberforum.ru/cgi-bin/latex.cgi?{\varepsilon}^{-5}
https://www.cyberforum.ru/cgi-bin/latex.cgi?Y=\frac{sin(x)}{x}
https://www.cyberforum.ru/cgi-bin/latex.cgi?1-\frac{{x}^{2}}{3!}+...+{(-1)}^{k}\frac{{x}^{2k}}{(2k+1)!}
Заранее спасибо!)
0
Айлурофил
441 / 375 / 107
Регистрация: 27.05.2017
Сообщений: 2,155
Записей в блоге: 1
25.09.2017, 02:01 8
Во-первых, с e надо сравнивать не s, а s_x.
Во-вторых, сравнивать надо по модулю
Delphi
1
while (abs(s_x)>e)
В-третьих, не меньше, а больше.
В-четвертых, формулы расчета числителя и знаменателя не верные.
1
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
25.09.2017, 02:17  [ТС] 9
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
В-четвертых, формулы расчета числителя и знаменателя не верные.
Интересно в каком-же это месте они неверные?
Числитель умнокажется на квадрат X - это и есть то, что нужно когда итератор увеличивается на 1, при формуле X^2k
Знаменатель тоже умножается на последующие два значения, тем самым увеличивая факториал знаменателя, при формуле (2k+1). Что не так?

Добавлено через 4 минуты
При
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
  repeat
   znam:=znam*(k*2)*(k*2+1);
   chisl:=chisl*x*x;
   if ((k mod 2)=0) then s_x:=chisl/znam else s_x:=1-chisl/znam;
   s:=s+s_x;
   TMemo1.Lines.Add('X = '+FloatToStr(x)+'; Y(x)='+FloatToStr(sin(x)/x)+'; S=' + FloatToStr(s)+' ;');
   x:=x+h;
   inc(k);
   until (s_x)>e

У меня получилось добиться:
a = 0.1
b = 0.9
e = 1E-5
h = 0.08
X = 0.1; Y(x)=0.998334166468282; S=0.998333333333333 ;
1
Айлурофил
441 / 375 / 107
Регистрация: 27.05.2017
Сообщений: 2,155
Записей в блоге: 1
25.09.2017, 03:17 10
x2k, это, наверное, всё-таки, power(x,2*k)
UPD: А, ты вот как сделал. Ясно.
1
21 / 21 / 19
Регистрация: 10.09.2013
Сообщений: 285
25.09.2017, 04:13  [ТС] 11
Финальный, рабочий вариант:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  a:=StrToFloat(TEdit1.Text); // считает 0.1
  b:=StrToFloat(TEdit2.Text); // считает 0.9
  e:=StrToFloat(TEdit3.Text); // считает 0.00001 (1E-5)
  h:=(b-a)/10;
  x:=a;
  while x<=b do
   begin
    n:=1;
    chisl:=1;
    s:=1;
    znam:=1;
    while Abs(chisl/znam)>e do
     begin
       znam:=znam*(n*2)*(n*2+1);
       chisl:=-chisl*x*x;
       s:=s+chisl/znam;
       inc(n);
     end;
    y:=sin(x)/x;
    TMemo1.Lines.Add('Pri x = '+formatfloat('0.00',x)+
                    ', sum = '+formatfloat('0.00000',s)+
                    ', Y = '+formatfloat('0.00000',y)+
                    ', N =  '+inttostr(n));
    x:=x+h;
   end;
1
25.09.2017, 04:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 04:13
Помогаю со студенческими работами здесь

Суммируются ссылки, как исправить?
Вновь приветствую! И снова у меня беда. Как сделать так чтобы ссылки не суммировались. Пример на...

В запросе не суммируются значения столбцов
Доброго времени суток!!! Есть запрос, в нём в одном из столбцов должно суммироваться 4 других...

В программе не суммируются значения массива
Битый час пытаюсь понять почему в программе не суммируется значения массива. #include &lt;stdio.h&gt;...

Не суммируются значение с ячейки DataGridView в label
Здравствуйте,пытаюсь передать выбранные данные с ячейки в label, при выборе множество ячеек из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru