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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2015, 19:51   #1
crazy gamers
 
Регистрация: 21.11.2015
Сообщений: 8
По умолчанию программирование в Lazarus

привет всем! помогите пожалуйста решить две задачи.
1.,Вычислите произведение натуральных логарифмов чисел от 6 до 666, которые кратны 3 или 4''
2.С помощью объекта Stringgrid создайте матрицу из N строк и M столбцов(N и M вводятся с клавиатуры). Заполните матрицу следующей змейкой
0 1 2 3
7 6 5 4
8 9 10 11
Заранее спасибо))
crazy gamers вне форума Ответить с цитированием
Старый 21.11.2015, 20:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Твои пробы увидеть можно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2015, 21:22   #3
crazy gamers
 
Регистрация: 21.11.2015
Сообщений: 8
По умолчанию

1)
Код:
procedure TForm1.FormActivate(Sender: TObject);
   var i: integer;
  a, b: real;
begin
for i:= 6 to 666 do
 if i mod 3 or i mod 4 =0 then
 Memo1.Lines.Add(FloatToStr(i));
a:= ln(i);
Inc(i);
repeat
a:= (a*ln(i));
b:= a*ln(i);
until i = 660 ;
Memo1.Lines.Add(FloatToStr(a));
я сделал выборку кратных чисел, а произведении где-то ошибка

2)
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var N, M: integer;
    i, j: integer;
begin
N:= StrToInt(LabeledEdit1.Text);
M:= StrToInt(LabeledEdit2.Text);
StringGrid1.ColCount:= M + 1 ;
StringGrid1.RowCount:= N + 1 ;
StringGrid1.DefaultColWidth:= 30;
StringGrid1.DefaultRowHeight:= 30;
StringGrid1.Width:= 500;
StringGrid1.Height:= 181;
for i:=1 to m do
begin
  if i mod 2 = 1 then
   for j:= 1 to M do
   Stringgrid1.Cells[i,j]:=(i-1)*M + j
  else
    for j:= M downto 1 do
    Stringgrid1.Cells[i,j]:=(i-1)*M + (N-j+1);
  end;
 end;
for i:=1 to N do
begin
 for j:=1 to M do
  Stringgrid1.Cells[i,j]
но в обоих случаях куча ошибок, я в этом деле новичек

Последний раз редактировалось Stilet; 21.11.2015 в 21:48.
crazy gamers вне форума Ответить с цитированием
Старый 21.11.2015, 21:55   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Вычислите произведение натуральных логарифмов чисел от 6 до 666, которые кратны 3 или 4''
Код:
procedure TForm1.FormActivate(Sender: TObject);
   var i: integer;
  a, b: real;
begin
a:=0;
for i:= 6 to 666 do
 if ((i mod 3)=0) or ((i mod 4) = 0) then begin
  Memo1.Lines.Add(IntToStr(i));
  if a=0 then a:= ln(i) else a:=a*ln(i);
 end;
Memo1.Lines.Add(FloatToStr(a));
end;
Цитата:
матрицу из N строк и M столбцов(N и M вводятся с клавиатуры). Заполните матрицу следующей змейкой
Код:
var i,j,k,l:integer;
begin
 with StringGrid1 do begin
  k:=1;i:=0;j:=0; l:=1;
  while (i<RowCount) do begin
    while (j>=0) and (j<ColCount) do begin
      Cells[i,j]:=l; inc(l);
      inc(j,k);
    end;
    inc(i); k:=-k;
  end;
 end;
end;
Вот думаю так вот...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2015, 22:39   #5
crazy gamers
 
Регистрация: 21.11.2015
Сообщений: 8
По умолчанию

первая работает отлично) спасибо большое, а со второй я не очень разобрался, ему чем-то не нравится последняя переменная. последние две переменные используются как число столбцов и строк?
crazy gamers вне форума Ответить с цитированием
Старый 21.11.2015, 22:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

k - это направление - туда или сюда.
l - это то, что в ячейку писать.
Что правда для записи в ячейку нужно IntToStr(l)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2015, 22:55   #7
crazy gamers
 
Регистрация: 21.11.2015
Сообщений: 8
По умолчанию

а как мне тогда связать вместе вводимые размеры матрицы и цикл для ее заполнения, должно получится что-то вроде этого?
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k,l:integer;
  M, N: integer;
begin
N:= StrToInt(LabeledEdit1.Text);
M:= StrToInt(LabeledEdit2.Text);
StringGrid1.ColCount:= N + 1;
StringGrid1.RowCount:= M + 1;
StringGrid1.DefaultColWidth:= 30;
StringGrid1.DefaultRowHeight:= 30;
StringGrid1.Width:= 500;
StringGrid1.Height:= 181;
 with StringGrid1 do begin
  k:= 1; i:= 0; j:= 0; l:= 1;
  while (i<RowCount) do begin
    while (j>=0) and (j<ColCount) do begin
      Cells[i,j]:= l; inc(l);
      inc(j,k);
    end;
    inc(i); k:=-k;
  end;
 end;
end;
end.
Оформляй код по правилам - кнопка #
Модератор

Последний раз редактировалось Аватар; 21.11.2015 в 23:32.
crazy gamers вне форума Ответить с цитированием
Старый 22.11.2015, 00:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну так и связывай:
Код:
 with StringGrid1 do begin
   RowCount:=n; ColCount:=m;
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2015, 10:53   #9
crazy gamers
 
Регистрация: 21.11.2015
Сообщений: 8
По умолчанию

простите меня за мою тупость, но матрица с заполнением змейкой не получается, вот код собранной программы
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k,l:integer;
  N, M: integer;
begin
with StringGrid1 do begin
N:= StrToInt(LabeledEdit1.Text);
M:= StrToInt(LabeledEdit2.Text);
StringGrid1.ColCount:= N + 1;
StringGrid1.RowCount:= M + 1;
StringGrid1.DefaultColWidth:= 30;
StringGrid1.DefaultRowHeight:= 30;
StringGrid1.Width:= 500;
StringGrid1.Height:= 181;
  k:= 1; i:= 1; j:= 1; l:= 1;
  while (i<RowCount) do begin
    while (j>=0) and (j<ColCount) do begin
      StringGrid1.Cells[i,j]:= IntToStr(l); inc(l);
      inc(j,k);
    end;
    inc(i); k:=-k;
  end;
 end;
end;
end.
а получается, что если ввести размер матрицы 4х6 программа просто заполняет первый столбик от 1 до 4 b все

Последний раз редактировалось Stilet; 22.11.2015 в 11:18.
crazy gamers вне форума Ответить с цитированием
Старый 22.11.2015, 11:26   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
var i,j,d,v,x:integer;
begin
 with StringGrid1 do begin
   Align:=alClient; FixedCols:=0;FixedRows:=0;
   RowCount:=10; ColCount:=10;
   DefaultColWidth:=20;DefaultRowHeight:=DefaultColWidth;
   d:=1;   v:=0; x:=0;
   for i:=0 to RowCount-1 do begin
     for j:=0 to ColCount-1 do begin
       Cells[x,i]:=IntToStr(v); inc(v);
       inc(x,d);
		 end;
     d:=-d; inc(x,d);
	 end;
 end;
end;
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекомпиляция программы(простой) Win Lazarus в Linux Lazarus Toxifer Фриланс 0 27.11.2012 22:46
Программирование или web-программирование? Дмитрий Батогов Помощь студентам 3 23.06.2011 14:14
Lazarus... Сristina Помощь студентам 1 28.03.2011 20:03
LAZARUS TIGER-777 Помощь студентам 3 06.11.2010 13:44
Lazarus 666Rayne666 Помощь студентам 2 02.06.2010 17:55