Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
1

Запись в массив

06.02.2010, 22:50. Просмотров 6220. Ответов 24
Метки нет (Все метки)

Необходимо записать в массив 7 чисел - 72,2; 86,3 и т.д. Все числа - дробные
У меня такой код, но он не правильный. Исправьте, пожалуйста
Delphi
1
2
var 
yi:array [72,2;86,3] of real;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2010, 22:50
Ответы с готовыми решениями:

Запись в массив
Скажите вот у мну прога выводит русские буквы из текста в окно мемо, но выводит...

Укороченая запись в массив
Требуется записать числа в массив по примеру ниже, способ mas2 неработает....

Запись координат в массив
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; ...

Запись в массив из файла
Пытаюсь записать целые числа из файла в массив и вывести их в мемо, но в мемо...

Запись строки в массив
Есть StringGrid из одной строки, в неё я ввожу числа с клавиатуры. Как их...

24
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
06.02.2010, 23:08 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses crt;
var m:array[1..7]of real;
i:integer;
begin
 clrscr;
 for i:=1 to  7 do
 begin
  write('y[',i,']-> ');
  readln(m[i]);
 end;
 for i:=1 to 7 do write(m[i]:0:3,' ');
 readln;
end.
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
06.02.2010, 23:10  [ТС] 3
Не, массив должен быть предварительно заданным...
0
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
06.02.2010, 23:14 4
Тогда так:
Pascal
1
var m:array[1..7]of real=(1.2,25.6,77.8,22.8,9.4,3.0,62.5);
1
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
06.02.2010, 23:20  [ТС] 5
Ошибку на этом месте выдает, не компилит...
0
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
06.02.2010, 23:23 6
Johnny B, VAR не забыли? Конструкция рабочая.
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
07.02.2010, 00:10  [ТС] 7
Вот у меня кусок кода:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button3Click(Sender: TObject);
var x,xi:array [1..7] of real;
    yi:array [1..7] of real=(72.2,86.3,100.9,117.5,134.8,152.4,171.2);
    y,i,n:integer;
    mx,my,Rxy,Dx,a,b:real;
begin
n:=7;
for i:=1 to n do
mx:=mx+xi[i];
mx:=mx/n;
for i:=1 to n do
my:=my+yi[i];
my:=my/n;
for i:=1 to n do
Rxy:=Rxy+(xi[i]-mx)*(yi[i]-my);
Rxy:=Rxy/n;
for i:=1 to n do
Dx:=Dx+(xi[i]-mx)*(xi[i]-mx);
a:=Rxy/Dx;
b:=my-a*mx;
form1.StringGrid1.cells[0,0]:='Возраст Xi';
form1.StringGrid1.Cells[1,0]:='Высота Yi';
form1.StringGrid1.Cells[2,0]:='Возраст X';
form1.StringGrid1.cells[3,0]:='Высота Y';
image5.Canvas.MoveTo(0,271);
for i:=1 to n do begin
y:=a*x[i]+b;
image1.Canvas.LineTo(n,y);
form1.StringGrid1.Cells[0,1]:=floattostr(y);
end;
Ошибку выдает на третьей строке. Если там прописать что-то рабочее, то выдает еще на 27 строке - из-за несоответствия типов.
Но на 3 строке определенно останавливает компиляцию - ошибку пишет

Добавлено через 2 минуты
Cannot initialize local variables пишет

Добавлено через 42 минуты
Такая запись вообще допустима?
0
Inadequate
Retired
7710 / 2543 / 670
Регистрация: 17.10.2009
Сообщений: 5,100
07.02.2010, 07:24 8
Johnny B, вот это
Цитата Сообщение от k1ry4 Посмотреть сообщение
Pascal
1
var m:array[1..7]of real=(1.2,25.6,77.8,22.8,9.4,3.0,62.5)
надо писать так
Pascal
1
2
const
  m:array[1..7]of real=(1.2,25.6,77.8,22.8,9.4,3.0,62.5);
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
07.02.2010, 18:28  [ТС] 9
ОК, отлично, все работает.
Возникла еще одна проблема - в строке 20.
Пишет "incompatible types: "Integer" and "Extended""
Подскажите, в чем проблема, как решить?

