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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 14:06   #1
asd-uk
 
Регистрация: 16.03.2010
Сообщений: 4
Вопрос завтра сдавать, а как делать понятия не имею

помогите кто сможет!!

1.
Составить программу, которая организует ввод матрицы размерностью 5х5
и заменяет значения диагональных элементов суммами элементов соответствующих
столбцов. нужно с делать на форме через String Grid...
2.
Создать новый класс компонентов для ввода чисел. При вводе
отрицательного числа компонент должен отображать данные без знака минус, но красным
цветом. тоже на форме...
asd-uk вне форума Ответить с цитированием
Старый 01.04.2010, 14:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
2.
Создать новый класс компонентов для ввода чисел. При вводе
отрицательного числа компонент должен отображать данные без знака минус, но красным
цветом. тоже на форме...
Подсказываю.
Код:
   private
    i:integer;
    procedure OnPaint(var m:TWMPaint); message  WM_PAINT;
    procedure _onChange(Sender:TObject);
   Public
    constructor Create(AOwner:TComponent); override;
  end;
Это класс компонента
Код:
{ TEdit }

constructor TEdit.Create(AOwner: TComponent);
begin
  inherited;
  OnChange:=_onChange;
end;

procedure TEdit.OnPaint(var m: TWMPaint);
begin
 if TryStrToInt(Text,i) and (i<0) then
  Font.Color:=clRed else Font.Color:=clBlack;
 inherited;
end;

procedure TEdit._onChange(Sender: TObject);
begin
 Repaint;
end;
Это его реализация.

Твоя задача:
1) Оформить это в виде компонента
2) Добавить в отрисовку отсечение минуса


Теперь насчет первой:

Кинь на форму кнопку и грид
В событии OnCreate формы напиши:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var i,k:integer;
begin
 for i:=0 to 5 do
  for k:=0 to 5 do
   StringGrid1.Cells[i,k]:=IntToStr(random(100));
end;
И в событии клика кнопки
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,k,e:integer;
begin
 for i:=0 to 5 do begin
  for k:=0 to 5 do e:=StrToInt(StringGrid1.Cells[i,k])+e;
   StringGrid1.Cells[i,i]:=IntToStr(e);
 end;
end;
I'm learning to live...

Последний раз редактировалось Stilet; 01.04.2010 в 14:26.
Stilet вне форума Ответить с цитированием
Старый 01.04.2010, 14:38   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Задача №1 решается так...
Код:
Const
  N=4;
Var
  i,j:byte;
  Sum:word;
  A:array[0..N,0..N] of byte;

begin
  //заполняем массив рандомно...
  Randomize;
  for j:=0 to N do
    for i:=0 to N do
      A[j,i]:=random(100);
  //а теперь подсчитываем сумму элементов столбцов и меняем диагональные элементы на сумму...
  for i:=0 to N do
    begin
      Sum:=0;
      for j:=0 to N do
        Sum:=Sum+A[j,i];
      A[i,i]:=Sum;
      A[N-i,i]:=Sum
    end;     
end;
Ну, а уж оформить это все в StringGrid - сам пожалуйста...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 01.04.2010 в 14:57.
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы завтра сдавать пожалуйсти Arei17 Фриланс 10 19.02.2010 19:26
Помогите((( Завтра сдавать!!!(( ApXoH Паскаль, Turbo Pascal, PascalABC.NET 5 05.05.2009 23:35
Помогите! Мне завтра сдавать!!! Loren Помощь студентам 1 24.02.2009 15:49
помогите срочно завтра сдавать... Defer Помощь студентам 2 25.01.2009 20:01