Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Динамичное изменение чисел

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ряд чисел  
 
1 3 5 7
 
им присвоены переменные  
 
а:= 1;
b:=3;
c:=5;
d:=7;
 
есть цикл в 100 раз  
 
каждый раз они должны увеличиваются так
 
a+b  b+c c+d  a+d  
 
т.е. следующая строка уже будет выглядеть как  
 
4 8 12 8
 
далее цикл повторяется и снова происходит действие
 
a+b  b+c c+d  a+d  
 
т.е. следующая строчка будет выглядеть как  
 
12 20 20 12
 
и т.к. далее пока не выполнится 100 раз в цикле  
 
т.е. первые три строчки будут выглядеть вот так
 
1 3 5 7
4 8 12 8
12 20 20 12
 
 как реализовать это ?

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 11:44 17-11-2014
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Язык программирования будет озвучен?

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 13:27 17-11-2014
spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
 
  на Delphi 7

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 23:10 17-11-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проблему понял, бегло прочитал, да тут надо через временную переменную

Код:
 
t:=0;
а:=1;
b:=3;
c:=5;
d:=7;
//если надо вывод значений a,b,c,d
for i := 1 to 100 - 1 do begin
  t:= a;
  а:=a+b;
  b:=b+c;
  c:=c+d;
  d:=t+d;
  //если надо вывод значений a,b,c,d
end;
 

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 08:53 18-11-2014 | Исправлено: protoror, 08:44 19-11-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Program sumabcd(output);
{$H+}  
Uses FGInt; //www.submanifold.be/triade/GInt/gint.html
 
var
a, b, c, d, tmp: TFGInt;
stra, strb, strc, strd: String;
i: integer;
 
begin
    Base10StringToFGInt('1', a);
    Base10StringToFGInt('3', b);
    Base10StringToFGInt('5', c);
    Base10StringToFGInt('7', d);
    writeln('1 3 5 7');
 
    for i:= 1 to 100 do begin
        FGIntCopy(a, tmp);
        FGIntAdd(a, b, a);
        FGIntAdd(b, c, b);
        FGIntAdd(c, d, c);
        FGIntAdd(d, tmp, d);
        
        FGIntToBase10String(a, stra);
        FGIntToBase10String(b, strb);
        FGIntToBase10String(c, strc);
        FGIntToBase10String(d, strd);
        writeln(stra+' '+strb+' '+strc+' '+strd);
    end;
end.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 14:00 18-11-2014
spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
 
да поняли вы всё верно, и решение верное - кроме одного но - экспонента .
 
на определённом этапе её приходится использовать - и сразу проблема, числа в цикле далее будут все одинаковыми .  
 
 
Добавлено:
ne_viens
 
Слава Богу - по моему Ваше решение самое лучшее !  
 
 ne_viens у меня не получается запустить код.
 
файл FGInt скачан, в нём файл есть - он открывается на Delphi 7, код (что вы дали) в отдельный лист Unit вставляю - но видать, что-то не то и не так делаю.
 
как мне правильно запустить его, и что бы информацию выводило в мемо ?
 
да и ещё - как вам удалось дать имя проекту sumabcd(output) - у меня при сохранение проекта с таким именем выдаёт ошибки.
 
 

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 19:18 19-11-2014 | Исправлено: spajwan, 19:30 19-11-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это для FPC код был, Delphi (шестой) тут:
http://rghost.net/59154266
Я в паскале не очень, больше C по душе.
A в Delphi эта вообще первая прога, которую написал.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 21:21 19-11-2014
spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
 
Спасибо программка работает отлично .
 
но  всё же хотелось бы узнать каким образом подключить модуль ?
 
не в папку же - где  стандартные модули Delphi лежат кидать новый модуль.
 
может есть какой то правильный способ для подключения модуля ?

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 17:13 20-11-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Project/Add to project
 
+
uses ..., FGInt;

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 18:32 20-11-2014
spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
 
для большего удобства модуль сперва перенёс в папку с проектом, а потом уже подключил
 
подключился вроде без проблем
 
но выдаёт вот такую бяку
 
   
 
вот архив с проектом, подскажи плиз как исправить ошибку ?
 
Ссылка

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 13:52 21-11-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В предыдущем проекте это есть- консольные writeln() закомментированы, а вместо них Техт функции для Мемо окна.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:32 21-11-2014
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
writeln

без указания файловой переменной первым параметром writeln выводит на стандартный вывод, который существует только в консольном приложении.  

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 13:41 28-11-2014 | Исправлено: landy, 13:41 28-11-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
положи memo на форму и вместо writeln('x') пиши memo1.Lines.Add('x');

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 13:50 28-11-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
для винданутых прикладнух вместо writeln() обычно юзают messagebox() чтобы ничего не делать с формой...
но memo да, удобнее...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 14:04 28-11-2014
spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens  
 
мне нужно что бы значения вводились через эдиты, а потом уже попадали в Base10String - но описания аргументов по Base10String - отсутствует, во всяком случае искал, но не нашёл - где  найти описание по Base10String ?
 
подскажи плиз как мне это реализовать по эдитам ?
 
Добавлено:
protoror
 
пробовал но почти на выводе выдаёт ошибку
 
   
 
полный текст кода вот
 
 
unit sumabcd;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FGInt, StdCtrls;    //www.submanifold.be/triade/GInt/gint.html
 
type
  TForm1 = class(TForm)
    mmo1: TMemo;
    procedure mmo1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.mmo1Change(Sender: TObject);
 
var
  a, b, c, d, tmp: TFGInt;
  stra, strb, strc, strd: String;
  i: integer;
 
begin
    Base10StringToFGInt('1', a);
    Base10StringToFGInt('3', b);
    Base10StringToFGInt('5', c);
    Base10StringToFGInt('7', d);
    mmo1.Lines.Add('1 3 5 7');
 
    for i:= 1 to 100 do begin
        FGIntCopy(a, tmp);
        FGIntAdd(a, b, a);
        FGIntAdd(b, c, b);
        FGIntAdd(c, d, c);
        FGIntAdd(d, tmp, d);
 
        FGIntToBase10String(a, stra);
        FGIntToBase10String(b, strb);
        FGIntToBase10String(c, strc);
        FGIntToBase10String(d, strd);
        mmo1.Lines.Add(stra+' '+strb' '+strc+' '+strd);
    end;
end;
 
end.

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 21:37 29-11-2014 | Исправлено: spajwan, 21:45 29-11-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spajwan
 
ну так смотри внимательнее...
поставь плюс после strb и перед кавычкой...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 23:30 29-11-2014
spajwan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
 
Спасибо - пропустил видать .
 
да заработало, но не так как нужно:
 
не останавливается, а шпарит и шпарит - при том видать до определённого предела - а потом начинает всё сначала.
 
ни остановить - ни детально посмотреть, что выдаёт  - никак не получается - виснет и всё ...
 
 
а кроме того - вопрос по описанию аргументов по Base10String - так же остаётся открытым - как и вставка в них других чисел через эдиты ...
 

Всего записей: 56 | Зарегистр. 21-06-2009 | Отправлено: 17:42 30-11-2014
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не останавливается, а шпарит и шпарит

  чтобы можно было листать memo в процессе работу - нужно добавить в цикл вызов Application.ProcessMessages.

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 18:38 30-11-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spajwan
 
Base10String
 
а это что?
нет там ни таких типов, ни фунок...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 18:57 30-11-2014
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И, кстати, а зачем ты вставил этот код в обработчик TMemo.OnChange?

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 19:28 30-11-2014 | Исправлено: landy, 19:29 30-11-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Динамичное изменение чисел


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru