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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2010, 21:21   #1
Kati
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 34
По умолчанию Исправить ошибку Delphi

программка для вычисления сочетнаия из n элементов по k

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function C(n,k:integer):integer;
begin
if (k=1) or (k=n)then C:=n-k+1
  else C:=C(n-1,k)+C(n-1,k-1);
   end;
procedure TForm1.Button1Click(Sender: TObject);
var 
n1,k1,Cnk:integer;
begin
  n1:= Strtoint(Edit1.text);
  k1:= Strtoint(Edit2.text);
   Cnk:=C(n1,k1);
  label9.Caption:=inttostr(Cnk);

end;

end.
Выдает ошибку.Непонимаю почему.
Я только учусь!

Последний раз редактировалось Stilet; 13.10.2010 в 11:46.
Kati вне форума Ответить с цитированием
Старый 13.10.2010, 10:52   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Да вроде все нормально. если k больше n не вводить.

Че за ошибка?
На каких данных?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 13.10.2010, 11:10   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) не забываем использовать тег [СODE] .. [/CODE] (кнопка с решёточкой #)

2) какая ошибка выдаётся и в каком случае?

3) я бы рекомендовал заменить тип integer на int64
и обязательно проверять перед вызовом Cnk := C(n1,k1); что N1 Больше или равно K1 - иначе процедура рекурсивно уходит в бесконечный цикл!
и последнее.
количество сочетаний можеть быть ОЧЕНЬ большим...
например, вот отсюда взял - число сочетаний 20 из 80 = 3 535 316 142 212 174 320
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2010, 19:27   #4
Kati
Пользователь
 
Регистрация: 21.05.2009
Сообщений: 34
По умолчанию

Спасибо! изменила integer и n1>=k1 и все заработало!!!!
Kati вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить ошибку ..паскаль. qasw Помощь студентам 6 07.10.2009 20:33
как исправить ошибку? aiktz Паскаль, Turbo Pascal, PascalABC.NET 3 24.09.2009 18:56
Исправить ошибку LLIypLLIyH Помощь студентам 5 16.06.2008 16:50