2 вопроса.Pascal.

Modified by moderator. Код оформляем нормально....

@темы: Pascal

Комментарии
25.07.2010 в 02:49

Таар-лайх!
nvse
1.
вы вызываете функцию transform.
Она идет по ветке кода else, в которой рекурсивно вызывается функция transform().
Рекурсивно вызванная функция transform идет по ветке else if, в которой возвращает значение FALSE. Но! - возвращает она его не программе, а той функции, которая ее вызвала, т.е. функции transform верхнего уровня.
Функция transform верхнего уровня доходит до конца конструкции if/else и (я так понимаю, поскольку возвращаемое значение не определено явно) использует значение возврата по умолчанию, которое стоит в TRUE.

2.
либо подключайте внешний парсер строк, позволяющий трактовать их как матем. выражение, либо описывайте операторы и правила, которые могут встречаться в строке, руками.
25.07.2010 в 07:59

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
Можно ещё научиться пользоваться трассирофкой
25.07.2010 в 13:23

Don't stop the music.
nvse
Я никак не могу понять в чём проблема ведь должно быть false ,а не true

Проблема в том, что в строке else transform( (i div K) , K); вычисляется выражение transform( (i div K) , K); но функция вычисленное значение не возвращает. То есть вычислилось значение false, мы ничего с ним не сделали, пошли дальше до конца блока и вернули значение по умолчанию.
25.07.2010 в 15:33

Хранитель печати то есть получается,что false принимает значение transform(9,3) ,а не transform(29,3) ?
25.07.2010 в 21:34

Таар-лайх!
nvse
да. Далее все так, как написал Слушатель
26.07.2010 в 00:44

Спасибо,1-ую задачу переделал,всё считает.А вот насчёт советов по 2-ому что-то ничего не понял...
26.07.2010 в 13:45

nvse
У Microsoft есть интерпритатор скриптов: ScriptControl. Импортируйте его из ActiveX и считайте выражения, введенные строкой. Он сам их распарсит и вычислит. Вот описание: citforum.ru/programming/delphi/msdelphi/

Можно еще использовать сторонние компоненты.
Хотя если задача учебная - можно и вручную проанализировать и посчитать.
27.07.2010 в 00:42

Спасибо,буду разбираться.Ещё один вопрос,если можно:я на С++ решил перейти и захотел откомпилировать исходную форму(которая изначально высвечивается),ничего даже не добавлял,но выдаётся вот такая странная ошибка:[Linker Error] Unresolved external '_main' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ
Вы не знаете с чем это может быть связано?Вот код на всякий случай:

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
27.07.2010 в 01:09

Don't stop the music.
nvse
[Linker Error] Unresolved external '_main' referenced from...

Нет main функции (первая функция куда заходит программа (точка входа)). Пишется:



В main ты создаёшь экземпляр формы.

Если ты пишешь модуль в котором эти функции реализуешь, то для того чтобы запустить всю программу - в другом файле (модуле) всё равно нужно задать точку входа.