Страница 1 из 1
Подскажите с двумерным массивом Delphi
Добавлено: 26 мар 2009, 22:03
K_Sergey
Всем привет!
Подскажите с такой задачей есть массив:
1.0 2.0 3.0 4.0 5.0
7.8 8.9 7.2 6.2 5.2
Пример:
1. Пользователь вводит значение x=2, программа должна перебрать значения и присвоить значение y1=8.9
2. Пользователь вводит значение x=2.5, тогда программа должна перебрать значения и присвоить значение y1=8.9, y2=7.2
P.S. Подскажите литературу где массивы разобраны подробно (с нуля), с этой темой у меня большие проблемы.
Заранее большое спасибо!
Re: Подскажите с двумерным массивом Delphi
Добавлено: 27 мар 2009, 00:10
Naeel Maqsudov
Код: Выделить всё
const
arr:array[1..5,1..2] of real = ((1,2,3,4,5),(7.8,8.9,7.2,6.2,5.2));
var
x:real;
i,j:byte;
y:array[1..5 of real];
begin
write('Введите X:');readln(x);
i:=1;
while (i<=5) and (X<arr[i]) do begin
y[i]:=x[i,2];
inc(i);
end;
for j:=1 to pred(i) do writeln(y[i]);
end.
Re: Подскажите с двумерным массивом Delphi
Добавлено: 27 мар 2009, 12:28
K_Sergey
У меня вылетает ошибка на второй строчке. На запятой в между этими скобками (1,2,3,4,5),(7.8,8.9,7.2,6.2,5.2)
Еще вопрос этот код на Pascal, сильно будет отличаться если его использовать в Delphi? Вводиться число будет в Edit1, выводиться результат в Edit2. Процедура будет выполняться по клику на кнопку Button1
Re: Подскажите с двумерным массивом Delphi
Добавлено: 27 мар 2009, 13:39
Naeel Maqsudov
Извиняюсь за опечатки. Так правильно
Код: Выделить всё
const
arr:array[1..5,1..2] of real = ((1,7.8),(2,8.9),(3,7.2),(4,6.2),(5,5.2));
var
x:real;
i,j:byte;
y:array[1..5] of real;
begin
write('Введите X:');readln(x);
i:=1;
while (i<=5) and (X>arr[i,1]) do begin
y[i]:=arr[i,2];
inc(i);
end;
for j:=1 to pred(i) do writeln(y[j]);
end.
Re: Подскажите с двумерным массивом Delphi
Добавлено: 27 мар 2009, 21:12
K_Sergey
Сейчас все запускается, но работает не правильно. При вводе 2 выводит 7.8, при вводе 2.5 выводит 7.8 и 8.9
Может быть не совсем корректно задал вопрос в самом начале.
В конечном итоге мне нужно привести программу к такому виду, например:
при вводе значения x=2.3 программа находит пограничные значения 8.9 и 7.2. В дальнейшем будет произведена интерполяция и значение y будет равно 8.39
Re: Подскажите с двумерным массивом Delphi
Добавлено: 28 мар 2009, 14:20
dr.Jekill
K_Sergey писал(а):с этой темой (массивыми) у меня большие проблемы.
Что такое массив: обьеденение однотипных элементов.
Какие бывают массивы:
1.одномерные, которые называют векторы (к направленному отрезку отношения не имеет) и
2. двумерные - матрицы.
К каждому элементу массива можно обратиться по его индексу(ам), который характеризизует его положение в этом массиве. Соответственно у элементов вектора будет один индекс, так все элементы располагаются в одну строку. Т.е. если у нас есть массив A[1..10] (10 элементов), то чтобы обратиться к 7-ому элементу мы должны записать A[7], к 5-ому A[5] и так к любому.
Если наш массив матрица (аналог матриц в математике), тогда каждый элемент характеризуется положением в этой матрице, т.е. номерами строки и столбца. Другими словами, если у нас есть матрица A[1..5,1..7] (5 строк, 7 столбцов), то запись такого вида A[2,7] будет значить: элемент матрицы А, находящийся на пересечении 2-ой строки и 7-ого столбца.
Опираясь на вышеизложенное, алгоритм для Вашей задачки может иметь вид:
в цикле если <введенное число>-a[1,j]<1 тогда вывести a[2,j] и a[2,j+1], закончить цикл. Разберайтесь и учите массивы - это одна из основопалагающих тем. Good luck!