Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
55 / 53 / 24
Регистрация: 10.05.2009
Сообщений: 216
1

Матрица

27.09.2009, 17:45. Показов 1393. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые эксперты! Помогите с написанием программы.. Задание следующее:Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые, и значение 1 в противном случае. Вот то что у меня получилось:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const MaxSize=20;
 
var
  Form1: TForm1;
  Line,Column:integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  Line:=StrToInt(Edit1.Text);
  Column:=StrToInt(Edit2.Text);
  StringGrid1.RowCount:=Line+1;
  StringGrid1.ColCount:=Column+1;
  StringGrid2.RowCount:=Line+1;
  for i:=1 to Line do
    StringGrid1.Cells[0,i]:='Строка №'+IntToStr(i);
  for i:=1 to Column do
    StringGrid1.Cells[i,0]:='Столбец №'+IntToStr(i);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var Matrix:array[1..MaxSize,1..MaxSize] of extended;
    Massiv:array[1..MaxSize] of integer;
    Summ:extended;
    i,j:integer;
begin
  for i:=1 to Line do
    for j:=1 to Column do
      Matrix[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
  for i:=1 to Line do
    begin
      Summ:=0;
      for j:=1 to Column do
        Summ:=Summ+Matrix[i,j];
      if Summ=0 then
        Massiv[i]:=0
      else
        Massiv[i]:=1;
    end;
  for i:=1 to Line do
    StringGrid2.Cells[0,i]:=IntToStr(Massiv[i]);
end;
 
end.
Ошибка в следующем, после ввода кол-ва строк и столбцов, нужно ввести матрицу, но поля StringGrid не заполняются Помогите исправить, или скажите в чем моя ошибка..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2009, 17:45
Ответы с готовыми решениями:

Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной
Дана квадратная матрица А порядка n. Проверьте, является ли матрица единичной. Описать с помощью...

Матрица
Исправьте код procedure TForm1.Button2Click(Sender: TObject); var sovpad,i,j,N,x,y :integer;...

Матрица
Уважаемые программисты помогите пожалуйста написать код чтобы на форме выводилась матрица размером...

Матрица
В матрице А(7x7) поменять местами максимальные элементы главной и побочной диогонали. Помогите...

9
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,162
Записей в блоге: 24
27.09.2009, 18:51 2
Как я понял, по нажатию на первую кнопку таблица подстраивается по размерам под введенные размеры в эдиты. А по второй кнопке идет подсчет. Нужно, чтобы пользователь ввел в таблицу данные между двумя кликами. Включи в свойство Options твоего стринггрида пункт goEditing (StringGrid1.Options:=StringGrid1.Options+[goEditing]). Тогда пользователь сможет заполнить все поля. Или поставь генерацию на рандоме по первой кнопке.
Эти два пункта вроде прозрачно понятны.
1
55 / 53 / 24
Регистрация: 10.05.2009
Сообщений: 216
27.09.2009, 19:01  [ТС] 3
Спасибо Вам, а не могли бы Вы пояснить
Включи в свойство Options твоего стринггрида пункт goEditing (StringGrid1.Options:=StringGrid1.Options+[goEditing])
Что это дает? Я просто только начал изучать Delphi..
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
27.09.2009, 19:04 4
Цитата Сообщение от S2dent Посмотреть сообщение
Что это дает?
Это дает возможность вводить данные в таблицу и редактировать их.
1
55 / 53 / 24
Регистрация: 10.05.2009
Сообщений: 216
08.10.2009, 18:20  [ТС] 5
Здравствуйте, уважаемые эксперты. Не стал создавать новую тему, т.к. вопрос будет по этой программе. Решил добавить в программу возможность рандомного заполнения матрицы через CheckBox, и тут столкнулся с проблемой Пользователь переходит к заполнению матрицы нажав на кнопку Button2, но если ее заполнять рандомом, то соответственно на нее нажимать не надо, и я не знаю, как избавиться от необходимости ее нажатия.. Подскажите как это можно сделать
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.10.2009, 18:35 6
Просто поставьте 2 Чекбокса, 1- заполнять вручную, 2- рандомно.
В событии кнопки будет
if CheckBox1.Checked then вручную
if CheckBox2.Checked then рандомно
1
55 / 53 / 24
Регистрация: 10.05.2009
Сообщений: 216
08.10.2009, 18:38  [ТС] 7
Спасибо, щас посмотрю что из этого у меня получится.. И вот еще вопросик, если таже кнопка Button2 не нужна, то хорошо бы было ее скрыть, чтобы она не мазолила глаза пользователю.. А как это можно сделать?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.10.2009, 19:06 8
А почему она не нужна? А как Вы рандомно будете матрицу создавать? Но если точно не нужна какое-то время, то в обработчике события, который ее заменяет написать
Button2. Enabled:=false, или вообще
Button2.Visible:=false
Тогда гдето, возможно там же после выполнения определенных действий вернуть этим свойствам true.
1
55 / 53 / 24
Регистрация: 10.05.2009
Сообщений: 216
09.10.2009, 18:25  [ТС] 9
И снова здравствуйте уважаемые экперты. Вот попытался организовать задуманное мной, но программа начала выдавать вообще не понятные результаты Прошу помощи в исправлении ошибки, сам проект во вложении
Вложения
Тип файла: rar Матрица.rar (190.6 Кб, 31 просмотров)
0
55 / 53 / 24
Регистрация: 10.05.2009
Сообщений: 216
09.10.2009, 18:45  [ТС] 10
При рандомном заполнении в искомый массив выводятся всегда 1, не зависимо от исходной матрицы.. Да и при ручном заполнении что-то не так считается.. Массив должен заполняться исходя из столбцов, а заполняется по сумме строк
0
09.10.2009, 18:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2009, 18:45
Помогаю со студенческими работами здесь

Матрица
Delphi Дано число n(0<k<11) и матрицу размера NxM. Найти сумму и произведение элементов n-го...

Матрица
Здравствуйте я выложил задание во вложение ()изображение). Спасибо за ранее.

Матрица
вот я написал код, где на главной диагонали должны быть 0, а в остальных случаях 1. var var ...

матрица
Подскажите пожалуйста матрица не хочет работать с дробными числами? С целыми работает в чем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru