Ну так в чем проблема, пиши на Паскале. А там посмотрим как оформить..." писал(а):Все вроде просто, на Паскале я могу все это претворить в жизнь
легкая программа с матрицами...но я не могу ее написать
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
It's a long way to the top if you wanna rock'n'roll
вот задачка.somewhere писал(а):Ну так в чем проблема, пиши на Паскале. А там посмотрим как оформить...
program B182;
uses crt;
const n=10;
var i,min,k,s,a,b,j,m:integer;
br,ar:array [1..n] of integer;
begin
clrscr;
randomize;
for i:=1 to n do
begin
ar:=random(100)-50;
write (ar,' ');
end;
k:=1;
min:=abs(ar[1]); {a}
for i:=1 to n do
if abs(ar)< min then begin
min:=abs(ar);
k:=i;
end;
writeln;
writeln ('min элемент по модулю= ',min,' с индексом ',k);
s:=0; {b}
for i:=1 to n do
if ar<0 then begin
k:=i;
i:=n;
end;
for i:=k+1 to n do
s:=s+abs(ar);
writeln;
writeln ('сумма модулей элементов расположенных после первого отрицательного элемента* =',s);
writeln ('введите левую границу'); {преобразование матрицы}
readln (a);
writeln ('введите правую границу');
readln (b);
j:=1;
for i:=1 to n do
if (ar>a) and (ar<b) then begin
br[j]:=ar;
j:=j+1;
end;
m:=j;
for j:=1 to m-1 do
write (br[j],' ');
j:=m;
for i:=1 to n do
if (ar<a) or (ar[i]>b) then begin
br[j]:=ar[i];
j:=j+1;
end;
for j:=m to n do
write (br[j],' ');
readln
end.
Теперь ее надо в delphi и еще чтоб с руки ввод массива тоже был. И кстати в той задаче про двумерную матрицу, надо тоже ввод с рук организовать.
Так я же писал, как. Разрешаешь для TStringGrid редактирование и все нормально с руки вводиться." писал(а):И кстати в той задаче про двумерную матрицу, надо тоже ввод с рук организовать.
Теперь об этой задаче:
1. Для ввода одномерного массива тоже можно использовать TStringGrid, только строка у него будет всего одна.
2. Нужна кнопка для запуска этой программы.
3. Для вывода всей информации на экран можно использовать TMemo. У него есть свойство Lines. Lines - это грубо говоря массив из стрингов. У него методы есть: Clear, Add и т.д. Вот они и пригодятся. Т.е. заместо ClrScr; будет Memo.Lines.Clear; а заместо Writeln(s:String) memo.Lines.Add(s:String)
4. С учетом частого использования элементов одномерного массива в поиске, сравнениях и др. настоятельно рекомендую все-таки скопировать из StringGrid'a все элементы в этот массив, а потом с ним работать.
И попробуй пока сам, иначе какой смысл решать задачи мне. Меня это не научит, а вот чем больше времени ты сам будешь ей уделять - тем больше опыта и знаний ты получишь. Не забывай, что всегда есть Help который расскажет о каждом свойстве и методе любого объекта.
It's a long way to the top if you wanna rock'n'roll
тк, я бы сидел, но у меня времени совсем нет, а скоро уже сдавать 15 задач. Половина из них двумерные, половина одномерные. Ты мне дал код для двумерной, вот если дашь и для одномерного, для вот этой задачи, тогда я уж наверно и сам попробую посидеть. А так толку совсем нет, я попросту ниче не успею понять, а здесь будет хоть от чего отталкиваться. напиши мне решение для одномерного просто, только, ладно, не надо с clrscr, пусть будет все просто как с двумерной. Без фишек. Заранее благодарюsomewhere писал(а):И попробуй пока сам, иначе какой смысл решать задачи мне. Меня это не научит, а вот чем больше времени ты сам будешь ей уделять - тем больше опыта и знаний ты получишь. Не забывай, что всегда есть Help который расскажет о каждом свойстве и методе любого объекта.
P.S. а когда организуешь ввод с рук эти строчки надо удалять?
procedure TForm1.BitBtn1Click(Sender: TObject);
var x, y: Integer;
begin
for x:=0 to sg.RowCount-1 do
for y:=0 to sg.ColCount-1 do
sg.Cells[y,x] := Inttostr(random(50)-25);
end;
а вместо них что-нибудь надо писать?
Я в Options у StringGrid поставил True. Значения ввожу но выходит ошибка, типа не целый тип переменная принимает. Что-то типа того. короче мне тяжело разобраться. Помоги
А в чем проблема, там же все еще проще!
Например, есть двумерный массив mas2=array[1..m,1..n] of integer
Если мы хотим что-то сделать с каждым элементом массива - делаем два цикла (по горизонтали и вертикали) и мучаем элементы:
for i:=1 to m do
for j:=1 to n do
mas2[i,j]:= что-то там
А если одномерный - просто считай, что у тебя n тождественно равен 1.
Правда, такой код будет неудобен, поэтому можно второе измерение вообще выкинуть
mas1:array[1..m] of integer;
И тогда достаточно одного цикла
for i:=1 to m do
mas1:= что-то там
Что тут еще сложного?
Например, есть двумерный массив mas2=array[1..m,1..n] of integer
Если мы хотим что-то сделать с каждым элементом массива - делаем два цикла (по горизонтали и вертикали) и мучаем элементы:
for i:=1 to m do
for j:=1 to n do
mas2[i,j]:= что-то там
А если одномерный - просто считай, что у тебя n тождественно равен 1.
Правда, такой код будет неудобен, поэтому можно второе измерение вообще выкинуть
mas1:array[1..m] of integer;
И тогда достаточно одного цикла
for i:=1 to m do
mas1:= что-то там
Что тут еще сложного?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для ввода данных "с руки" в Дельфи служат объекты.
It's a long way to the top if you wanna rock'n'roll
Пробую на событие OnSelectCell, сделать ввод числа, в соответсвующий cell. Подскажешь куда смотреть?somewhere писал(а):Для ввода данных "с руки" в Дельфи служат объекты.
Сделал Options GoEditing true. Ввод пошел. Спасибо, за ранний совет ;-)
спасибо за задачу. Попробую разобратьсяsomewhere писал(а):Для ввода данных "с руки" в Дельфи служат объекты.
Помнишь ты мне сделал задачу с одномерным массивом? Так вот, Я все задачи с одномерными сделал, но оказывается Преобразованный массив необходимо выводить в другом StringGride. Как это сделать? И сильно ли этот вывод отличается для задач с двумерными матрицами?