Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 19.12.2019, 12:05   #1 (permalink)
Immortalix
Новичок
 
Регистрация: 19.12.2019
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Получить вектор

Для той из матриц, в которой меньше среднее арифметическое элементов, для которых значение f(xij) неотрицательно, получить вектор y по правилу: yj = 0, если в j-ом столбце матрицы есть хотя бы один отрицательный элемент, иначе yj = 1. Для другой матрицы найти максимальный элемент. Задание необходимо выполнить для двух вариантов функции f – в качестве первого варианта берём f(x) = x для того, чтобы было легко проверить правильность работы программы, в качестве второго – любую другую функцию одного аргумента (например, sin(x) + cos(x))
Immortalix вне форума   Ответить с цитированием

Старый 19.12.2019, 12:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Скорее всего тут можно найти ответ

Вектор указателей на объекты класса
Ввести матрицу в вектор

Старый 19.12.2019, 13:51   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А то, что бывают на свете разные языки программирования, Вы в курсе? И то, что, обращаясь за помощью, необходимо язык, на котором нужно выполнить задание, указывать, Вы не догадываетесь?
Vladimir_S вне форума   Ответить с цитированием
Старый 19.12.2019, 13:53   #3 (permalink)
Hacker
Member
 
Аватар для Hacker
 
Регистрация: 15.08.2006
Сообщений: 10,666
Записей в дневнике: 6
Сказал(а) спасибо: 0
Поблагодарили 21 раз(а) в 9 сообщениях
Репутация: 16510
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
на свете разные языки программирования
вот как с языка сорвал... я тоже сижу и гадаю, в чём он пишет
Hacker вне форума   Ответить с цитированием
Старый 19.12.2019, 14:04   #4 (permalink)
Immortalix
Новичок
 
Регистрация: 19.12.2019
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

я думал если в метках указать, то уже будет понятно, PascalABC это
Immortalix вне форума   Ответить с цитированием
Старый 19.12.2019, 14:47   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Immortalix Посмотреть сообщение
я думал если в метках указать, то уже будет понятно, PascalABC это
Ох, простите великодушно, на метки не глянул. Как-то привык к тому, что люди указывают язык явно.
Впрочем, понятнее не стало.
Проясните, пожалуйста, вот этот пассаж:
Цитата:
Сообщение от Immortalix Посмотреть сообщение
Для той из матриц, в которой меньше среднее арифметическое элементов, для которых значение f(xij) неотрицательно, получить вектор y по правилу: yj = 0, если в j-ом столбце матрицы есть хотя бы один отрицательный элемент, иначе yj = 1. Для другой матрицы найти максимальный элемент.
Т.е. исходно должны быть две матрицы, так? И где их взять? Или им соответствуют эти самые "два варианта функции"? Но непохоже: это вроде как только для тестирования программы (простая и сложная функции). Тогда как обеспечить выбор из двух матриц?
Мутно сформулировано.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.12.2019, 10:55   #6 (permalink)
Immortalix
Новичок
 
Регистрация: 19.12.2019
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Эти две матрицы мы составляем сами, путём ввода их из файла.
Immortalix вне форума   Ответить с цитированием
Старый 20.12.2019, 14:24   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Значит, так.

1. Ни ABC, ни тем более ABC Net, у меня нету, поэтому программа написана на Turbo (Free) Pascal; впрочем, не думаю, что это существенно.

2. Вы не соблаговолили выложить хотя бы примеры матриц для считывания и обработки, и я даже не в курсе:
– какова их размерность?
– одинаковый у них размер или разный?
– квадратные они или прямоугольные?
а тянуть из Вас информацию, извините, "клещами" — с какой стати?

Поэтому в программе принято:
1. Обе матрицы — квадратные, размерности NхN.
2. Поскольку файл с матрицами не предоставлен, в программе применена генерация случайных чисел.
3. При вычислении средних арифметических предполагается, что в обеих матрицах есть хотя бы один элемент, для которого выполняется условие f(x[i,j])>0; защита от невыполнения этого предположения в программе не предусмотрена (при невыполнении возникает деление на 0).

Вроде всё.

Код:
Const
 N=5; {Matrix dimension}

Type
 Ar=Array[1..N,1..N] of real;
 Vc=Array[1..N] of Integer;

Var
 i,j,func_num:Integer;
 M1,M2:Ar;
 Y:Vc;
 Ar_m1, Ar_m2, Maximal:Real;


Function f1(x:real):real;
begin
 f1:=x;
end;

Function f2(x:real):real;
begin
 f2:=Sin(x)+Cos(x);
end;

Function f(x:real;vr:integer):real;
begin
 if vr=1 then f:=f1(x) else f:=f2(x);
end;

Function Arithmetic_mean(Z:Ar;vr:integer):Real;
var
 p,q,El_num:integer;
 Sum:Real;
begin
 Sum:=0;
 El_num:=0;
 for p:=1 to N do
  for q:=1 to N do
   if f(Z[p,q],vr)>=0 then
    begin
     Inc(El_num);
     Sum:=Sum+Z[p,q];
    end;
 Arithmetic_mean:=Sum/El_num;
end;

Procedure Vect_form(Z:Ar; var Vz:Vc);
var
 p,q:Integer;
 b:boolean;
begin
 for q:=1 to N do
  begin
   b:=false;
   for p:=1 to N do
    if Z[p,q]<0 then b:=true;
   if b then Vz[q]:=0 else Vz[q]:=1;
  end;
end;

Function Max_el(Z:Ar):Real;
var
 p,q:integer;
 Mx:Real;
begin
 Mx:=Z[1,1];
 for p:=1 to N do
  for q:=1 to N do
   if Z[p,q]>Mx then Mx:=Z[p,q];
 Max_el:=Mx;
end;

Begin
 Randomize;
 for i:=1 to N do
  for j:=1 to N do
   begin
    M1[i,j]:=(-0.5+Random)*6;
    M2[i,j]:=Sqr((-0.5+Random)*3);
   end;

 Writeln('Matrix1:');
 for i:=1 to N do
  begin
   for j:=1 to N do write(M1[i,j]:8:3);
   writeln;
  end;
 Writeln;

 Writeln('Matrix2:');
 for i:=1 to N do
  begin
   for j:=1 to N do write(M2[i,j]:8:3);
   writeln;
  end;
 Writeln;

 Writeln('Press "Enter" to continue...');
 Readln;

 Write('Choose the function: 1 - f(x)=x, 2 - f(x)=Sin(x)+Cos(x) ');
 Readln(func_num);
 Writeln;

 Ar_m1:=Arithmetic_mean(M1,func_num);
 Ar_m2:=Arithmetic_mean(M2,func_num);
 If Ar_m1<Ar_m2 then
  begin
   Vect_form(M1,Y);
   Maximal:=Max_El(M2);
   Writeln('Vector (Matrix1):');
   for j:=1 to N do write(Y[j]:2);
   Writeln;
   Writeln('Maximal element (Matrix2):');
   Writeln(Maximal:8:3);
  end
 else
  begin
   Vect_form(M2,Y);
   Maximal:=Max_El(M1);
   Writeln('Vector (Matrix2):');
   for j:=1 to N do write(Y[j]:2);
   Writeln;
   Writeln('Maximal element (Matrix1):');
   Writeln(Maximal:8:3);
  end;
 Readln;
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
pascalabcnet

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:41.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.