| 
| 
 | Вопрос # 5 381/ вопрос решён / | 
 |  Здравствуйте!Помогите разобораться с программой, написал, а препад сказла что не правильно считает. и в ответ должен выводиться не один результат а за каждые 3 часа, т.е размножить получается надо.
 вот задание:
 Одноклеточная амёба каждые 3 часа делится на 2 клетки. Определить, сколько амёб будет через 3, 6, 9, 12, …, 24 часа.
 Приложение:Переключить в обычный режим unit U_F_1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ExtCtrls; type  TF_1 = class(TForm)    Panel: TPanel;    E_vvod_vr: TEdit;    L_com: TLabel;    L_vivod: TLabel;    B_rez: TButton;    B_clear: TButton;    B_clear_2: TButton;    procedure B_rezClick(Sender: TObject);    procedure B_clearClick(Sender: TObject);    procedure B_clear_2Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  F_1: TF_1; implementation {$R *.dfm} procedure TF_1.B_clearClick(Sender: TObject);beginE_vvod_vr.Clear;end; procedure TF_1.B_clear_2Click(Sender: TObject);beginL_vivod.Caption:='';end; procedure TF_1.B_rezClick(Sender: TObject);varvr,a, n:integer;beginvr:=StrToInt(E_vvod_vr.Text);a:=0;n:=1;while a<vr dobeginn:=n*2;a:=a+3;end; end; end. 
|  |   Вопрос задал: Силиванов (статус: Посетитель)Вопрос отправлен: 6 июня 2011, 22:24
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Мережников Андрей Здравствуйте, Силиванов!отсчет времени надо начинать не с 0 (a:=0), а с 3 (a:=3). Для вывода можно использовать Memo и вывод осуществлять в цикле.
 Как это примерно выглядит смотрите в приложении.
 
|  | Ответ отправил: Мережников Андрей (статус: Абитуриент)Время отправки: 7 июня 2011, 05:46
 Оценка за ответ: 5
 Комментарий к оценке: спасибо, всё помогло |  Ответ #2. Отвечает эксперт: ierihon1 Здравствуйте, Силиванов!Ошибки то на самом деле нет, просто переменная числа амёб была объявлена изначально как Integer а преобразуется в строку как вещественное число. А у вещественных чисел есть такая неприятная особенность если число большое они его преобразают к стандатрному виду числа то есть число 16777216 будет выглядеть вот так - 1,67772e7. Ну а раз твоему преподу это не нравится то перепиши строку:
 
   label1.Caption:='Количество амёб '+#13+FloatToStrF(n,fffixed,6,0);вот так: 
 label1.Caption:=label1.Caption + 'Количество амёб '+#13+IntToStr(n)+#13;ну и чтобы выводились все результаты нужно жту строку включить в цикл и тогда вся процедура будет выглядеть вот так: 
 procedure TF_1.B_rezClick(Sender: TObject);
var
vr,a, n:integer;
begin
vr:=StrToInt(E_vvod_vr.Text);
a:=0;
n:=1;
while a<vr do
begin
n:=n*2;
a:=a+3;
L_vivod.Caption:=L_vivod.Caption + 'Количество амёб '+#13+IntToStr(n)+#13;
end;
//label1.Caption:='Количество амёб '+#13+FloatToStrF(n,fffixed,6,0);
end; 
|  | Ответ отправил: ierihon1 (статус: 1-ый класс)Время отправки: 7 июня 2011, 09:52
 
 |  
 Мини-форум вопросаВсего сообщений: 16; последнее сообщение — 8 июня 2011, 17:29; участников в обсуждении: 5. 
