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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 19:43   #41
Moraine93
Пользователь
 
Регистрация: 23.10.2016
Сообщений: 57
По умолчанию

вот что сейчас

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Menus;
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    PopupMenu1: TPopupMenu;
    Stolbec1: TMenuItem;
    N71: TMenuItem;
    N81: TMenuItem;
    N91: TMenuItem;
    N101: TMenuItem;
    Stroka1: TMenuItem;
    N72: TMenuItem;
    N82: TMenuItem;
    N92: TMenuItem;
    N102: TMenuItem;
    Reresech11: TMenuItem;
    StringGrid1: TStringGrid;
    procedure draw(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
      State: TGridDrawState);
    procedure menu_stolbec_8(Sender: TObject);
    procedure menu_stolbec_9(Sender: TObject);
    procedure menu_stolbec_7(Sender: TObject);
    procedure menu_stolbec_10(Sender: TObject);
    procedure menu_stroka_7(Sender: TObject);
    procedure menu_stroka_8(Sender: TObject);
    procedure menu_stroka_9(Sender: TObject);
    procedure menu_stroka_10(Sender: TObject);
    procedure dblclick(Sender: TObject);
    procedure Reresech11Click(Sender: TObject);

  //  procedure dblclik(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
   m,n:integer;

implementation

{$R *.dfm}
  procedure TForm1.menu_stolbec_7(Sender: TObject);

begin
n:=7;
   // Çàäàåì ÷èñëî ñòîëáöîâ òàáëèöû
   StringGrid1.ColCount := 8;
end;
procedure TForm1.menu_stolbec_8(Sender: TObject);

begin
n:=8;
   // Çàäàåì ÷èñëî ñòîëáöîâ òàáëèöû
  StringGrid1.ColCount := 9;
end;
   // Çàäàåì ÷èñëî ñòîëáöîâ òàáëèöû
  procedure TForm1.menu_stolbec_9(Sender: TObject);

begin
    n:=9;
     // Çàäàåì ÷èñëî ñòîëáöîâ  òàáëèöû
  StringGrid1.ColCount := 10;
end;
procedure TForm1.menu_stolbec_10(Sender: TObject);

begin
   n:=10;
     // Çàäàåì ÷èñëî ñòîëáöîâ  òàáëèöû
   StringGrid1.ColCount := 11;
end;
procedure TForm1.menu_stroka_7(Sender: TObject);

begin
m:=7;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 8;
 end;
procedure TForm1.menu_stroka_8(Sender: TObject);

begin
   m:=8;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 9;
end;
procedure TForm1.menu_stroka_9(Sender: TObject);

begin
m:=9;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 10;
end;
procedure TForm1.menu_stroka_10(Sender: TObject);
begin
   m:=10;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 11;
end;
  procedure TForm1.draw(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
  State: TGridDrawState);
  Var
strok, stolb: integer;
begin
//Âû÷èñëÿåì ÿ÷åéêè êîòîðûå íàì íàäî çàêðàñèòü
if not Odd(ACol) and (ARow = strok) and (ACol = stolb) then
with TStringGrid(Sender), Canvas do
begin
Brush.Color := clGreen; //Öâåò çàêðàñêè
rect.Left := rect.Left - 4; // Çàêðàñèòü è ðàìêó
rect.Bottom := rect.Bottom + 1; // Çàêðàñèòü è ðàìêó
FillRect(Rect); //Òåïåðü çàêðàñèì ÿ÷åéêè
end;
StringGrid1.Canvas.FillRect( Rect );
 StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
end;

 procedure TForm1.dblclick(Sender: TObject);

 begin
 // Çàäàåì ÷èñëî ñòîëáöîâ è ñòðîê òàáëèöû
   StringGrid1.ColCount := m;
   StringGrid1.RowCount := n;
// Çàäàåì øèðóíó è âûñîòó ÿ÷ååê
   StringGrid1.DefaultColWidth := 30;
   StringGrid1.DefaultRowHeight:= 30;
end;

procedure TForm1.Reresech11Click(Sender: TObject);
var
  r : array[0..255,0..255] of Integer;
  n, m, i, j, min, strok, stolb : integer;
begin
  strok :=0;
  stolb :=0;
  for I := 0 to n-1 do
    for j := 0 to m-1 do
      r[i,j] := Random(10); //çàïîëíÿåì ìàññèâ ñëó÷àéíûìè ÷èñëàìè äî 10
   min :=10;
   for I := 0 to n-1 do
      for j := 0 to m-1 do
        if r[i,j] < min then     //åñëè ýëåìåíò áîëüøå, ÷åì ÷èñëî â ïåðåìåííîé max
        begin
          min := r[i,j];         //çàïèñûâàåì â min ýòî ÷èñëî
          strok := i + 1;       //çàïèñûâàåì ñòðîêó â êîòîðé ìèíèìàëüíûé
          stolb := j + 1;      //çàïèñûâàåì ñòîãëáåö ñ ìèíèìàëüíûì ÷èñëîì
        end;
       // ShowMessage(ToString(min));    //âûâîäèì min
       //ShowMessage('ñòðîêà:' + stroka.ToString()+ ', ñòîëáåö' + stolbec.ToString());    //âûâîäèì ñòðîêó è ñòîëáåö ñ min ýëåìåíòîì

   end;
   end.
Moraine93 вне форума Ответить с цитированием
Старый 29.10.2016, 19:46   #42
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Так что, ты уже написала программу?

p.s.: рассказывай: "что да как".

Последний раз редактировалось ura_111; 29.10.2016 в 19:57.
ura_111 вне форума Ответить с цитированием
Старый 29.10.2016, 20:04   #43
Moraine93
Пользователь
 
Регистрация: 23.10.2016
Сообщений: 57
По умолчанию

еще немного переделала
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Menus;
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    PopupMenu1: TPopupMenu;
    Stolbec1: TMenuItem;
    N71: TMenuItem;
    N81: TMenuItem;
    N91: TMenuItem;
    N101: TMenuItem;
    Stroka1: TMenuItem;
    N72: TMenuItem;
    N82: TMenuItem;
    N92: TMenuItem;
    N102: TMenuItem;
    Reresech11: TMenuItem;
    StringGrid1: TStringGrid;
    procedure draw(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
      State: TGridDrawState);
    procedure menu_stolbec_8(Sender: TObject);
    procedure menu_stolbec_9(Sender: TObject);
    procedure menu_stolbec_7(Sender: TObject);
    procedure menu_stolbec_10(Sender: TObject);
    procedure menu_stroka_7(Sender: TObject);
    procedure menu_stroka_8(Sender: TObject);
    procedure menu_stroka_9(Sender: TObject);
    procedure menu_stroka_10(Sender: TObject);
    procedure dblclick(Sender: TObject);
    procedure Reresech11Click(Sender: TObject);

  //  procedure dblclik(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
 x, y, i, j,  m, n:integer;

implementation

{$R *.dfm}
  procedure TForm1.menu_stolbec_7(Sender: TObject);

begin
n:=7;
   // Çàäàåì ÷èñëî ñòîëáöîâ òàáëèöû
   StringGrid1.ColCount := 8;
   // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
procedure TForm1.menu_stolbec_8(Sender: TObject);

begin
n:=8;
   // Çàäàåì ÷èñëî ñòîëáöîâ òàáëèöû
  StringGrid1.ColCount := 9;
  // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
   // Çàäàåì ÷èñëî ñòîëáöîâ òàáëèöû
  procedure TForm1.menu_stolbec_9(Sender: TObject);

begin
    n:=9;
     // Çàäàåì ÷èñëî ñòîëáöîâ  òàáëèöû
  StringGrid1.ColCount := 10;
  // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
procedure TForm1.menu_stolbec_10(Sender: TObject);

begin
   n:=10;
     // Çàäàåì ÷èñëî ñòîëáöîâ  òàáëèöû
   StringGrid1.ColCount := 11;
   // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
procedure TForm1.menu_stroka_7(Sender: TObject);

begin
m:=7;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 8;
    // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
 end;
procedure TForm1.menu_stroka_8(Sender: TObject);

begin
   m:=8;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 9;
    // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
procedure TForm1.menu_stroka_9(Sender: TObject);

begin
m:=9;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 10;
    // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
procedure TForm1.menu_stroka_10(Sender: TObject);
begin
   m:=10;
   // Çàäàåì ÷èñëî ñòðîê òàáëèöû
    StringGrid1.RowCount := 11;
    // âûâîäèì ðåçóëüòàòû óìíîæåíèÿ â ÿ÷åéêè òàáëèöû
   for x := 1 to StringGrid1.ColCount - 1  do
    for y := 1 to StringGrid1.RowCount - 1 do
    StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
  procedure TForm1.draw(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
  State: TGridDrawState);
  Var
strok, stolb: integer;
begin
//Âû÷èñëÿåì ÿ÷åéêè êîòîðûå íàì íàäî çàêðàñèòü
if not Odd(ACol) and (ARow = strok) and (ACol = stolb) then
with TStringGrid(Sender), Canvas do
begin
Brush.Color := clGreen; //Öâåò çàêðàñêè
rect.Left := rect.Left - 4; // Çàêðàñèòü è ðàìêó
rect.Bottom := rect.Bottom + 1; // Çàêðàñèòü è ðàìêó
FillRect(Rect); //Òåïåðü çàêðàñèì ÿ÷åéêè
end;
StringGrid1.Canvas.FillRect( Rect );
 StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
