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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2009, 21:41   #1
Hegel
Пользователь
 
Регистрация: 08.01.2009
Сообщений: 32
По умолчанию Поясните откуда ошибка?

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

VAR
X,EPS,S:REAL;
I,n:INTEGER;

function power2 (Z: real; k : integer) : real;
begin
power2:=exp(ln(Z)*k);
end;

BEGIN
WRITELN('VVEDI X');
READLN(X);
IF (X>=0) AND (X<1) THEN BEGIN
S:=1;
I:=1;
EPS:=0.001;
WHILE EPS>0.0001 DO
BEGIN
EPS:=(I+1)* POWER2(X,I);
S:=S+EPS;
I:=I+1;
END;
END
ELSE BEGIN
WRITELN('VVEDI N);
READLN(N);
FOR I:=1 TO N DO
S:=S+(I+1)* POWER2(X,I);
END;
WRITELN('SUMMA=',S);
READLN;
END.

[Pascal Error] Project1.dpr(32): E2052 Unterminated string
[Pascal Error] Project1.dpr(33): E2029 ',' or ')' expected but identifier 'READLN' found



Задание было таким

ВЫчислить приближенное значение бесконечной суммы с точностью Е=0,0001

Hegel вне форума Ответить с цитированием
Старый 11.01.2009, 21:46   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

думаю очевидно что в "WRITELN('VVEDI N);" пропущена кавычка

а вот ссылок на левые сайты делать не надо
свободен...
wall66 вне форума Ответить с цитированием
Старый 11.01.2009, 21:48   #3
Hegel
Пользователь
 
Регистрация: 08.01.2009
Сообщений: 32
По умолчанию

Спасибо ошибку исправил
Hegel вне форума Ответить с цитированием
Старый 11.01.2009, 22:21   #4
Hegel
Пользователь
 
Регистрация: 08.01.2009
Сообщений: 32
По умолчанию Посмотрите другой вариант программы!

Код:
var
  Form1: TForm1;
  VAR
X,EPS,S:REAL;
I,n:INTEGER;

implementation


function power2 (Z: real; k : integer) : real;
begin
power2:=exp(ln(Z)*k);
end;

function vvod(X,EPS,S:REAL;I,n:INTEGER;edit1,edit2:Tedit): real;
 begin
iF (X>=0) AND (X<1) THEN BEGIN
S:=1;
I:=1;
EPS:=0.001;
WHILE EPS>0.0001 DO
      BEGIN
EPS:=(I+1)* POWER2(X,I);
S:=S+EPS;
I:=I+1;
 END;
      END;
    ELSE BEGIN
FOR I:=1 TO N DO
S:=S+(I+1)* POWER2(X,I);
             END;
  end;
  end;


[Pascal Error] Unit1.pas(48): E2153 ';' not allowed before 'ELSE'
[Pascal Error] Unit1.pas(53): E2029 '.' expected but ';' found


END.
Hegel вне форума Ответить с цитированием
Старый 11.01.2009, 22:30   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
[Pascal Error] Unit1.pas(48): E2153 ';' not allowed before 'ELSE'
[Pascal Error] Unit1.pas(53): E2029 '.' expected but ';' found
После End перед Else точка с запятой не ставится. И у вас один лишний End в конце.

I:=I+1;
END;
END
ELSE
BEGIN
FOR I:=1 TO N DO
Всегда рад помочь!

Последний раз редактировалось Terran; 11.01.2009 в 22:34.
Terran вне форума Ответить с цитированием
Старый 11.01.2009, 22:34   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Перед else точку с запятой не ставят.
puporev вне форума Ответить с цитированием
Старый 11.01.2009, 22:40   #7
Hegel
Пользователь
 
Регистрация: 08.01.2009
Сообщений: 32
По умолчанию

Спасбио
Hegel вне форума Ответить с цитированием
Старый 11.01.2009, 22:44   #8
Hegel
Пользователь
 
Регистрация: 08.01.2009
Сообщений: 32
По умолчанию

Кто может сказать как сделать теперь так.
Существует 3 edit(а)
1-Ввод х
2-Ввод n
3-Вывод S
Существует кнопка которая обрабатывает всю процедуру.

Можете помочь?


Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  VAR
X,EPS,S:REAL;
I,n:INTEGER;

implementation


function power2 (Z: real; k : integer) : real;
begin
power2:=exp(ln(Z)*k);
end;

function vvod(X,EPS,S:REAL;I,n:INTEGER;edit1,edit2:Tedit): real;
 begin
iF (X>=0) AND (X<1) THEN BEGIN
S:=1;
I:=1;
EPS:=0.001;
WHILE EPS>0.0001 DO
      BEGIN
EPS:=(I+1)* POWER2(X,I);
S:=S+EPS;
I:=I+1;
 END;
      END
    ELSE BEGIN
FOR I:=1 TO N DO
S:=S+(I+1)* POWER2(X,I);
             END;
  end;
END.
Hegel вне форума Ответить с цитированием
Старый 12.01.2009, 07:39   #9
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

unit summa;

interface

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

type
TForm1 = class(TForm)
Ed_x: TEdit;
ed_n: TEdit;
Lb_sum: TLabel;
Label1: TLabel;
Btn_sum: TButton;
Lb_x: TLabel;
Lb_n: TLabel;
procedure Btn_sumClick(Sender: TObject);
procedure Ed_xKeyPress(Sender: TObject; var Key: Char);
procedure ed_nKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function vstep(z:real;k:integer):real; // функция возведения в степень
begin
vstep:=exp(ln(z)*k);
end;
procedure TForm1.Btn_sumClick(Sender: TObject);
var eps:real;
i:integer;
s,x:real;
n:integer;
begin
x:=strtofloat(ed_x.Text);
if (x<1) and (x>0) then
begin
n:=0;
s:=1;
eps:=0.001;
i:=1;
while eps> 0.0001 do
begin
eps:=(i+1)*vstep(x,i);
s:=s+eps;
i:=i+1;
end;
end
else begin
if ed_n.Text='' then ed_n.Text='0';
n:=strtoint(ed_n.Text);
if (n<1) then showmessage(' n не может быть меньше 1');
s:=1;
for i:=1 to n do
s:=s+(i+1)*vstep(x,i);
end;
lb_sum.Caption:= 'Сумма равна:'+ ' '+floatToStr(s);
end;
{запрет на ввод бука}
procedure TForm1.Ed_xKeyPress(Sender: TObject; var Key: Char);// запрет на ввод букв
var //цифровая маска
vrPos, vrLength, vrSelStart: byte;
const
I: byte = 1;
//I+1 = количество знаков после запятой (в данном случае - 2 знака)
begin

with Sender as TEdit do
begin
vrLength := Length(Text); //определяем длину текста
vrPos := Pos(',', Text); //проверяем наличие запятой
vrSelStart := SelStart; //определяем положение курсора
end;

case Key of

'0'..'9':
begin
//проверяем положение курсора и количество знаков после запятой
if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then
Key := #0; //"погасить" клавишу
end;
',', '.':
begin
//если запятая уже есть или запятую пытаются поставить перед
//числом или никаких цифр в поле ввода еще нет
if (vrPos > 0) or (vrSelStart = 0) or (vrLength = 0) then
Key := #0 //"погасить" клавишу
else
Key := #44; //всегда заменять точку на запятую
end;
#8: ; //позволить удаление знаков клавишей 'Back Space'
else
Key := #0; //"погасить" все остальные клавиши
end;
end;
{запрет на ввод не целых чисел и букв}
procedure TForm1.ed_nKeyPress(Sender: TObject; var Key: Char);
var //цифровая маска
vrPos, vrLength, vrSelStart: byte;
const
I: byte = 1;
//I+1 = количество знаков после запятой (в данном случае - 2 знака)
begin

with Sender as TEdit do
begin
vrLength := Length(Text); //определяем длину текста
vrPos := Pos(',', Text); //проверяем наличие запятой
vrSelStart := SelStart; //определяем положение курсора
end;

case Key of

'0'..'9':
begin
//проверяем положение курсора и количество знаков после запятой
if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then
Key := #0; //"погасить" клавишу
end;

#8: ; //позволить удаление знаков клавишей 'Back Space'
else
Key := #0; //"погасить" все остальные клавиши
end;
end;

end.
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
откуда вы узнали о нашем форуме? Hallo О форуме и сайтах клуба 128 09.02.2011 00:37
Пароль на флеш-карте... Откуда?? Манжосов Денис :) Компьютерное железо 1 07.10.2008 18:56
Symbian.Откуда взять borland c++ mobile pack? Marsik Помощь студентам 1 03.02.2008 19:48
создать папку в том месте откуда запущен exe Stanislav Общие вопросы Delphi 1 22.11.2007 17:58
Откуда Word загружает шаблон если не из normal.dot Val_35 Microsoft Office Word 4 18.09.2007 12:36