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

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

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

 
 Ответить  Открыть новую тему 
> минимальные елементы строк матрицы
Yurka
сообщение 8.12.2005 11:35
Сообщение #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 - 8.12.2005 11:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.12.2005 11:41
Сообщение #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 - 8.12.2005 11:48
 К началу страницы 
+ Ответить 
FreeMan
сообщение 8.12.2005 11:52
Сообщение #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 
 К началу страницы 
+ Ответить 
Yurka
сообщение 8.12.2005 12:53
Сообщение #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 
 К началу страницы 
+ Ответить 
Yurka
сообщение 8.12.2005 13:20
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.12.2005 13:25
Сообщение #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...
 К началу страницы 
+ Ответить 
Yurka
сообщение 8.12.2005 15:39
Сообщение #7


Пионер
**

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

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


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


а там в формуле число е в степени i-j smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.12.2005 16:14
Сообщение #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

 



- Текстовая версия 19.07.2025 18:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"