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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 11:17   #21
MrMorozko
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 115
По умолчанию

Trunc тут видимо не причем он не допускает изменения, вот интерсно
for i := 8-j downto j do
for i:=trunc(n/2)+1 to n
for j:=n-i+1 to n
они три идут друг за дружкой их меняешь местами со второго ругаеться
MrMorozko вне форума Ответить с цитированием
Старый 13.12.2010, 11:33   #22
Prime123
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 79
По умолчанию

Слишком сложно,задача очень простая

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j, n,i1,i2,m,t : integer;
a : array [0..50, 0..50] of integer;

begin
n:=7;
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=0;
end;
for i:=1 to trunc(n/2) do
for j:=i to n-i+1 do
begin
a[i,j]:=1;
end;
for i:=trunc(n/2)+1 to n do
for j:=n-i+1 to i do
begin
a[i,j]:=1;
end;
for i:=1 to n do
for j:=1 to n do
begin
stringgrid1.Cells[j-1,i-1]:=inttostr(a[i,j]);
end;
end;
У меня код такой,идеально заполняется по вашему правилу
Если я чем-то вам помог-не стесняйтесь,ставьте +

Если ошибаюсь-поправляйте,учусь на ошибках,реагирую адекватно
Prime123 вне форума Ответить с цитированием
Старый 13.12.2010, 16:27   #23
MrMorozko
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 115
По умолчанию

ааа..здорово спасибо огромное!!!!
MrMorozko вне форума Ответить с цитированием
Старый 13.12.2010, 16:42   #24
MrMorozko
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 115
По умолчанию

Вот код программы....нахожу только максимальные и минимальные значения в каждой строке, вопрос как их поменять местами с первым и последни элементом соответственно
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, n, m,max,min: integer;
a : array [0..50, 0..50] of integer;
begin
Randomize;
n := StrToInt(Edit1.Text);
m := StrToInt(Edit2.Text);
for i := 0 to n - 1 do
 for j := 0 to m - 1 do
 a[i,j]:=Round(Sin(Random(100))*100);
 StringGrid1.RowCount:=n+1;
 StringGrid1.ColCount:=m+1;
 with StringGrid1 do
  begin
   i:=0 ;
   for j:=1 to RowCount do
   Cells[i,j]:=IntToStr(j);
   j:=0 ;
   for i:=1 to ColCount do
   Cells[i,j]:=IntToStr(i);
   end;
   with StringGrid1 do
   for i:=1 to n do
   for j:=1 to m do
   Cells[i,j]:=IntToStr(a[i-1,j-1]);
   for i:=0 to n-1 do
max:=a[i,0];
min:=a[i,0];
for j:=0 to m-1 do if a[i,j]>max then begin
max:=a[i,j];
end;
for j:=0 to m-1 do if a[i,j]<min then begin
min:=a[i,j];//вот нашел минимальные и максимальный значения а как дальше?
   end;
   end;
Спасибо заранее !если можно напишите с пояснением ))
MrMorozko вне форума Ответить с цитированием
Старый 13.12.2010, 16:46   #25
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Код:
for i:=0 to n-1 do begin
  k1 := 0;
  k2 := 0;

  for j:=1 to m-1 do if a[i,j]>a[i,k1] then k1 := j;
  for j:=1 to m-1 do if a[i,j]<a[i,k2] then k2 := j;

  t := a[i, 0];
  a[i,0] := a[i, k1];
  a[i, k1] := t;

  t := a[i, m-1];
  a[i, m-1] := a[i, k2];
  a[i, k2] := t;
end;
Соответственно, объявить t,k1,k2: integer;
Asker13 вне форума Ответить с цитированием
Старый 13.12.2010, 16:53   #26
MrMorozko
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 115
По умолчанию

Код:
for i:=0 to n-1 do begin
  k1 := 0;
  k2 := 0;

  for j:=1 to m-1 do if a[i,j]>a[i,k1] then k1 := j;
  for j:=1 to m-1 do if a[i,j]<a[i,k2] then k2 := j;

  t := a[i, 0];
  a[i,0] := a[i, k1];
  a[i, k1] := t;

  t := a[i, m-1];
  a[i, m-1] := a[i, k2];
  a[i, k2] := t;
