Лабораторная № 1.
Задание. Заполнить массив StringGrid случайными числами. Нижняя граница заполнения выбирается случайно, верхняя тоже. Через функцию random. Посчитать сколько раз встретилась нижняя и верхняя граница в полученных числах. На основе данных определить частоту встречаемости.
Решение: Нижняя и верхняя границы выбираются случайно через функцию random. Случайное число из диапазона определенного случайными верхней и нижней границами выбирается по формуле x:=a+random(b-a). Нам нужно чтобы верхняя граница не была меньше верхней, поэтому я сделал так:
randomize;
a:=random(10);
b:=random(50);
while b<=a do begin
a:=random(10);
b:=random(50);
end;
Иначе будет баг, и будут запредельные цифры. Когда равен аналогично. Исходник можно
Популярность: 11%


Можно зделать проще и короче и не грузить комп циклом:
randomize;
a:=random(10);
b:=random(40)+10;
Данные 3 строчки заменяют твои 6 и без бесконечных циклов!!!!:D!!!!
Женек, можно, молодец, что сообразил. Но это не то задание, ради которого нужно оптимизировать код. Для меня главное работает. А потом можно хоть как переделать. Я прогу кодил минут 15 от силы.
Я не про то, что у тя не совершенный код, а про то что ты думаеш не рационально усложняеш сам же себе задачу. Гениальный программист пишет простым кодом гениальные вещи, а не наоборот!!!!
Полезная инфа))
я мыслю нестандартно, и это мне помогает писать гениальные вещи.
будет еще пополнение прог!
Здравствуйте!!! вот решил выложить свою прогу, может кому будет полезна…сам я начинаю только кодить так, что код довольно корявый…но рабочий…есть одна мебольшая просьба: помогите его уменьшить и как то оптимизировать…пишите на почту: tnm666@yandex.ru буду благодарен за помощь!
вот сам код:
unit Matrix;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Button2: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject); //кнопка заполнения первой матрицы
procedure Button4Click(Sender: TObject);// кнопка сложения и вывода результатов во вторую матрицу
procedure Button2Click(Sender: TObject); //кнопка выхода из программы
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);// заполняем матрицу члучайными числами от 0 до 1000
var i,j:integer;
begin
randomize;
for i:=0 to 10 do
for j:=0 to 10 do
begin
stringGrid1.Cells[0,0]:=inttostr(random(10)-0);
stringGrid1.Cells[0,2]:=inttostr(random(10)-0);
stringGrid1.Cells[0,4]:=inttostr(random(10)-0);
stringGrid1.Cells[0,6]:=inttostr(random(10)-0);
stringGrid1.Cells[1,0]:=inttostr(random(10)-0);
stringGrid1.Cells[1,2]:=inttostr(random(10)-0);
stringGrid1.Cells[1,4]:=inttostr(random(10)-0);
stringGrid1.Cells[1,6]:=inttostr(random(10)-0);
stringGrid1.Cells[2,0]:=inttostr(random(10)-0);
stringGrid1.Cells[2,2]:=inttostr(random(10)-0);
stringGrid1.Cells[2,4]:=inttostr(random(10)-0);
stringGrid1.Cells[2,6]:=inttostr(random(10)-0);
stringGrid1.Cells[4,0]:=inttostr(random(10)-0);
stringGrid1.Cells[4,2]:=inttostr(random(10)-0);
stringGrid1.Cells[4,4]:=inttostr(random(10)-0);
stringGrid1.Cells[4,6]:=inttostr(random(10)-0);
stringGrid1.Cells[5,0]:=inttostr(random(10)-0);
stringGrid1.Cells[5,2]:=inttostr(random(10)-0);
stringGrid1.Cells[5,4]:=inttostr(random(10)-0);
stringGrid1.Cells[5,6]:=inttostr(random(10)-0);
stringGrid1.Cells[6,0]:=inttostr(random(10)-0);
stringGrid1.Cells[6,2]:=inttostr(random(10)-0);
stringGrid1.Cells[6,4]:=inttostr(random(10)-0);
stringGrid1.Cells[6,6]:=inttostr(random(10)-0);
stringGrid1.Cells[8,0]:=inttostr(random(10)-0);
stringGrid1.Cells[8,2]:=inttostr(random(10)-0);
stringGrid1.Cells[8,4]:=inttostr(random(10)-0);
stringGrid1.Cells[8,6]:=inttostr(random(10)-0);
stringGrid1.Cells[9,0]:=inttostr(random(10)-0);
stringGrid1.Cells[9,2]:=inttostr(random(10)-0);
stringGrid1.Cells[9,4]:=inttostr(random(10)-0);
stringGrid1.Cells[9,6]:=inttostr(random(10)-0);
stringGrid1.Cells[10,0]:=inttostr(random(10)-0);
stringGrid1.Cells[10,2]:=inttostr(random(10)-0);
stringGrid1.Cells[10,4]:=inttostr(random(10)-0);
stringGrid1.Cells[10,6]:=inttostr(random(10)-0);
stringGrid1.Cells[12,0]:=inttostr(random(10)-0);
stringGrid1.Cells[12,2]:=inttostr(random(10)-0);
stringGrid1.Cells[12,4]:=inttostr(random(10)-0);
stringGrid1.Cells[12,6]:=inttostr(random(10)-0);
stringGrid1.Cells[13,0]:=inttostr(random(10)-0);
stringGrid1.Cells[13,2]:=inttostr(random(10)-0);
stringGrid1.Cells[13,4]:=inttostr(random(10)-0);
stringGrid1.Cells[13,6]:=inttostr(random(10)-0);
stringGrid1.Cells[14,0]:=inttostr(random(10)-0);
stringGrid1.Cells[14,2]:=inttostr(random(10)-0);
stringGrid1.Cells[14,4]:=inttostr(random(10)-0);
stringGrid1.Cells[14,6]:=inttostr(random(10)-0);
end;
end;
procedure TForm1.Button4Click(Sender: TObject); // Закрываем программу
begin
Form1.Close;
end;
procedure TForm1.Button2Click(Sender: TObject); // складываем значения в ячейках первой матрицы и выводим результат во вторую матрицу
var
a : real;
b : real;
x: real;
C : real;
begin
a:= StrToFloatDef(StringGrid1.Cells[0,0],0);//берем первое число
b:= StrToFloatDef(StringGrid1.Cells[1,0],0);//второе число
x:= StrToFloatDef(StringGrid1.Cells[2,0],0);//третье число
c:=A+b+x; // складываем
StringGrid2.Cells[0,0]:=FloatTOStr(c); //выводим результат во вторую матрицу
a:= StrToFloatDef(StringGrid1.Cells[4,0],0);
b:= StrToFloatDef(StringGrid1.Cells[5,0],0);
x:= StrToFloatDef(StringGrid1.Cells[6,0],0);
c:=A+b+x; // складываем
StringGrid2.Cells[1,0]:=FloatTOStr(c); //выводим результат во вторую матрицу
a:= StrToFloatDef(StringGrid1.Cells[8,0],0);
b:= StrToFloatDef(StringGrid1.Cells[9,0],0);
x:= StrToFloatDef(StringGrid1.Cells[10,0],0);
c:=A+b+x; // складываем
StringGrid2.Cells[2,0]:=FloatTOStr(c); //выводим результат во вторую матрицу
a:= StrToFloatDef(StringGrid1.Cells[12,0],0);
b:= StrToFloatDef(StringGrid1.Cells[13,0],0);
x:= StrToFloatDef(StringGrid1.Cells[14,0],0);
c:=A+b+x; // складываем
StringGrid2.Cells[3,0]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[0,2],0);
b:= StrToFloatDef(StringGrid1.Cells[1,2],0);
x:= StrToFloatDef(StringGrid1.Cells[2,2],0);
c:=A+b+x; // складываем
StringGrid2.Cells[0,1]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[4,2],0);
b:= StrToFloatDef(StringGrid1.Cells[5,2],0);
x:= StrToFloatDef(StringGrid1.Cells[6,2],0);
c:=A+b+x; // складываем
StringGrid2.Cells[1,1]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[8,2],0);
b:= StrToFloatDef(StringGrid1.Cells[9,2],0);
x:= StrToFloatDef(StringGrid1.Cells[10,2],0);
c:=A+b+x; // складываем
StringGrid2.Cells[2,1]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[12,2],0);
b:= StrToFloatDef(StringGrid1.Cells[13,2],0);
x:= StrToFloatDef(StringGrid1.Cells[14,2],0);
c:=A+b+x; // складываем
StringGrid2.Cells[3,1]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[0,4],0);
b:= StrToFloatDef(StringGrid1.Cells[1,4],0);
x:= StrToFloatDef(StringGrid1.Cells[2,4],0);
c:=A+b+x; // складываем
StringGrid2.Cells[0,2]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[4,4],0);
b:= StrToFloatDef(StringGrid1.Cells[5,4],0);
x:= StrToFloatDef(StringGrid1.Cells[6,4],0);
c:=A+b+x; // складываем
StringGrid2.Cells[1,2]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[8,4],0);
b:= StrToFloatDef(StringGrid1.Cells[9,4],0);
x:= StrToFloatDef(StringGrid1.Cells[10,4],0);
c:=A+b+x; // складываем
StringGrid2.Cells[2,2]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[12,4],0);
b:= StrToFloatDef(StringGrid1.Cells[13,4],0);
x:= StrToFloatDef(StringGrid1.Cells[14,4],0);
c:=A+b+x; // складываем
StringGrid2.Cells[3,2]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[0,6],0);
b:= StrToFloatDef(StringGrid1.Cells[1,6],0);
x:= StrToFloatDef(StringGrid1.Cells[2,6],0);
c:=A+b+x; // складываем
StringGrid2.Cells[0,3]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[4,6],0);
b:= StrToFloatDef(StringGrid1.Cells[5,6],0);
x:= StrToFloatDef(StringGrid1.Cells[6,6],0);
c:=A+b+x; // складываем
StringGrid2.Cells[1,3]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[8,6],0);
b:= StrToFloatDef(StringGrid1.Cells[9,6],0);
x:= StrToFloatDef(StringGrid1.Cells[10,6],0);
c:=A+b+x; // складываем
StringGrid2.Cells[2,3]:=FloatTOStr(c);
a:= StrToFloatDef(StringGrid1.Cells[12,6],0);
b:= StrToFloatDef(StringGrid1.Cells[13,6],0);
x:= StrToFloatDef(StringGrid1.Cells[14,6],0);
c:=A+b+x; // складываем
StringGrid2.Cells[3,3]:=FloatTOStr(c);
end;
end. //конец программы
@ Николай:
отписал на почту код) Вопросы по программированию лучше задаем на форуме http://08sapr.ru/forum/ в разделе Delphi
щас посмотрю) заранее благодарен)
оставил сообщение на Вашем форуме просьба оказать помощь….сам зашел в тупик((
@ Николай:
Димарик уже отписался на форуме
благодарю за помощь, сегодня же попробую…
Приветствую Вас форумчане, с начала хочу Вас поблагодарить за помощь со стринградами…и хочу поделиться одной идеей которая возникла у меня надавно…многим сисадминам знакома проблемма когла ночью из за просадки напряжения виснет хаб и приходиться переться на работу для его передергивания….а идея состоит в следующем, все Вы наверняка знаете о прогах для управления LPT портом…а что если на ее основе, создать прогу для пингования например сайта провайдера интернета и если в случае зависания хаба связь будет потеряна, то прога через присоединенное реле к LPT порту перезапустит хаб и все заработает!!! и ненадо будет переться ночью на работу для передергивания хаба))) как идея? сам комп с прогой можно для надежности посадить на бесперебойник…
@ Николай:
А еще лучше просто поставить на хаб бесперебойник, чтобы не вис из-за просадки напряжения))))))
да, знакомая штука, тоже нравится все автоматизировать. Где то я это уже слышал, не на баше случайно?) Там и комп не особо нужен, можно прогу под роутер тогда написать или под комп-розетку. Тогда получится роутер, который управляет роутером
ну в общем ты и прав, можно и бесперебойник посадить, так даже легче (правда и скушнее=)) недавно лазил в сети и наткнулся на довольно интересную штуку…использование мобильного телефона в качестве веб камеры…преимущественно там речь шла о смартфонах нокиа, у меня нокиа 6233, щас скачал проги о которых шла речь в блоге и попытаюсь подконнектиться…хм, сама идея довольно неплохая))) если получиться выложу описание…а кто программировал PIC-контроллеры? я тут начитался статей про самодельных роботов, и прочей полезной самоделкиной автоматизации, теперь ищу инфу для прошивки этих контроллеров, на них кажеться можно почти что угодно собрать) веселая штука))
Я пробовал как то из своего смарта Nokia N70 сделать вебкамеру, она все время висла у меня и не хотела определяться скайпом. С коммуникаторами все проще. Слышал один чел использовал обычный тел Nokia 6230 в качестве беспроводной bluetooth-мыши. Вместо сенсора – камера. А вообще кодить под мобильные платформы интересно. Из смартфона можно сделать че угодно.
Насчет контроллеров: программируют их на ассемблере или С,С++. На делфи тож мона, тока хуже.
Есть игрушка лего. Собираешь какого надо трансформера и программируешь. Там моторчики, контроллеры, все дела… Вот там можно че угодно собрать. Видел на ютубе, как собрали из лего конвеер, который сам собирает из того же лего машинки. Готовые машины, только успевают вылетать с конвеера.
Жду, когда будем собирать подобное в универе (у нас специальность Системы автоматизированного проектирования)
так и приходит на ум фраза: “2029 год. машины восстали из ядерного пепелища…..”=) ну а если серьезно, то идея программирования умных железяк меня почти с детства задела, после просмотра всем известного фильма…..вероятно поэтому я и занялся программированием, вот к стати полезные ссылки для тех кто хочет найти информацию как их программировать с нуля , по поводу мобильноков ты прав, я слышал что даже и Siemens C45, этого старичка можно научить фокусам с GPRS и Java))))хотя я это себе плохо представляю хм, но вот поиздеваться над телефоном в доволь этому всегда рад) а по поводу телефона в качестве мыши, то это весьма реально, ибо в оптической мышки тоже есть маааленькая камера, вот было бы интересно, например щас подумал я, если бы….веб камеру можно было посадить на управляемые приводы….(автоматическое слежение за объектом) а реализовать это можно по средствам БЕАМ роботов, маленьких таких жучков на одной микросхеме….и сенсорными датчиками…а потом и PIC припаять…и прогу нашаманить….и….ну в прочем я увлекся…..
а вот еще одна))