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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2012, 17:10   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
Восклицание Формирование рядов чисел?

Вобщем ситуация такова: Пишу программу для формирования страниц при печати буклетом (книгой). При формировании ряда для принтера поддерживающего 2-ч сторонюю печать все получилось без проблемм (вводим число 8 например)
Код:
var
   N, N1, an, a1, i: Integer;
   s: string;
begin
 N:= StrToInt(LabeledEdit1.Text);
 an:= N;
 N1:= Round(N/2);
 a1:= 1;
 s:= FloatToStr(an) + #44 + FloatToStr(a1);
 for i:= 1 to N1-1 do
  begin
    an:= an-1;
    a1:= a1+1;
    if (i mod 2) = 0 then
    begin
     s:= s + #44 + FloatToStr(an) + #44 + FloatToStr(a1);
    end
      else
       s:= s + #44 + FloatToStr(a1) + #44 + FloatToStr(an);
  end;

 i:= i+1;
 RichEdit1.Text:= s;

end;
Получаю ряд, типа:8,1,2,7,6,3,4,5
Но при формировании рядов для принтеров не поддерживающих 2-ч сторонюю печать необходимо разбивка в 2 ряда, и вот с этим я прошу вашей помошь, сам конечно пробовал но не получилось ни чего (первый ряд формировал а вот второй не получается.)
В данном примере ряды должны получиться 8,1,6,3 и 2,7,4,5 соответственно.
П.С. вводимое число должно быть кратное 4.
Тему можно закрывать, решение найдено!

Последний раз редактировалось kta87; 16.01.2012 в 21:36. Причина: Решение найдено!
kta87 вне форума Ответить с цитированием
Старый 16.01.2012, 22:02   #2
g101k
 
Регистрация: 17.11.2011
Сообщений: 8
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  n1, n2, i: Integer;
  buf: string;
begin
  n1 := StrToInt(Edit1.Text);
  n2 := 1;
  while n1 > StrToInt(Edit1.Text)/2 do
  begin
    buf := buf + IntToStr(n1)+','+IntToStr(n2) + ',';
    n1 := n1 - 2;
    n2 := n2 + 2;
  end;
  memo1.Lines.Add(buf) ;
  n1 := 2;
  n2 := StrToInt(Edit1.text) - 1;
  buf := '';
  while n1 <= StrToInt(Edit1.Text)/2 do
  begin
    buf := buf + IntToStr(n1)+','+IntToStr(n2) + ',';
    n1 := n1 + 2;
    n2 := n2 - 2;
  end;
  memo1.Lines.Add(buf)
end;
g101k вне форума Ответить с цитированием
Старый 16.01.2012, 22:28   #3
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

g101k, да ну все на много проще..но за вариант благодарен ))
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование чисел с пом. random и построение столбчатой диаграммы. syc07 Помощь студентам 2 01.07.2011 20:47
Сравнение рядов TheX3 Помощь студентам 2 17.01.2011 13:19
сумма рядов Fominho Помощь студентам 1 07.12.2010 12:33
Нахождение рядов Syltan Общие вопросы C/C++ 13 06.05.2010 14:34
Сумма рядов Olech4ka Фриланс 6 28.05.2009 10:38