end;
Ругаеться на это , Assigment to FOR-Loop variable 'j'
Уже не первы раз такая ошибка возникает а почему понять не могу
MrMorozko вне форума Ответить с цитированием
Старый 13.12.2010, 17:25   #27
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, n, m, k1, k2, t: integer;
  a : array [0..50, 0..50] of integer;
begin
  Randomize;
  n := StrToInt(Edit1.Text);
  m := StrToInt(Edit2.Text);
  StringGrid1.RowCount:=n+1;
  StringGrid1.ColCount:=m+1;

  for i := 0 to n - 1 do
    for j := 0 to m - 1 do
      a[i,j] := Round(Sin(Random(100))*100);

  with StringGrid1 do begin
   for j:=1 to RowCount do Cells[0,j]:=IntToStr(j);
   for i:=1 to ColCount do Cells[i,0]:=IntToStr(i);

   for i:=0 to n-1 do
    for j:=0 to m-1 do
      Cells[i,j]:=IntToStr(a[i-1,j-1]);
  end;

  for i:=0 to n-1 do begin
    k1 := 0;
    k2 := 0;

    for j:=1 to m-1 do if a[i,j]>a[i,k1] then k1 := j;
    for j:=1 to m-1 do if a[i,j]<a[i,k2] then k2 := j;

    t := a[i, 0];
    a[i,0] := a[i, k1];
    a[i, k1] := t;

    t := a[i, m-1];
    a[i, m-1] := a[i, k2];
    a[i, k2] := t;
  end;

end;
Возможно, что вы просто не туда скопировали код. Попробуйте вариант выше. Замечание: каждый раз при нажатии на Button1 будет включаться генератор рандомных чисел (Randomize). Уберите его из Button1Click и пропишите в Form1Create.

Последний раз редактировалось Asker13; 13.12.2010 в 18:22.
Asker13 вне форума Ответить с цитированием
Старый 13.12.2010, 18:43   #28
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
for j:=1 to m-1 do if a[i,j]>a[i,k1] then k1 := j;
    for j:=1 to m-1 do if a[i,j]<a[i,k2] then k2 := j;
а зачем 2 раза в цикле то по строке гонять за один проход не вариант что ли7
Код:
for j:=1 to m-1 do 
begin
if a[i,j]>a[i,k1] then k1 := j;
if a[i,j]<a[i,k2] then k2 := j;
end;
и чем код отсюда не устроил?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 13.12.2010, 20:27   #29
MrMorozko
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 115
По умолчанию

Прошу проверить задачку

Найти все трехзначные числа, сумма цифр которых равна А, а само число делится на В. А и В задаются.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,i,j,k,z:integer;
begin
label2.Caption:='';
a:=StrToInt(edit1.Text);
b:=StrToInt(edit2.Text);
 for i:= 1 to 9 do
 for j:=0 to 9 do
   for k:=0 to 9 do begin
  z:=i*100+j*10+k;
if ((i+j+k)=a) and (a mod b=0) then
label2.Caption:=IntToStr(z) + '''' + label2.Caption ;
end;
MrMorozko вне форума Ответить с цитированием
Старый 13.12.2010, 20:29   #30
MrMorozko
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
for j:=1 to m-1 do if a[i,j]>a[i,k1] then k1 := j;
    for j:=1 to m-1 do if a[i,j]<a[i,k2] then k2 := j;
а зачем 2 раза в цикле то по строке гонять за один проход не вариант что ли7
Код:
for j:=1 to m-1 do 
begin
if a[i,j]>a[i,k1] then k1 := j;
if a[i,j]<a[i,k2] then k2 := j;
end;
и чем код отсюда не устроил?

Этот код мне ничего не выдал, вот переделали немного щас нормально работает спасибо
MrMorozko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив Delphi MrMorozko Помощь студентам 10 24.11.2013 19:56
Delphi двумерный массив ДваДваВо7 Помощь студентам 2 08.12.2010 17:19
Двумерный массив Delphi 7 Hasray Помощь студентам 7 05.12.2010 14:12
Delphi Двумерный массив forumu Помощь студентам 3 24.12.2007 13:58