Incompatible types: array and integer

procedure TForm1.Button1Click(Sender: TObject);var  a:array[1..n] of real;  b:array[1..n] of real;  c:array[1..n] of real;  i:integer;  s1,s2,sb,sg,ai:real;begin //---------------------------------------- for i:=1 to n do   a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив   b[i]:=strtofloat(memo2.lines[i-1]);   c[i]:=strtofloat(memo3.lines[i-1]); //------------------------------------------------------------  a[i]:=random(30); //генератор случайных чисел  b[i]:=random(30);  c[i]:=random(30); //-------------------------среднее ариф b s1:=0; for i:=1 to n do begin if i=1 then b:=1 else b:=(i-1)*i; s1:=s1+b; sb:=s1/n; end; //-------------------------среднее геометрич. c s2:=0; for i:=1 to n do begin if i=1 then c:=1 else c:=(i-1)*i; s2:=s2*c; sg:=Power(s2,1/n); end; //--------------------кол-во а ai:=0; for i=1 to n do begin if sb<=a<=sg then ai:=ai+1; end;
Добавлено @ 06:16что тут не так,подскажите!
14 ответов

что тут не так,подскажите! 
Собственно все не так ))))
 b:=1 else b:=(i-1)*i;
 b[i]:=1 else b[i]:=(i-1)*i;
 c:=1 else c:=(i-1)*i;
c[i]:=1 elsec[i]:=(i-1)*i;
ai:=0;
 ai:=ai+1;
a[i]:=0;.......a[i]i:=a[i]+1;


аааа - какая чушь
procedure TForm1.Button1Click(Sender: TObject);var  a:array[1..n] of real;  b:array[1..n] of real;  c:array[1..n] of real;  i:integer;  s1,s2,sb,sg,ai:real;begin  //----------------------------------------  for i:=1 to n do    a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив  b[i]:=strtofloat(memo2.lines[i-1]);  c[i]:=strtofloat(memo3.lines[i-1]); //------------------------------------------------------------  a[i]:=random(30); //генератор случайных чисел  b[i]:=random(30);  c[i]:=random(30); //-------------------------среднее ариф b  s1:=0;  for i:=1 to n do  begin    if i=1    then b:=1    else b:=(i-1)*i;    s1:=s1+b;    sb:=s1/n;  end; //-------------------------среднее геометрич. c  s2:=0;  for i:=1 to n do  begin    if i=1    then c:=1    else c:=(i-1)*i;    s2:=s2*c;    sg:=Power(s2,1/n);  end; //--------------------кол-во а  ai:=0;  for i=1 to n do  begin    if sb<=a<=sg    then ai:=ai+1;  end;
Что бросается в глаза - непонятно, что это за такие - ввод данных в массив и генератор случайных чисел. Ну и энда в конце нету   .


~FoX~ молодцом. сразу понял что мне надо.только вот на строчке  ai:=0;  for i=1 to n do  begin    if sb<=a<=sg    then ai:=ai+1;встает курсор после to и выдает ошибку как было до этого.в этой строчке мне нужно найти количество значений A, которые отвечают требованию sb<=ai<=sgгде sb-среднее арифмитическое, а sg-среднее геометрическое.я исправил эту строчку как ты писал,но он все равно жалуетсячто посоветуешь?


 s3:=0; for i=1 to n do begin if sb<=a[i]<=sg then s3:=s3+1; end;можно сделать и как предыдущие,но все равно не получается именно этот отрываок


Fantik1990, for i :=Блин, кароче на:
procedure TForm1.Button1Click(Sender: TObject);var  a:array[1..n] of real;  b:array[1..n] of real;  c:array[1..n] of real;  i:integer;  s1,s2,sb,sg,ai:real;begin //---------------------------------------- for i:=1 to n do   a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив   b[i]:=strtofloat(memo2.lines[i-1]);   c[i]:=strtofloat(memo3.lines[i-1]); //------------------------------------------------------------  a[i]:=random(30); //генератор случайных чисел  b[i]:=random(30);  c[i]:=random(30); //-------------------------среднее ариф b s1:=0; for i:=1 to n do begin if i=1 then b[i]:=1 else b[i]:=(i-1)*i; s1:=s1+b[i]; sb:=s1/n; end; //-------------------------среднее геометрич. c s2:=0; for i:=1 to n do begin if i=1 then c[i]:=1 else c[i]:=(i-1)*i; s2:=s2*c[i]; sg:=Power(s2,1/n); end; //--------------------кол-во а a[i]:=0; for i:=1 to n do begin if (sb<=a[i]) and (a[i]<=sg) then a[i]:=a[i]+1; end;end;
Хотя имхо, код реально странноватый )))--------------------