|   | ierihon1 (статус: 1-ый класс), 6 июня 2011, 22:38 [#1]:по оформлению есть какие нибудь определённые требования? |  
|   | Силиванов (статус: Посетитель), 6 июня 2011, 22:39 [#2]:нет |  
|   | ierihon1 (статус: 1-ый класс), 6 июня 2011, 22:40 [#3]:а время вводится конечное через эдит? |  
|   | Силиванов (статус: Посетитель), 6 июня 2011, 22:41 [#4]:нет, Lable |  
|   | ierihon1 (статус: 1-ый класс), 6 июня 2011, 22:46 [#5]:ну ладно фиг с ним с этим оформлением, у меня весь код в одной процедуре вышел, если будут вопросы как это переоформить говори сразу: 
 procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
    Ameba:integer;
begin
listbox1.Clear;
ameba:=1;
for i := 1 to StrToInt(Edit1.Text) do
begin
  if i mod 3 = 0 then
  begin
    Ameba:=Ameba*2;
    case IntToStr(ameba)[Length(IntToStr(ameba))] of
    '1'     :listbox1.Items.Add('Через '+IntToStr(i)+ ' ч. будет '+IntToStr(Ameba)+' амёба');
    '2'..'4':listbox1.Items.Add('Через '+IntToStr(i)+ ' ч. будет '+IntToStr(Ameba)+' амёбы');
    else     listbox1.Items.Add('Через '+IntToStr(i)+ ' ч. будет '+IntToStr(Ameba)+' амёб');
    end;
  end;
end;
end;в едит вводишь количесвто часов у меня стояло по умолчанию 24 часа на листбоксе отображается каждые три часа жизни амёбы на новой строчке. |  
|   | bugmenot (статус: 3-ий класс), 6 июня 2011, 23:11 [#6]:это ж геометрическая прогрессия, не? виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | ierihon1 (статус: 1-ый класс), 6 июня 2011, 23:18 [#7]:Ну вообще то да..) |  
|   | bugmenot (статус: 3-ий класс), 7 июня 2011, 01:39 [#8]: Цитата (ierihon1): Ну вообще то да..) то был риторический вопрос, с намёком
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Силиванов (статус: Посетитель), 7 июня 2011, 09:00 [#9]:дак у меня то где ошибка? и как исправить? |  
|   | ierihon1 (статус: 1-ый класс), 7 июня 2011, 09:18 [#10]:Ну ша посмотрим |  
|   | min@y™ (статус: Доктор наук), 7 июня 2011, 10:06 [#11]:У меня вот так получилось: 
 var
  Count: Cardinal;
  Hours: Byte;
 
begin
  Count:= 1;
  Hours:= 0;
 
  repeat
    Count:= Count shl 1;
    Inc(Hours, 3);
    WriteLn(' Hours: ', Hours: 3, ', Count: ', Count: 9);
  until Hours >= 24;
 
  ReadLn;
end.Консоль:
  Hours:   3, Count:         2
 Hours:   6, Count:         4
 Hours:   9, Count:         8
 Hours:  12, Count:        16
 Hours:  15, Count:        32
 Hours:  18, Count:        64
 Hours:  21, Count:       128
 Hours:  24, Count:       256Отсюда формула вычисления количества несчастных одноклеточных: X = 2T div 3, где T - время в часах. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | ierihon1 (статус: 1-ый класс), 7 июня 2011, 10:11 [#12]:именно эту формулу я использовал в своей первой процедуре) только с VCL) |  
|   | min@y™ (статус: Доктор наук), 7 июня 2011, 10:11 [#13]:А через неделю они вылезут из чашки Петри и сожрут продукты в холодильнике.  
  Hours:   3, Count:                 2
 Hours:   6, Count:                 4
 Hours:   9, Count:                 8
 Hours:  12, Count:                16
 Hours:  15, Count:                32
 Hours:  18, Count:                64
 Hours:  21, Count:               128
 Hours:  24, Count:               256
 Hours:  27, Count:               512
 Hours:  30, Count:              1024
 Hours:  33, Count:              2048
 Hours:  36, Count:              4096
 Hours:  39, Count:              8192
 Hours:  42, Count:             16384
 Hours:  45, Count:             32768
 Hours:  48, Count:             65536
 Hours:  51, Count:            131072
 Hours:  54, Count:            262144
 Hours:  57, Count:            524288
 Hours:  60, Count:           1048576
 Hours:  63, Count:           2097152
 Hours:  66, Count:           4194304
 Hours:  69, Count:           8388608
 Hours:  72, Count:          16777216
 Hours:  75, Count:          33554432
 Hours:  78, Count:          67108864
 Hours:  81, Count:         134217728
 Hours:  84, Count:         268435456
 Hours:  87, Count:         536870912
 Hours:  90, Count:        1073741824
 Hours:  93, Count:        2147483648
 Hours:  96, Count:        4294967296
 Hours:  99, Count:        8589934592
 Hours: 102, Count:       17179869184
 Hours: 105, Count:       34359738368
 Hours: 108, Count:       68719476736
 Hours: 111, Count:      137438953472
 Hours: 114, Count:      274877906944
 Hours: 117, Count:      549755813888
 Hours: 120, Count:     1099511627776
 Hours: 123, Count:     2199023255552
 Hours: 126, Count:     4398046511104
 Hours: 129, Count:     8796093022208
 Hours: 132, Count:    17592186044416
 Hours: 135, Count:    35184372088832
 Hours: 138, Count:    70368744177664
 Hours: 141, Count:   140737488355328
 Hours: 144, Count:   281474976710656
 Hours: 147, Count:   562949953421312
 Hours: 150, Count:  1125899906842624
 Hours: 153, Count:  2251799813685248
 Hours: 156, Count:  4503599627370496
 Hours: 159, Count:  9007199254740992
 Hours: 162, Count: 18014398509481984
 Hours: 165, Count: 36028797018963968
 Hours: 168, Count: 72057594037927936 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Мережников Андрей (статус: Абитуриент), 7 июня 2011, 17:11 [#14]: Цитата (ierihon1): Ошибки то на самом деле нет Ошибка-то на самом деле была и она указана в моем ответе - начинать деление следует не с 0, а с 3 часов. Поскольку первое деление происходит через три часа.
 |  8 июня 2011, 16:38: Статус вопроса изменён на решённый (изменил автор вопроса — Силиванов) 
|   | Мережников Андрей (статус: Абитуриент), 8 июня 2011, 17:29 [#16]:to ierihon1 -  я никого ни в чем не обвинял - к чему извинения?   |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |