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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2014, 16:24   #1
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию Матрицы.Delphi.

Здравствуйте,господа)Сейчас прохожу тему:«Создание программ с использованием процедур и функций»

Задание.Пользуясь функцией нахождения числа положительных элементов матрицы, найти y= z-x, где z - число положительных элементов матрицы A, х - число положительных элементов матрицы B. Считать, что матрицы имеют одинаковую размерность.

Вот просто разница матриц(архив).

Задание не слишком понятно.
1.Сначала я должен написать функцию(function():тип) нахождения числа положительных элементов матрицы?Или где ее взять,если написано "пользуясь"?
2.Вот это не ясно: "где z - число положительных элементов матрицы A, х - число положительных элементов матрицы B".Ну нашли мы "+" элементы,их отняли,а с "-" элементами что делать?

Помогите пожалуйста решить задание.
Вложения
Тип файла: rar 2-e.rar (188.1 Кб, 8 просмотров)
tane вне форума Ответить с цитированием
Старый 02.02.2014, 16:51   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

1) Именно написать. Просто авторы условия настаивают на вынесении этого функционала в отдельную функцию.
2) Мы ищем количество положительных элементов в одной и во второй матрицах и просто вычитаем из одного числа другое.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.02.2014, 22:49   #3
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Или задание тупое или я не понимаю.Нам нужно найти не положительные элементы,а их КОЛИЧЕСТВО?(например,матрица А 3х3,там 4 "-" эл-а.В матрице В - 2 отрицательных
элемента.
И мы просто делаем 4-2=2.Так я понимаю?
tane вне форума Ответить с цитированием
Старый 02.02.2014, 23:20   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Да, так, только считаем количество не отрицательных, а положительных, если исходить из задания.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.02.2014, 23:39   #5
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Так мы ищем количество положительных элементов?
Код:
function TForm1.KolEL: Integer;
const n=3;
var
  a,b: array[1..n,1..n] of Real;
  kol,kol1,c, i, j:integer;
begin
 for i:=1 to n do
 for j:=1 to n do
  begin
   a[i,j]:=StrToFloat(StringGrid1.Cells[j-1,i-1]);
   b[i,j]:=StrToFloat(StringGrid2.Cells[j-1,i-1]);
   if a[i,j]>0 then kol:=kol+1;
   if b[i,j]>0 then kol1:=kol1+1;
  end;
    for i:=1 to n do
    for j:=1 to n do
   begin
     
   c:=kol-kol1;
   
    end;
    end;
tane вне форума Ответить с цитированием
Старый 02.02.2014, 23:48   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

А зачем c:=kol-kol1; в двойном цикле?
c:=kol-kol1; и есть ответ, только авторы хотели отдельную функцию для подсчета количества положительных (чтобы выработать навыки написания функций). Не забудьте инициализировать kol и kol1 нулевыми значениями.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.02.2014, 23:52   #7
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Т.е сама функция вот это?
Код:
function TForm1.KolEL: Integer;
const n=3;
var
  a,b: array[1..n,1..n] of Real;
  kol,kol1,c, i, j:integer;
begin
 for i:=1 to n do
 for j:=1 to n do
  begin
   a[i,j]:=StrToFloat(StringGrid1.Cells[j-1,i-1]);
   b[i,j]:=StrToFloat(StringGrid2.Cells[j-1,i-1]);
   if a[i,j]>0 then kol:=kol+1;
   if b[i,j]>0 then kol1:=kol1+1;
  end;
А как нам ее использовать для подсчета с помощью кнопки?
Напишите пожалуйста код.
tane вне форума Ответить с цитированием
Старый 03.02.2014, 00:45   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

В данном случае, в процедуре нажатия кнопки нужно заполнить два массива и вызвать функцию подсчета (с одной стороны получается лишняя работа, но с другой, нужно же ведь удовлетворить условию задачи).
Код:
const
  n = 3;
type
  mas = array [1..n, 1..n] of real;

function count_positive(const a: mas): integer;
//объявление всех нужных переменных
begin
  //здесь код подсчета
  result := 0;
end;

procedure tform1.button1click(sender: tobject);
//объявление всех нужных переменных
begin
  //заполнение массивов
  label1.caption := inttostr(count_positive(a) + count_positive(b));
end;
Это заготовка. Чуть допишите и получите рабочий код.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 03.02.2014, 01:21   #9
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Спасибо большое!
tane вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задана матрица Am*n . Найти максимальный по модулю элемент матрицы. Переставить строки и столбцы матрицы (в Delphi) Natashakosmos Помощь студентам 3 12.01.2014 00:28
Delphi.Матрицы! specnazkin Помощь студентам 5 04.12.2010 22:47
Delphi. Матрицы Lee_P Помощь студентам 2 21.05.2010 23:09
delphi (матрицы) Polusha Помощь студентам 1 25.12.2009 16:14
Матрицы(Delphi 7) matrix8325 Помощь студентам 1 27.04.2009 01:25