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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2012, 15:45   #1
Маленыч
Пользователь
 
Аватар для Маленыч
 
Регистрация: 04.04.2012
Сообщений: 23
По умолчанию Задана матрица размером NxM. Определить k – количество “особых” элементов матрицы, считая элемент “особым”, если он больше суммы о

Здраствуйте!
Прошу прощения за ошибку в заголовке, так как изменить его уже не могу. Задание другое.
Возникли ошибки при выполнении программы. Задание следующее:
Цитата:
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0 в противном случае.
Если установленно количество строк = количество столбцов все выполняется превосходно, но если количество столбцов превышает количество строк, происходит ошибка.
Текст программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

const
  MaxSize=10;
type
  TForm1 = class(TForm)
    lblN: TLabel;
    lblM: TLabel;
    edtN: TEdit;
    edtM: TEdit;
    btnNxM: TButton;
    strngrdA: TStringGrid;
    strngrdB: TStringGrid;
    btnRes: TButton;
    lblErr: TLabel;
    mmo1: TMemo;
    procedure btnNxMClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnResClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i:Integer;
begin
  for i:=1 to strtoint(edtN.Text) do
    begin
      strngrdA.cells[0,i]:='i='+FloatToStr(I);
      strngrdB.cells[0,i]:='i='+FloatToStr(I);
    end;
  for i:=1 to strtoint(edtM.Text) do
    strngrdA.cells[i,0]:='j='+FloatToStr(I);
end;

procedure TForm1.btnNxMClick(Sender: TObject);
var
  i:Integer;
begin
  strngrdA.RowCount:=StrToInt(edtN.Text)+1;
  strngrdA.ColCount:=StrToInt(edtM.Text)+1;
  strngrdB.RowCount:=StrToInt(edtN.Text)+1;
  strngrdB.ColCount:=StrToInt(edtM.Text)+1;
  for i:=1 to strtoint(edtN.Text) do
    begin
      strngrdA.cells[0,i]:='i='+FloatToStr(I);
      strngrdB.cells[0,i]:='i='+FloatToStr(I);
    end;
  for i:=1 to strtoint(edtM.Text) do
    strngrdA.cells[i,0]:='j='+FloatToStr(I);
end;



procedure TForm1.btnResClick(Sender: TObject);
var
  i,j,k,n,m,save:integer;
  a,b:array [1..MaxSize,1..MaxSize] of Extended;
begin
  n:=strngrdA.RowCount-1;
  m:=strngrdA.ColCount-1;
  for j:=1 to m do
    for i:=1 to n do
      a[i,j]:=StrToFloat(strngrdA.cells[i,j]);
  for i:=1 to n do
    begin
      save:=1;
      k:=m;
      for j:=1 to m do
        begin
          if a[j,i]<>a[k,i] then
            begin
              save:=0;
              break;
            end;
          Dec(k);
        end;
      strngrdB.cells[1,i]:=IntToStr(save);
    end;
end;

end.
Скриншот:



Программа (rar архив, файл проекта - Project1): http://programmersforum.ru/attachmen...1&d=1350819846

Прошу помочь разобраться с данной проблемой.
Спасибо.
Изображения
Тип файла: jpg 1.jpg (17.0 Кб, 334 просмотров)
Вложения
Тип файла: rar Программа.rar (190.6 Кб, 133 просмотров)

Последний раз редактировалось Маленыч; 21.10.2012 в 16:24. Причина: Неверный заголовок
Маленыч вне форума Ответить с цитированием
Старый 23.10.2012, 15:34   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
for j:=1 to m do
    for i:=1 to n do
      a[i,j]:=StrToFloat(strngrdA.cells[i,j]);
в стрингриде, насколько я помню, сперва идет количество столбцов, а затем строк... помню точно, что если пишется a[i,j] то будет cells[j,i]... поиграйся с индексами...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 09.11.2012, 06:14   #3
dementar
Новичок
Джуниор
 
Регистрация: 09.11.2012
Сообщений: 1
По умолчанию

for j:=1 to m do
for i:=1 to n do

поменяй местами m и n
dementar вне форума Ответить с цитированием
Старый 20.05.2013, 00:08   #4
pis_an
 
Регистрация: 17.05.2013
Сообщений: 4
По умолчанию

Задана матрица размером NxM. Определить k – количество “особых” элементов матрицы, считая элемент “особым”, если он больше суммы остальных элементов своего столбца.

ПОМОГИТЕ, ПОЖАЛУЙСТА!!!
pis_an вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить максимальный элемент произвольно заданной матрицы В размером n×n элементов . Обнулить все элементы строки и столбца amorousmaniac Помощь студентам 2 16.12.2011 06:41
матрица размером NxM. Упорядочить ее столбцы по невозрастанию их наибольших элементов (в Delphi) virgin_sova Помощь студентам 0 28.06.2011 22:22
Задана символьная матрица размером NxM Sergey Zhlobo Общие вопросы Delphi 5 21.06.2011 00:12