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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2010, 20:44   #1
santi90
 
Регистрация: 14.02.2010
Сообщений: 9
По умолчанию Делфи. Программа немного не то считает

нужно вычислить сумму ряда сточностью е=10^-3
если общий член an=(10^n)/n!
что неправильно! всяко исправлял! и пост какие то ошибки! либо считает не сумму а прост общий член!
когда задаю цилом, выдает мол деление на ноль
не догоняю чет короче!
если кто может подскажите
ЗАРАНЕЕ СПАСИБО!


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function factorial(n:Word):Longint;
var f:longint;
i:integer;
begin
f:=1;
for i:=2 to n do
f:=f*i;
result:=f;
end;

procedure TForm1.Button1Click(Sender: TObject);
const e=0.1E-2;
var {объявление локальных переменных}
Code1,Code2:integer;
v2,v3:real;
s1,s3: string;
v1,n:integer;
begin
s1:= Edit1.Text ; {чтение строки из Edit1 в s1}
Val(s1,v1, Code1); {преобразование строки s1 в число v1 и выдача кода ошибки}
{если нет ошибки, то Code1=0}
if Code1 <> 0 then Label4.Caption:='Неверный ввод ';
if (Code1=0) then {если нет ошибок ввода}
begin
while v2>e do
begin
v3:=0;
v2:=(exp(ln(10)*(v1)))/factorial(v1); {расчет суммы}
v3:=v3+v2;
Str(v3:5:2, s3); {преобразование суммы в строку}
Label4.Caption:='OK, сумма равна:'+ s3; {вывод сроки в элемент Label4}
end;
end;
end;
end.
santi90 вне форума Ответить с цитированием
Старый 22.03.2010, 21:26   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

неправильно шпаришь )
и я не пойму, зачем здесь exp и ln
легче написать функцию возведения в степень числа 10 (это очень просто), функцию факториал ты написал (за правильность не ручаюсь)
и все считаешь
допустим, функция возводит в степень любое число Stepen(i: integer; st: integer), а fact(i: integer) считает факториал

Код:
while a > 0.001 do begin
   inc(i);
   a := stepen(10, i) / fact(i);
   s := s + a;
end;
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 22.03.2010, 21:33   #3
santi90
 
Регистрация: 14.02.2010
Сообщений: 9
По умолчанию

Спасибо что откликнулся!)

так exp и ln это возведение в степень!

while a > 0.001 do begin
inc(i);
a := stepen(10, i) / fact(i);
s := s + a;
end;
я прост не шарю в Дельфи) всегда в степень через экспоненту возводил)
а что такое inc?? извиняй я нуб в этом деле!!(

короче не считает! в с таким циклом он в label4 вобще ничего не выводит!
факториал прально считаеТ!! проверено!!!
что же дальше!!! ес не делать никакого цикла он считает просто общий член! если делать то ничего не выводит(

Последний раз редактировалось santi90; 22.03.2010 в 21:40.
santi90 вне форума Ответить с цитированием
Старый 22.03.2010, 21:41   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

ты наверн меня узнал? тебе скидочку сделаю
i - кол-во итераций
inc(i) - инкремент переменной кол-ва итераций, т.е. i := i +1;

блин, я б те за 15 мин написал всё это (3руб\мин), но неохота заморачиваться, а ты уже близок к тому, чтоб разродиться )
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 22.03.2010, 21:45   #5
santi90
 
Регистрация: 14.02.2010
Сообщений: 9
По умолчанию

конечно узнал!) блин ну те 15 минут!) а я разрождаться буду весь вечер)
я прост подумал может надо как то начальное значение дать!
типа общий член при n=1,
как бы только как реализовать это ХЗ!!)
santi90 вне форума Ответить с цитированием
Старый 22.03.2010, 22:04   #6
santi90
 
Регистрация: 14.02.2010
Сообщений: 9
По умолчанию

мне же смотри там надо делать с кнопами и тд!
я хотел чтобы в Edit вводишь число членов!! типа найти сумму 9 членов рядА!
и чтобы считало! а если по тому циклу как ты показал он чет вообще не считает(
как бы получается что то что я ввожу он инкриминирует! хотя этого же не надо вроде как делать!( короче я окончательно запутался!
santi90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написал прогу! немного не то считает! santi90 Компоненты Delphi 2 23.03.2010 18:42
программа Добавляет левые элементы в массив, и не считает числа входящие в условие! lutfi Общие вопросы C/C++ 1 12.12.2009 00:48
Как проверить, верно ли считает программа? Mixim Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 05.12.2009 07:14
Программа считает пробел за конец строки AxenicX Общие вопросы C/C++ 3 12.11.2009 10:16
Программка в Борланд Си... Программа есть... Ошибку не высвечивает но и не считает... Спасайте... Катюшенька Помощь студентам 1 18.05.2009 22:21