Добавлено через 2 минуты
Правда вопрос не в той теме, надо бы в Делфи перекинуть.
0
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
07.02.2010, 18:36 10
Inadequate, не могу прокомментировать проблему, поскольку такая конструкиция с var в Free Pascal работает.
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
07.02.2010, 18:39  [ТС] 11
Не, верхняя конструкция работает. Все отлично. Сейчас проблема в строке 27. (Не в 20, я ошибся) Там похоже что-то с типами данных - несоответствие какое-то.
0
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
07.02.2010, 18:42 12
Переменная A должна быть типом REAL
0
Inadequate
Retired
7710 / 2543 / 670
Регистрация: 17.10.2009
Сообщений: 5,100
07.02.2010, 18:56 13
k1ry4, ну видимо такая конструкция только во фри и работает, т.к. ни в консоле, ни в ABC, ни в TP она работать не будет.
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
07.02.2010, 19:02  [ТС] 14
А, все. Перенес переменную y в тип Real.
Только теперь строка
Delphi
1
image1.Canvas.LineTo(n,y);
не работает...
Координата должна быть типом Integer...
0
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
07.02.2010, 19:04 15
Johnny B, тогда округляйте при помощи TRUNC или ROUND
1
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
07.02.2010, 19:17  [ТС] 16
k1ry4, а как записать команду? Я синтаксис еще не очень хорошо знаю.
0
yanyk1n
4331 / 1463 / 680
Регистрация: 12.03.2009
Сообщений: 5,310
07.02.2010, 19:20 17
Pascal
1
y:=round(a*x[i]+b);
ROUND - округляет,
TRUNC - отбрасывает дробную часть
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
07.02.2010, 21:39  [ТС] 18
Так правильно?
Delphi
1
function Round(X: Real): integer;
Куда вписать?

Добавлено через 14 секунд
А, спасибо. ОК

Добавлено через 4 минуты
Сейчас код выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm1.Button3Click(Sender: TObject);
var x,xi:array [1..7] of real;
    i,n:integer;
    y,mx,my,Rxy,Dx,a,b:real;
const yi:array [1..7] of real=(72.2,86.3,100.9,117.5,134.8,152.4,171.2);
begin
n:=7;
for i:=1 to n do
mx:=mx+xi[i];
mx:=mx/n;
for i:=1 to n do
my:=my+yi[i];
my:=my/n;
for i:=1 to n do
Rxy:=Rxy+(xi[i]-mx)*(yi[i]-my);
Rxy:=Rxy/n;
for i:=1 to n do
Dx:=Dx+(xi[i]-mx)*(xi[i]-mx);
a:=Rxy/Dx;
b:=my-a*mx;
form1.StringGrid1.cells[0,0]:='Возраст Xi';
form1.StringGrid1.Cells[1,0]:='Высота Yi';
form1.StringGrid1.Cells[2,0]:='Возраст X';
form1.StringGrid1.cells[3,0]:='Высота Y';
image5.Canvas.MoveTo(0,271);
for i:=1 to n do begin
y:=a*x[i]+b;
form1.StringGrid1.Cells[n,3]:=floattostr(y);
form1.StringGrid1.Cells[n,2]:=floattostr(n);
y:=round(y);
image1.Canvas.LineTo(n,y);
 
end;
 
Panel2.Visible:=false;
panel3.Visible:=true;
end;
Но он упорно не хочет принимать y за координату... Даже после округления.

Добавлено через 20 минут
Если убрать строку 31, то после компиляции и нажатия на баттон, который я сейчас редактирую, то пишет "Floating point overflow" и указывает на строку 18. А это что за косяк?

Добавлено через 39 минут
Ау, есть кто?...

Добавлено через 1 час 15 минут
function Round(y: Real): integer;
Может как-то так прописывается эта команда?
0
logiC
16 / 16 / 3
Регистрация: 06.06.2009
Сообщений: 50
07.02.2010, 23:16 19
Пердаваемый аргумент должен быть типа integer. Даже округлив y ты все равно не изменишь тип. Надо завести какую-то целочисленную переменную и в нее записать результат округления y. И уже эту переменную передавать в image1.Canvas.LineTo(,)
0
Johnny B
3 / 3 / 1
Регистрация: 03.01.2010
Сообщений: 69
08.02.2010, 00:26  [ТС] 20
Предположим я завел переменную типа Integer. Как записать в нее значение y, если они разных типов? h:=y работать не будет... А как еще я не знаю...
0
08.02.2010, 00:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2010, 00:26

Запись чисел в массив
Здравствуйте! В своей практике я задавал массивы только через формулы или тупо...

Чтение, сортировка и запись в массив
Нужна помощь. может есть у кого заготовки программы или наметки, чтоб...

Запись record в массив из edit
Всем привет, мне нужна помощь. Вообще есть задача: список людей стоящих в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru