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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 13:53   #1
stydent.ivanov
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию простые алгоритмы (Delphi for Microsoft Win32)

Здрасте! Я новый, никогда раньше не программировал и совершенно ничего не знаю. МЭИ 1 курс, "высокопрофессиональный уровень" (со слов препода).
Borland Developer Studio 2006 - язык Object Pascal.
Лаба номер 1:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var x, c, p, y: real;
u: integer;
begin
c:=0;
p:=0;
x:= 0.1;
for u:= 1 to 5 do
 begin
    x:= x+0.1;
    y:= (1.5*(pi*x))-(1/(abs((((exp(ln(exp(1))*(8/10)))-sin((1+x)/x)+exp(ln(ln(x))*(1/3))));
    c:= c+y
    p:= p*y
 end;

end.
Ошибки:
[Pascal Error] Unit1.pas(36): E2029 ')' expected but ';' found,
[Pascal Error] Unit1.pas(38): E2066 Missing operator or semicolon
[Pascal Error] Unit1.pas(41): E2029 ';' expected but '.' found,
[Pascal Error] Unit1.pas(43): E2029 Declaration expected but end of file found
[Pascal Fatal Error] Project4.dpr(5): F2063 Could not compile used unit 'Unit1.pas'

Завтра это как бы надо здавать и знать ...
Пожалуйста подскажите, что за бяка такая не дает запустить мою лабу... Бился всю ночь до 3 часов СПАСИБО этому форуму, что тут было написано как задать степень через функцию exp(ln(х)*у) а то и это было серьезной проблемой .

Последний раз редактировалось stydent.ivanov; 21.09.2010 в 14:01. Причина: дополнение
stydent.ivanov вне форума Ответить с цитированием
Старый 21.09.2010, 14:07   #2
chesser
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 17
По умолчанию

У вас одного "END;" не хватает в процедуре. Он должен стоять перед "END."
Кроме того, надо поставить ';' после "c:=c+y"
Потом, у вас весь этот код работает в обработчике события "Создать форму". А куда все эти вычисления выводятся-то? Может, вам все-таки консольную программу нужно было писать?

Последний раз редактировалось chesser; 21.09.2010 в 14:10.
chesser вне форума Ответить с цитированием
Старый 21.09.2010, 14:21   #3
stydent.ivanov
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

А да, точно! Совсем забыл про окошко для результата.
Поставил ";" и END;". Теперь ошибок меньше:
Выделяет красным всю строку "y:= (1.5*(pi*x))-(1/(abs((((exp(ln(exp(1))*(8/10)))-sin((1+x)/x)+exp(ln(ln(x))*(1/3))));"

[Pascal Error] Unit1.pas(36): E2029 ')' expected but ';' found
[Pascal Fatal Error] Project4.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
stydent.ivanov вне форума Ответить с цитированием
Старый 21.09.2010, 14:26   #4
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

считай скобки и будет тебе счастье....
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 21.09.2010, 15:09   #5
stydent.ivanov
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Gambler Посмотреть сообщение
считай скобки и будет тебе счастье....
Спасибо.

Я наглею... На форме есть Edit1, как туда результат вывести
stydent.ivanov вне форума Ответить с цитированием
Старый 21.09.2010, 15:45   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
edit1.text:='p='+floattostr(p)+ ' c='+floattostr(c);
и вот это
Код:
p:=0;
я бы заменил на
Код:
 p:=1;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 21.09.2010 в 15:47.
Mad_Cat вне форума Ответить с цитированием
Старый 21.09.2010, 19:17   #7
stydent.ivanov
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Спасибо, все добавил, но теперь новая напасть:
First chance exception at $7C812AFB. Exception class EInvalidOp with message 'Invalid floating point operation'. Process Project2.exe (1164)
Строка
Код:
y:= (1.5*(pi*x))-(1/(abs(((((exp(ln(exp(1)))*(8/10)))-(sin((1+x)/x))+(exp(ln(ln(x))*(1/3))))))));
пробовал ее поменять на элементарную - х*х все выдает путем, прога работает, а с этой что-то никак

Формулу проверял в Adequate Software Calculator, там все считает без ошибок
stydent.ivanov вне форума Ответить с цитированием
Старый 21.09.2010, 20:16   #8
chesser
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 17
По умолчанию

Наверное, где-то деление на 0 спряталось
Потом, извини, конечно, но значение переменной p у тебя всегда будет равно 0.

Последний раз редактировалось chesser; 21.09.2010 в 20:20.
chesser вне форума Ответить с цитированием
Старый 25.09.2010, 12:27   #9
stydent.ivanov
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Вот итоговая кодяра, ошибки вроде все исправлены. Но при запуске - "NAN" в двух окнах!
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var x, c, p, y, z, b, g, a, h: Real;
u: integer;
begin
c:=0;
p:=1;
x:= 0.1;
for u:= 1 to 5 do
 begin
    x:= x+0.1;
    y:= a-z;
    a:= 1.5*(1/(pi*x));
    z:= 1/abs(b);
    b:= g-(sin((1+x)/x))+h;
    h:= ln(exp((ln(x))*(1/3)));
    g:= exp((ln(exp(1)))*(8/10));
    c:= c+y;
    p:= p*y;
end;
  edit1.text:=floattostr(c);
  edit2.text:=floattostr(p);
end;
end.
Препод 15 вертел не смог исправить поставил выполнение, но сказал чтоб впредь этого не было... А в чем ошибка хоть?
stydent.ivanov вне форума Ответить с цитированием
Старый 25.09.2010, 12:34   #10
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

У тебя идет: y:= a-z; но при этом ни "a", ни "z" не инициализированы. Тоже самое и с другими переменными.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
win32 API.Visual Studio 2008.Создание проекта Win32 Aleksandr_Yanov Visual C++ 2 12.09.2010 13:09
Простые числа в Win32 APi asd874 Помощь студентам 0 23.05.2010 00:02
Про простые алгоритмы... или нет? Удаление из List<> Iv@n Общие вопросы .NET 1 30.04.2010 12:35
Программа (ООП), Microsoft Visual C++, тип проекта Win32 Project Spellpir Фриланс 4 11.02.2010 23:40
HLLW.Shadow.based / Net-Worm.Win32.Kido / Win32.Conficker / W32.Downadup Pirotexnik Безопасность, Шифрование 13 27.03.2009 14:02