~FoX~,не
for i:=1 to n do   a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив   b[i]:=strtofloat(memo2.lines[i-1]);   c[i]:=strtofloat(memo3.lines[i-1]);
а
for i:=1 to n do  a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массивb[i]:=strtofloat(memo2.lines[i-1]);c[i]:=strtofloat(memo3.lines[i-1]);
Это я к тому, что что то явно не так.


Блин.Программа до запуска ни на что не жалуется,но как запустишь толи виснет толи не хочет делать все что прописано.может кто посмотрит,запустит ее у себя,посмотрит?((((((((((((((Добавлено через 4 минуты и 19 секунд~Fox~ то что ты прописал ошибки,они все исправились....но сама прога когда запускаешь не подает признаков жизни  delphi.rar 3,56 Kb


Fantik1990, Судя по всему ты просто скопипастил код, а событие на кнопку не объявил....В дизайн тайме тыкни два раза на батон... И объясни мне логику вот этого куска кода
   a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив   b[i]:=strtofloat(memo2.lines[i-1]);   c[i]:=strtofloat(memo3.lines[i-1]); //----------------------------------------  a[i]:=random(30); //генератор случайных чисел  b[i]:=random(30);  c[i]:=random(30);
Зачем введенные с мемо данные заменять рандомными? или на оборот ))))  delphi.rar 6,31 Kb--------------------


если числа не ввидет пользователь но задействуется генератор.так нельзя?Добавлено через 10 минут и 6 секундrandom я убрал.Это реально бред.не подумал.а как ты задал значения в memo стандартом?когда загружаешь там уже проставлены значения.я вот искал,искал,не смог найти где их прописать по умолчанию можно.Добавлено через 14 минут и 47 секундпри изменении значений в memo результаты те же, ведь не должно быть так наверное.


       Свойство Items у  Мемо


а почему когда значения меняешь,результаты те же?


Fantik1990, разбей задачу на простые подзадачи и решай их. А то какая то ерунда получается.В Memo смотри свойство Lines, это в самом коде видно кстати.Ладно толстый намек еще:вместо:
for i:=1 to n do   a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив   b[i]:=strtofloat(memo2.lines[i-1]);   c[i]:=strtofloat(memo3.lines[i-1]);
наверное надо:
for i:=1 to n dobegin  a[i]:=strtofloat(memo1.lines[i-1]);  //ввод данных в массив  b[i]:=strtofloat(memo2.lines[i-1]);  c[i]:=strtofloat(memo3.lines[i-1]);end;


а почему когда значения меняешь,результаты те же?
Потому что твои расчеты средних сначала заполняют УЖЕ ЗАПОЛНЕННЫЙ массив, а потом производят действия )))))  Например
 for i:=1 to n do begin  if i=1 then b[i]:=1  //Вот это всё нафиг убрать надо else b[i]:=(i-1)*i;  //Вот это всё нафиг убрать надо s1:=s1+b[i]; sb:=s1/n; end;
Соответственно и с геометрической прогрессией тоже самое Может ты просто опишешь задачу?   


Разработать алгоритм и программу решения задачи обработки одномерного массива (массивов). Количество элементов массива (массивов) является входным параметром и вводится в программе. При работе программы исходные массивы  не должны быть изменены.Программа должна предлагать пользователю различные варианты задания значений элементов исходного массива (массивов):1) Элементы исходного массива (массивов) вводятся пользователем.2) Элементы исходного массива (массивов) вычисляются случайно.3) Элементы исходного массива (массивов) задаются как предусмотренный в программе набор констант.Программа должна быть представлена в виде консольного приложения и приложения Windows. Найти количество элементов массива a=(a1, a2,…,an), значения которых лежат между средним арифметическим элементов массива (b=b1, b2,…,bn) и средним геометрическим элементов массива c=(c1, c2,…,cn).вот вся задача.