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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2011, 17:38   #1
zzzarazzza
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
По умолчанию Delphi массивы

Помогите написать программку...
1. Номер минимального элемента массива.
2.Сумму элементов массива, расположенных между первым и вторым отрица¬тельными элементами.
3.Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает единицу, а потом – все остальные.

Код:
var
  Form1: TForm1;

  i,j:integer;
  min :integer;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if (Edit1.Text='') or (Edit2.Text='') then
ShowMessage('Ведите кол-во строк и столбцов')else
begin
Randomize;
StringGrid1.ColCount:=strtoint(Edit2.Text);
StringGrid1.RowCount:=strtoint(Edit1.Text);
for i:=0 to StringGrid1.RowCount-1 do
for j:=0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[j,i]:=inttostr(random(15)-5);
BitBtn1.Enabled:=false;
end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (Key in ['0'..'9',' ']) then Key:= #8;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
    if not (Key in ['0'..'9',' ']) then Key:= #8;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var min, m,n,y,x :integer;
begin
min:=0;
for m:=0 to StringGrid1.RowCount-1 do
for n:=0 to StringGrid1.ColCount-1 do
begin
if min>strtoint(StringGrid1.Cells[m,n])then
begin
min:=strtoint(StringGrid1.Cells[m,n]);
y:=m+1;
x:=n+1;
end;
end;
label4.Caption:=inttostr(min);
label10.Caption:=inttostr(x);
label11.Caption:=inttostr(y);
BitBtn2.Enabled:=false;
  end;


procedure TForm1.BitBtn4Click(Sender: TObject);
var i, j: Integer;
begin
Edit1.Text:='';
Edit2.Text:='';
Label4.Caption:='';
Label6.Caption:='';
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
min:=0;
begin
  with StringGRid1 do
    for i:=0 to RowCount-1 do
    for j:=0 to ColCount-1 do
      Cells[j, i]:='';
end;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var k,s:integer;
begin
k:=0;
s:=0;
for i:=0 to StringGrid1.RowCount-1 do
for j:=0 to StringGrid1.ColCount-1 do
begin
if StringGrid1.Cells[j,i]<inttostr(0) then
k:=k+1;
if k=2 then
s:=s+strtoint(StringGrid1.Cells[j,i]);
label6.Caption:=inttostr(s);
end;
end;
end.

Последний раз редактировалось Stilet; 29.06.2011 в 20:37.
zzzarazzza вне форума Ответить с цитированием
Старый 29.06.2011, 17:44   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
if StringGrid1.Cells[j,i]<inttostr(0) then
Здесь очевидная лажа.
mss вне форума Ответить с цитированием
Старый 29.06.2011, 17:47   #3
zzzarazzza
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
По умолчанию

почему?
мы же ищем отрицательный элемент..
zzzarazzza вне форума Ответить с цитированием
Старый 29.06.2011, 17:54   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

if StrToInt(StringGrid1.Cells[j,i]) < 0 then

Цитата:
if not (Key in ['0'..'9',' ']) then Key:= #8;
Здесь тоже лажа.

Последний раз редактировалось Stilet; 29.06.2011 в 20:38.
mss вне форума Ответить с цитированием
Старый 29.06.2011, 17:57   #5
zzzarazzza
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
if StrToInt(StringGrid1.Cells[j,i]) < 0 then
поменяла.. всё равно не работает(

Цитата:
Сообщение от mss Посмотреть сообщение
Здесь тоже лажа.
тут то что? просто стоит запрет на буквы...

Последний раз редактировалось Stilet; 29.06.2011 в 20:39.
zzzarazzza вне форума Ответить с цитированием
Старый 29.06.2011, 18:02   #6
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

пробел тоже "буква")
и зачем вообще ты стираешь последний введенный юзером КОРРЕКТНЫЙ символ, если он только что ввел не цифровой символ ?
mss вне форума Ответить с цитированием
Старый 29.06.2011, 18:06   #7
zzzarazzza
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
Восклицание

ну это не столь важно) щас уберу пробел..

а можно второй и третей задаче внимание уделить.. во второй сумма выводится но какая то неправильная)
zzzarazzza вне форума Ответить с цитированием
Старый 29.06.2011, 18:11   #8
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
сумма выводится но какая то неправильная
Так ты же суммировать начинаешь только тогда когда однаружен 2-й отриц.элемент)
А до этого момента только считаешь их не суммируя..
И вообще - после обнаружентия 2-го отриц.эл-та нет никакого резона продолжать цикл, надо выходить из него.

Цитата:
щас уберу пробел
А почему ты запрещаешь юзеру жать бэкспейс чтобы стереть последний введенный им корректный символ ?
Ну ошибся юзер, промазал по клаве, хотел нажать "0", а нажал "1" .. Чем он так провинился что ты его сразу по рукам лупишь ?)

Последний раз редактировалось Stilet; 29.06.2011 в 20:39.
mss вне форума Ответить с цитированием
Старый 29.06.2011, 18:17   #9
zzzarazzza
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
По умолчанию

можешь написать как должно быть?
zzzarazzza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Массивы glack18 Помощь студентам 5 21.04.2011 12:36
Массивы (delphi) CAMOBAP Помощь студентам 1 06.02.2011 12:04
Массивы в Delphi 7 Gosser Помощь студентам 6 10.01.2010 14:35
Delphi - массивы dForm Помощь студентам 2 30.11.2009 17:57
Delphi. Массивы. HD-boy Помощь студентам 5 27.11.2009 17:00