end;

 procedure TForm1.dblclick(Sender: TObject);
//i, j, : integer;
 begin
// for I := 0 to n-1 do
   // for j := 0 to m-1 do
   //   r[i,j] :=Random(201)-100; //çàïîëíÿåì ìàññèâ ñëó÷àéíûìè ÷èñëàìè
// Çàäàåì ÷èñëî ñòîëáöîâ è ñòðîê òàáëèöû
   StringGrid1.ColCount := m;
   StringGrid1.RowCount := n;
// Çàäàåì øèðóíó è âûñîòó ÿ÷ååê
   StringGrid1.DefaultColWidth := 30;
   StringGrid1.DefaultRowHeight:= 30;
end;

procedure TForm1.Reresech11Click(Sender: TObject);
var
  r : array[0..255,0..255] of Integer;
 n, m, i, j, min, strok, stolb : integer;
begin
  strok :=0;
  stolb :=0;
   min :=-100;
   for I := 0 to n-1 do
      for j := 0 to m-1 do
        if r[i,j] > min then     //åñëè ýëåìåíò áîëüøå, ÷åì ÷èñëî â ïåðåìåííîé max
        begin
          min := r[i,j];         //çàïèñûâàåì â min ýòî ÷èñëî
          strok := i + 1;       //çàïèñûâàåì ñòðîêó â êîòîðé ìèíèìàëüíûé
          stolb := j + 1;      //çàïèñûâàåì ñòîãëáåö ñ ìèíèìàëüíûì ÷èñëîì
        end;
       // ShowMessage(ToString(min));    //âûâîäèì min
       //ShowMessage('ñòðîêà:' + stroka.ToString()+ ', ñòîëáåö' + stolbec.ToString());    //âûâîäèì ñòðîêó è ñòîëáåö ñ min ýëåìåíòîì

   end;
   end.
файл .exe не в ставляется
Вложения
Тип файла: rar Новая папка.rar (190.0 Кб, 7 просмотров)
Moraine93 вне форума Ответить с цитированием
Старый 29.10.2016, 20:09   #44
Moraine93
Пользователь
 
Регистрация: 23.10.2016
Сообщений: 57
По умолчанию

пытаюсь разобраться с раскраской и и минимальным числом
Moraine93 вне форума Ответить с цитированием
Старый 29.10.2016, 20:14   #45
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ты хотела сказать "минимальными числамИ".

Moraine93, а что у тебя в задании написано по поводу раскраски (сделай скрин-картинку).
ura_111 вне форума Ответить с цитированием
Старый 29.10.2016, 20:38   #46
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Поиск минимальных элементов.

0) Объявляешь глобальный массив "min[2][100]", где:

min[2][100] - здесь будет храниться "i" "j" мин.-х элементов.

Почему
min[2][100] - если вдруг все элементы матрицы "А" сгенерируют одинаковыми и равными "мин." (врятли, конечно такое возможно)

1) Находишь "мин." элемент по всей матрице (стандартный алгоритм), что-то вроде такого:

Код:
MINIMUM =A[0][0];
for...
for...
if(MINIMUM>A[i][j]) тогда MINIMUM =A[0][0];
3) Все элементы массива присваиваешь "-1" (min[2][100]=-1 (почему именно "-1"? дело в том, что в этом массиве хранятся индексы всех минимальных элементов, а индекс матрицы А[][] может равняться "0-лю", но не "-1" - этой отличительной чертой потом в draw воспользуесшя).

4) Заполняем массив min[2][100]. Что-то вроде такого:

Код:
k=0;
for...
for...
if(MINIMUM=A[i][j]) тогда 
{
min[1][k] =i; 
min[2][k] =j;
k=k+1;
}
Всё, должно получиться что-то вроде такого:


3.jpg


p.s.: но у тебя матрица А[n][m] не сформированная, чтобы в ней искать минимумы.
___________________________________ _____________________________

После чего по матрице min[2][100] (не даром она глобальная) рисуем в обработчике "procedure TForm1.draw...."

Что-то вроде такого:

if(min[0][ j ]== -1) тогда игнор,
иначе рисование "рамки" для ячеек.



p.s.: ты поняла меня?

Последний раз редактировалось ura_111; 29.10.2016 в 20:47.
ura_111 вне форума Ответить с цитированием
Старый 29.10.2016, 20:59   #47
Moraine93
Пользователь
 
Регистрация: 23.10.2016
Сообщений: 57
По умолчанию

а так не пойдет
Код:
var
  r : array[0..255,0..255] of Integer;
 n, m, i, j, min, strok, stolb : integer;
begin
  strok :=0;
  stolb :=0;
   min :=-100;
   for I := 0 to n-1 do
      for j := 0 to m-1 do
        if r[i,j] < min then     //åñëè ýëåìåíò áîëüøå, ÷åì ÷èñëî â ïåðåìåííîé 
        begin
          min := r[i,j];         //çàïèñûâàåì â min ýòî ÷èñëî
          strok := i + 1;       //çàïèñûâàåì ñòðîêó â êîòîðé ìèíèìàëüíûé
          stolb := j + 1;      //çàïèñûâàåì ñòîãëáåö ñ ìèíèìàëüíûì ÷èñëîì
        end;
Moraine93 вне форума Ответить с цитированием
Старый 29.10.2016, 21:01   #48
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Подожди, я код проанализирую.
ura_111 вне форума Ответить с цитированием
Старый 29.10.2016, 21:47   #49
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде проанализировал код (применительно к твоему заданию).

1) Сразу видны его переменные:
Код:
var
 r : array[0..255,0..255] of Integer;
 n, m, i, j, min, strok, stolb : integer;
1.1) Что такое массив "r"[255][255]? Это что аналог А[n][m]?
1.2) Почему он локальный? (может я что-то не понимаю в Делфи, но глобальные переменные описываются не здесь)... Выше по коду есть место (которое привлекло моё внимание):

Код:
procedure TForm1.dblclick(Sender: TObject);
//i, j, : integer;
 begin
// for I := 0 to n-1 do
   // for j := 0 to m-1 do
   //   r[i,j] :=Random(201)-100;
Это место, на удивление, соответствует твоему заданию... А почему оно зацементировано? (наверно: если ошибку компилятор выдаёт - значит надо комментировать). А может глобальным сделать да и всё...

1.3) У тебя массив "r" (он же "a") какой? Статический, тогда надо [10][10] задавать жестко, или динамический ("переменной" размерности). Это надо смотреть только в задании...

1.4) Этот код:

Код:
  strok :=0;
  stolb :=0;
   min :=-100;

   for I := 0 to n-1 do
      for j := 0 to m-1 do

        if r[i,j] > min then     
        begin
          min := r[i,j];         
          strok := i + 1;       
          stolb := j + 1
мне говорит: найти в матрице "r[n][m]" найти минимальный элемент и присвоить его локальной переменной "min" (и индексы "i, j" минимального элемента тоже сохранить в "strok, stolb").

Вопросы:

1.4а) Почему ищется 1-н минимальный элемент? У тебя в задании сказано: "Если в матрице находится несколько искомых значений, то все они выделяются требуемым образом.", т.е. предусмотреть вероятность нескольких минимальных элементов.

Ты понимаешь? В матрице "r" (она же "A") может быть минимальный = -7, но встречается в нескольких местах:

12.jpg

1.4б) Почему переменные "min, strok, stolb", которые характеризуют мин. элемент локальные (с полем видимости внутри процедуры
procedure "TForm1.Reresech11Click")? Ведь эта информация нужна при раскраске (в процедуре "draw")? Или красить будешь, сразу после поиска минимума, прям в процедуре Reresech11Click? А зачем тогда draw" нужен?

___________________________________ __________________

Внимательно прочитай и ответь на вопросы начиная с 1.1 и до 1.4б.
Что ты думаешь?
ura_111 вне форума Ответить с цитированием
Старый 29.10.2016, 21:58   #50
Moraine93
Пользователь
 
Регистрация: 23.10.2016
Сообщений: 57
По умолчанию

глобальный в смысле этот
multiArray : Array of Array of string; // Многомерный массив
или этот
openArray : Array [0..2] of char;
Moraine93 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программирование блок схема. пожалуйста, нарисуйте блок схему. очень срочно нужно! Bogdan96 Помощь студентам 4 22.09.2015 09:33
Pascal ABC(нарисуйте пожалуйста блок-схему, очень нужно) Deril Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2015 10:18
помогите пожалуйста написать решение задачи и блок схему к ней очень нужно( Alexandr1806 Помощь студентам 1 16.06.2014 22:31
помогите пожалуйста очень нужно решение задачки Satenka Microsoft Office Excel 4 28.05.2014 21:57
Нарисуйте пожалуйста блок-схему лёгкой задачки, не знаю как,очень нужно... prikolist Паскаль, Turbo Pascal, PascalABC.NET 2 28.11.2008 15:27