Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 18.03.2012, 19:33   #1 (permalink)
Александр1111
Новичок
 
Регистрация: 18.03.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите найти ошибку

unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}

end.
procedure TForm1.Button1Click(Sender: TObject);
var n,x,step1,step2,i,q: integer;
function st (n: integer): real;
begin
if n=0 then st:=1;
if n>0 then st:=x*step2
else st:=1/step1;
end;
begin
x:=StrToFloat(Edit1.Text);
n:=StrToInt(Edit2.Text);
step1:=1; step2:=1;
for i:=1 to(n-1) do
step2:=step2*x;
for q:=(-1) downto n do
step1:=step1*x;
Edit3.Text:=IntToStr(st(n));
end.
Александр1111 вне форума   Ответить с цитированием

Старый 18.03.2012, 19:33
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Бывает, что в аналогичных темах можно найти множество нужной информации

Помогите найти ошибку на плате
Помогите найти ошибку
Помогите найти ошибку в Пролог-Д
Помогите найти ошибку
Помогите найти ошибку в программе

Старый 18.03.2012, 20:54   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

какую ошибку? что должна делать программа?
kreol вне форума   Ответить с цитированием
Старый 18.03.2012, 21:06   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Вы целочисленной переменной x присваиваете вещественное значение. Функция st() у вас определена как вещественная, а вы результат выполнения передаете в Edit, используя команду целочисленного преобразования.
AlexZir вне форума   Ответить с цитированием
Старый 19.03.2012, 13:34   #4 (permalink)
Александр1111
Новичок
 
Регистрация: 18.03.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

аписать рекурсивную функцию, которая по заданному вещественному вычисляет величину согласно формуле
Александр1111 вне форума   Ответить с цитированием
Старый 19.03.2012, 13:35   #5 (permalink)
Александр1111
Новичок
 
Регистрация: 18.03.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот выше условие, а ошибка в том, что не выводит результат...компилятор работает, и если прогу переписать в паскале то всё отлично работает)
AlexZir, как исправить, помоги пожалуйста
Александр1111 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.03.2012, 13:57   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Сегодня дома гляну, нет компилятора под рукой сейчас.
Цитата:
Сообщение от Александр1111 Посмотреть сообщение
var n,x,step1,step2,i,q: integer;
Цитата:
Сообщение от Александр1111 Посмотреть сообщение
Edit3.Text:=IntToStr(st(n));
Цитата:
Сообщение от Александр1111 Посмотреть сообщение
x:=StrToFloat(Edit1.Text);
Вот это компилятор ни в коем случае не скушает, нужно писать так:
Код:
x:=StrToInt(Edit1.Text);
...
Edit3.Text:=FloatToStr(st(n));
AlexZir вне форума   Ответить с цитированием
Старый 19.03.2012, 14:48   #7 (permalink)
Александр1111
Новичок
 
Регистрация: 18.03.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Всё равно не выводит резульат(((
Александр1111 вне форума   Ответить с цитированием
Старый 19.03.2012, 18:10   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Александр, где полный текст задания? Непонятно, зачем вам вычислять дополнительные переменные. По сути, в своем варианте программы вы вызываете функцию только один раз, причем с самыми последними значениями step1 и step2. При этом, насколько я это понимаю, рекурсией в вашем варианте реализации функции даже и не пахнет.
AlexZir вне форума   Ответить с цитированием
Старый 19.03.2012, 21:58   #9 (permalink)
Александр1111
Новичок
 
Регистрация: 18.03.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

3*.Написать рекурсивную функцию, которая по заданному вещественному вычисляет величину согласно формуле:
если n=0 тогда st=1
если n<0 тогда st=1/x в степени (модуль n)
если n>0 тогда st=x*(x в степени n-1)
Александр1111 вне форума   Ответить с цитированием
Старый 20.03.2012, 07:27   #10 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Извините меня, конечно, но пока я совершенно не вижу, где в этом условии можно прикрутить рекурсию. Обычное сложное условие без всяких повторений функции самой в себе. У вас n в каких диапазонах изменяется?

Ждите, чуть позже выложу рабочее решение.
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:53.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.