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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2015, 01:44   #1
Shhakote
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 13
Вопрос Ввод и вывод массива. Memo.

ЧЯДНТ?
Необходимо исходный и результирующий массивы вводить и выводить используя компонент memo.
(найти ср. геом. элементов в записать его на место последнего элемента)
Не могу найти ошибки. Сначала выводился массив со второго эл-та, ср.геом. считал неправильно. Сейчас вообще я запутался.
Собственно, вот что не получилось:
Код:
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Label1: TLabel;
    Button1: TButton;
    Memo2: TMemo;
    Label2: TLabel;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  const n=10;
  type
  mas = array[1..n] of real;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);


   var A: mas;
       Avrgeo: real;
       i: integer;
       res: real;
       str: integer;


begin
str:=Memo1.Lines.Count;

if str = 0 then begin
ShowMessage('Данные не введены!');
Exit;
end;

if str > n then begin
ShowMessage('Колличеств строк превышает размер массива');
str:=n;
end;


    for  i:=0 to n  do  begin
    A[i]:=StrToFloat(Memo1.Lines[i]);
    end;
          res:= 1;
       for  i:=1 to n do  begin
    res:= res*A[i];
    end;
    Avrgeo:= exp((1/10)*ln(res));
    Edit1.Text:= FloatToStr(Avrgeo);

      for i:=1 to n-1 do begin
          Memo2.Lines.Add(FloatToStr(A[i+1]))
          end;
           A[10]:=Avrgeo;


 end;
end.

Последний раз редактировалось Stilet; 07.10.2015 в 08:16.
Shhakote вне форума Ответить с цитированием
Старый 07.10.2015, 02:45   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Код:
 for i:=0 to n do begin
A[i]:=StrToFloat(Memo1.Lines[i]);
// ....
У вас массив A имеет тип array[1..n] of real. В нем нет 0-го элемента.
И лучше не Memo1.Lines[и] , а Memo1.Lines.Strings[и]

PS И какой смысл в этом -
Код:
A[10]:=Avrgeo;
end;
end.
?

Последний раз редактировалось type_Oleg; 07.10.2015 в 02:48.
type_Oleg вне форума Ответить с цитированием
Старый 07.10.2015, 08:44   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Как звучит задание в оригинале?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.10.2015, 09:42   #4
Shhakote
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 13
По умолчанию


Как-то так.
Shhakote вне форума Ответить с цитированием
Старый 07.10.2015, 09:58   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ну типа как-то так штоли...
Код:
function gAverage(memo: TMemo): Boolean;
var
  Index: Integer;
  Value, avg: Extended;
begin
  Result:= False;
  
  if memo.Lines.Count = 0
    then Exit;
    
  avg:= 1.0;
  
  for Index:= 0 to memo.Lines.Count - 1 do
    if TryStrToFloat(Trim(memo.Lines[Index]), Value) and (Value > 0)
      then avg:= avg * Value
      else Exit;
      
  avg:= Power(avg, 1 / memo.Lines.Count);
  memo.Lines[memo.Lines.Count - 1]:= FloatToStr(avg);
  
  Result:= True;
end;
ВНИМАНИЕ!
УВАГА!!
АХТУНГ!!!
АТТЕНШН!!!!

Shit-code detected!
Код не отлаживал. Писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 08.10.2015, 01:16   #6
Shhakote
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 13
По умолчанию

Все, проблема решена, всем спасибо.

Код:
procedure TForm1.Button1Click(Sender: TObject);


   var
   a: array[0..9] of real;
   Avrgeo: real;
   i,j,n: integer;
   res: real;
   str: integer;

begin

str:=Memo1.Lines.Count;

if str = 0 then begin
ShowMessage('Данные не введены!');
Exit;
end;

if str > 10 then begin
ShowMessage('Колличество строк превышает размер массива');
str:=10;
end;


    for  i:=0 to 9  do
    begin
      A[i]:=StrToFloat(Memo1.Lines[i]);
    end;

    res:= 1;
    for  i:=0 to 9 do
    begin
      res:= res*A[i];
    end;

    Avrgeo:= exp((1/10)*ln(res));

    Edit1.Text:= FloatToStr(Avrgeo);

    A[9]:=Avrgeo;
    for i:=0  to 9 do
    begin
      Memo2.Lines.Add(FloatToStr(a[i]));
    end;
 end;
end.
Shhakote вне форума Ответить с цитированием
Старый 08.10.2015, 01:25   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,882
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
И лучше не Memo1.Lines[и] , а Memo1.Lines.Strings[и]
Почему лучше? Текста больше? Больше денег можно затребовать с заказчика?
northener вне форума Ответить с цитированием
Старый 08.10.2015, 09:08   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Все, проблема решена, всем спасибо.
А чо, мой пример не подошёл? Почему?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 08.10.2015, 23:12   #9
Shhakote
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 13
По умолчанию

Цитата:
А чо, мой пример не подошёл? Почему?
Честно, не совсем в нем разобрался. Power не смог подключить(это же в math?), да и решил идти путем простым и понятным, но все равно спасибо, что Вы ответили!
Shhakote вне форума Ответить с цитированием
Старый 08.10.2015, 23:49   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Power не смог подключить(это же в math?)
ну да.
почему не смог-то, ёмаё?
Цитата:
решил идти путем простым и понятным
если что непонятно - спрашивай. для этого и существует форум, это одна из неосновных его функций, но всё же...

Какая жаль, что я потратил кусок времени впустую.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод массива в Memo LLIALLIJIbIK Общие вопросы Delphi 4 17.04.2013 19:28
ввод\вывод массива из richedit(memo) aank10 C++ Builder 0 24.02.2013 20:11
Рекурсия, ввод-вывод массива rostik123 Общие вопросы C/C++ 2 04.12.2012 23:28
ввод-вывод строчного массива. Honey Bear Паскаль, Turbo Pascal, PascalABC.NET 8 28.10.2011 16:17
Memo вывод массива в строчку atenon C++ Builder 4 13.03.2011 08:03