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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 17:49   #1
Juster
 
Регистрация: 01.06.2009
Сообщений: 4
Печаль Где ошибка? треугольное число

Нашёл задачу:
"Вводится число. Задача определить, является ли введенное число треугольным."

Формула треугольного числа T=n(n+1)/2 (это числа 1,3,6,10,15....)
Где ошибка?

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var x, n, i: real;
begin
 i:=StrToFloat(Edit1.Text);
 n:=0;
 x:=(n*(n+1)/2);
while x <= i do  n:=n+1;

if x=i then ShowMessage('Yes') else
 ShowMessage('No');
end;

end.
Благодарю за подсказку.

Последний раз редактировалось MaTBeu; 01.06.2009 в 20:19.
Juster вне форума Ответить с цитированием
Старый 01.06.2009, 17:58   #2
Disel
Форумчанин
 
Аватар для Disel
 
Регистрация: 08.01.2009
Сообщений: 180
По умолчанию

Так наверно надо:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var x, n, i: real;
begin

i:=StrToFloat(Edit1.Text);
n:=0;

while x <= i do 

 n:=n+1;
 x:=(n*(n+1)/2);


if x=i then ShowMessage('Yes') else
ShowMessage('No');
end;

end.
"Все что натыкано на клаве, ведет тебя к погибели иль славе"
Если помог нажми на весы
Disel вне форума Ответить с цитированием
Старый 01.06.2009, 18:14   #3
Juster
 
Регистрация: 01.06.2009
Сообщений: 4
По умолчанию

Спасибо, но при вводе любого числа пишет 'No'. Ввожу число 2(не треугольное)- выводит 'No', число 3(треугольное)- выводит 'No'.

Последний раз редактировалось Juster; 01.06.2009 в 19:32.
Juster вне форума Ответить с цитированием
Старый 01.06.2009, 19:38   #4
Juster
 
Регистрация: 01.06.2009
Сообщений: 4
По умолчанию

не-а, не получается. или вообще не выводит результат или выводит один результат на все введённые числа. Также было, что определяет треугольные числа, но при вводе не треугольного числа- ноль реакции, пытаюсь исправить, снова выодит один результат на все числа...Впрямь беда.
Juster вне форума Ответить с цитированием
Старый 01.06.2009, 19:53   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var x, n, i: real;
begin

i:=StrToFloat(Edit1.Text);
n:=0;

while x <= i do 
 begin////////////
 n:=n+1;
 x:=(n*(n+1)/2);


if x=i then ShowMessage('Yes') else
ShowMessage('No');
end;//////////////////
end;

end.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось MaTBeu; 01.06.2009 в 20:20.
evg_m на форуме Ответить с цитированием
Старый 01.06.2009, 20:10   #6
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Программа я так понимаю в Делфи, поэтому могу помочь только подсказкой. нужно проверить делиться ли i на Т без остатка. Если делится , то ответ Да, иначе -нет.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 01.06.2009, 20:18   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

OMG... "Треугольное число"..... О_О

Цитата:
Треугольное число — это число кружков, которые могут быть расставлены в форме равностороннего треугольника, см. рисунок.



Последовательность треугольных чисел Tn для n = 0, 1, 2, … начинается так: 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …

Формулы для n-го треугольного числа:
Зря вы задачу перебором пытаетесь сделать..... Ща сделаю как надо...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 01.06.2009, 20:28   #8
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Попробуйте так

Код:
procedure TForm1.Button1Click(Sender: TObject);
var x, n, i: real;
begin

i:=StrToFloat(Edit1.Text);
n:=0;

while x <= i do 

 n:=n+1;
 x:=(n*(n+1)/2);


 if (i mod x) = 0 then ShowMessage('Yes') else
ShowMessage('No');
end;

end.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 01.06.2009, 20:46   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Перебором можно делать, когда числа небольшие, да и то это всё-таки не есть хорошо...
А если понадобится проверить 5-тизначное число? Или что-то ещё похуже..? Тогда Ваша программа будет очень-очень долго "висеть"...

Вот, обычное квадратное уравнение:

Остаётся просто проверить, целое ли это число:

Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var x: Integer; n: Real;
Begin
x:=StrToInt(Edit1.Text);
n:=(SQRT(1+8*x)-1)/2;
If n=Trunc(n) Then
      ShowMessage('Yes')
Else
      ShowMessage('No');
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 01.06.2009, 22:32   #10
Juster
 
Регистрация: 01.06.2009
Сообщений: 4
Хорошо

Цитата:
Сообщение от DomiNick Посмотреть сообщение

Вот, обычное квадратное уравнение:

Остаётся просто проверить, целое ли это число:

Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var x: Integer; n: Real;
Begin
x:=StrToInt(Edit1.Text);
n:=(SQRT(1+8*x)-1)/2;
If n=Trunc(n) Then
      ShowMessage('Yes')
Else
      ShowMessage('No');
End;
ух, ты! Отличная формула! Спасибо. Работает!
Juster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где ошибка? Prophet23 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2009 23:20
где ошибка ? mouse697 Помощь студентам 2 22.03.2009 15:01
Где ошибка? [Smarik] Общие вопросы Delphi 5 01.04.2008 09:56
Где ошибка в коде? Македонский Общие вопросы Delphi 16 10.09.2007 15:45
Где ошибка? jarded Общие вопросы C/C++ 2 01.06.2007 15:10