IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> минимальные елементы строк матрицы
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


мне нужно найти минимальные елементы строк матрицы
я написал процедуру, но метод по моему ужасный.
А упростить чё то не выходит...
вообщем вот эта процедура
 Procedure Vector(var a:mas; var x:mas1);
var
i,j,k,y,z:integer;
min1,min2,min3,min4,min5:real;

Begin
min1:=a[1,1];
for j:=1 to 5 do
begin
if (min1>a[1,j]) then min1:=a[1,j];
x[1]:=min1;
end;

min2:=a[2,1];
for j:=1 to 5 do
begin
if min2>a[2,j] then min2:=a[2,j];
x[2]:=min2;
end;

min3:=a[3,1];
for j:=1 to 5 do
begin
if min3>a[3,j] then min3:=a[3,j];
x[3]:=min3;
end;

min4:=a[4,1];
for j:=1 to 5 do
begin
if min4>a[4,j] then min4:=a[4,j];
x[4]:=min4;
end;

min5:=a[5,1];
for j:=1 to 5 do
begin
if min5>a[5,j] then min5:=a[5,j];
x[5]:=min5;
end;

for k:=1 to 5 do
writeln('x[',k,']=',x[k]);

End;

и её нужно упростить...

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А что такое mas и mas1, мы должны догадаться? Названия типов сами за себя не говорят, будь добр привести определения...

P.S. Есть кнопка CODE

P.P.S. Так проще?
Procedure Vector(var a:mas; var x:mas1);
var
i, j: integer;
min: real;
begin
for i := 1 to 5 do begin
min := a[i, 1];
for j:=2 to 5 do
if min > a[i,j] then min := a[i,j];
x[i]:=min;
end;

for i := 1 to 5 do
writeln('x[',i,']=',x[i]);
end;


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Procedure Vector(var a:mas; var x:mas1);
var
i,j:integer;


Begin
for i:=1 to 5 do x[i]:=a[i,1];
for i:=1 to 5 do for j:=1 to 5 do if a[i,j]<x[i] then x[i]:=a[i,j];
for i:=1 to 5 do
writeln('x[',i,']=',x[i]);

End;


М
FreeMan, она не откомпилируется...
Altair


Не заметил к сразу.


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Цитата
А что такое mas и mas1, мы должны догадаться? Названия типов сами за себя не говорят, будь добр привести определения...


вот полный текст програми
Условие
а) вычислить элементы квадратной матрицы i=1..5, j=1..5 (за заданой формулой, формулу не пишу она есть в программе, да и это не так важно), при этом нужно использовать процедуру
б) используя элементы матрицы вычислить элементы вектора x=|x|(i=1..5),
они должны быть равны минимальным элементам строк матрицы (использовать процедуру)
в)найти за формулой значение функции (использовать функцию)

Код

Program nomer28;
   uses crt;
       Type
        mas=array [1..5,1..5] of real;
        mas1=array [1..5] of real;

      Procedure Matrix( var a:mas);
      var
      i,j,y:integer;

       Begin
        for i:=1 to 5 do
        begin
        for j:=1 to 5 do
         begin
            y:=i-j;
            a[i,j]:=exp((-i)*ln(2))*(j-4.3)+(5*i+sin(i*j))/(exp(y*ln(2.71)));
            write('a[',i,',',j,']=',a[i,j]:2:2,'   ');
          end;
          writeln;
        end;
       End;

      Procedure Vector(var a:mas; var x:mas1);
      var
      i,j,k,y,z:integer;
      min1,min2,min3,min4,min5:real;

      Begin
         min1:=a[1,1];
         for j:=1 to 5 do
         begin
         if (min1>a[1,j]) then min1:=a[1,j];
         x[1]:=min1;
         end;

          min2:=a[2,1];
          for j:=1 to 5 do
          begin
          if min2>a[2,j] then min2:=a[2,j];
          x[2]:=min2;
          end;

          min3:=a[3,1];
          for j:=1 to 5 do
          begin
          if min3>a[3,j] then min3:=a[3,j];
          x[3]:=min3;
          end;

          min4:=a[4,1];
          for j:=1 to 5 do
          begin
          if min4>a[4,j] then min4:=a[4,j];
          x[4]:=min4;
          end;

          min5:=a[5,1];
          for j:=1 to 5 do
          begin
          if min5>a[5,j] then min5:=a[5,j];
          x[5]:=min5;
          end;

          for k:=1 to 5 do
          writeln('x[',k,']=',x[k]:2:2);

      End;

   Function G (x:mas1):real;
         var
         i,k:integer;
         S,d:real;
         Begin
         d:=1;
         S:=0;
         for i:=1 to 5 do
         begin
            begin
              for k:=1 to i do
              d:=d*(sqr(k)-x[k]);
            end;
           S:=S+d/(2.3*i+x[i]);
         end;
         G:=S;
         End;


          VAR
          b:mas;
          x1:mas1;
          i,j:integer;

          BEGIN
          clrscr;
          matrix(b);
          writeln;
          vector(b,x1);
          writeln;
          writeln('G=',G(x1):2:4);
          readkey;
          END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


всё работает, good.gif
VOLVO я вставил твой алгоритм
Код
Program nomer28;
  uses crt;
      Type
       mas=array [1..5,1..5] of real;
       mas1=array [1..5] of real;

     Procedure Matrix( var a:mas);
     var
     i,j,y:integer;

      Begin
       for i:=1 to 5 do
       begin
       for j:=1 to 5 do
        begin
           y:=i-j;
           a[i,j]:=exp((-i)*ln(2))*(j-4.3)+(5*i+sin(i*j))/(exp(y*ln(2.71)));
           write('a[',i,',',j,']=',a[i,j]:2:2,'   ');
         end;
         writeln;
       end;
      End;

   Procedure Vector(var a:mas; var x:mas1);
var
 i, j: integer;
 min: real;
begin
 for i:=1 to 5 do begin
   min:=a[i, 1];
   for j:=2 to 5 do
     if min>a[i,j] then min:=a[i,j];
   x[i]:=min;
 end;
 for i := 1 to 5 do
   writeln('x[',i,']=',x[i]:2:2);
end;

  Function G (x:mas1):real;
 var
        i,k:integer;
        S,d:real;
        Begin
        d:=1;
        S:=0;
        for i:=1 to 5 do
        begin
           begin
             for k:=1 to i do
             d:=d*(sqr(k)-x[k]);
           end;
          S:=S+d/(2.3*i+x[i]);
        end;
        G:=S;
        End;


         VAR
         b:mas;
         x1:mas1;
         i,j:integer;

         BEGIN
         clrscr;
         matrix(b);
         writeln;
         vector(b,x1);
         writeln;
         writeln('G=',G(x1):2:4);
         readkey;
         END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Yurka, blink.gif Не понял, в чем смысл выражения:
Цитата
a[i,j]:=exp((-i)*ln(2))*(j-4.3)+(5*i+sin(i*j))/(exp(y*ln(2.71)));

? оно же равно 1...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Цитата
Yurka,  Не понял, в чем смысл выражения:


а там в формуле число е в степени i-j smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ну, тогда должно быть просто:
a[i,j]:=exp((-i)*ln(2))*(j-4.3)+(5*i+sin(i*j))/exp(i-j);
Зачем же лишние переменные и вычисления? Exp(x) это и есть e^x
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 22:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name