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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2015, 18:20   #1
Fredoom
Новичок
Джуниор
 
Регистрация: 10.11.2015
Сообщений: 6
Вопрос

Разработать программу решения первых двух из четырех взаимосвязанных задач работы:
1) расчета элементов квадратной матрицы A = (ai,j ), i,j = 1,2,...,n по заданной формуле;
2) вычисления элементов вектора X = (xi), i = 1,2,...,n по заданному правилу;



Условие задачи:

Вот моя неверная программа, даже вывод неисправен. Прошу посмотрите и помогите исправить.

Код:
program prim4;
type Vect=array[1..n]of real;  
      Matr=array[1..n,1..n] of real;
      
var A: Matr;
   x: Vect;
   
  
procedure Matrica(n:integer; var A:Matr);
var i,j: integer;
Begin
   for i:=1 to n do 
   for j:=1 to n do
     A[j,i]:=abs(2.7-i)*exp(ln(2)*(-j));
     end;
     
procedure Vector(n:integer; A:Matr; var X:Vect);
var i,j:integer;
Begin
   for j:=1 to n do begin 
   X[j]:=0.0;
for i:=1 to n do
X[j]:=x[j]+A[i,j]*A[i,n-i+1]; end; 
end;

Procedure PORJADOK(N:integer; var A:matr); 
var i,j,k,m,l: integer; 
            max,S : real;
Begin
for i:=1 to n do begin
if i mod 2=0 then for k:=1 to m do begin
max:=a[i,k];
for j:=k to m do
if a[i,j]>max then
begin max:=A[i,j]; l:=j;
S:=A[i,k];
A[i,k]:=max;
A[i,l]:=S end; end;
end;

begin      
write('n=  ');readln(n); 
writeln;writeln(' ':25,'Исходные данные:'); 
 writeln('Размер квадратного массива n = ',n);                        
  writeln(' ':26,'Результаты расчета'); 
    writeln(' матрица А: ');
    MATRICA(n,A);
for j:=1 to n do begin                        
for i:=1 to n do
write(A[i,j]); 
 end; 			

VECTOR(N,A,X);			   
  writeln(' Элементы вектора Х: ');
for i:=1 to n do                                  
write(x[i]);	
end;	   

PORJADOK(N,A); 			    
 writeln(' Упорядоченная матрица:');
for i:=1 to n do begin		     
for j:=1 to n do
write(A[i,j]);
 readln;
 end;
end.
Вложения
Тип файла: docx УСЛОВИЕ ЗАДАЧИ .docx (16.7 Кб, 9 просмотров)

Последний раз редактировалось Аватар; 11.11.2015 в 20:18.
Fredoom вне форума Ответить с цитированием
Старый 11.11.2015, 19:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
program prim4;

type Vect=array[1..1000]of real;  
      Matr=array[1..1000,1..1000] of real;
      
var A: Matr;
   x: Vect;
   
  
procedure Matrica(n:integer; var A:Matr);
var i,j: integer;
Begin
   for i:=1 to n do 
    for j:=1 to n do
     A[j,i]:=abs(2.7-i)*exp(ln(2)*(-j));
end;
     
procedure Vector(n:integer; A:Matr; var X:Vect);
var i,j:integer;
Begin
   for j:=1 to n do X[j]:=0.0;
   for i:=1 to n do X[j]:=x[j]+A[i,j]*A[i,n-i+1]; 
end;

procedure out(N:integer; var A:matr); var i,j:integer;
begin
 for j:=1 to n do begin                        
  for i:=1 to n do write(A[i,j]:5:2); 
  writeln;
 end; 
end;

Procedure PORJADOK(N:integer; var A:matr); 
var i,j,k,l: integer; 
Begin
 l:=2; while (l<=n) do begin
  for i:=1 to n do for j:=1 to n do if A[l,i]<A[l,j] then begin
    k:=A[l,i];A[l,i]:=A[l,j];A[l,j]:=k;
  end;
  inc(l,2);
 end;
end;

begin      
write('n=  ');readln(n); 
writeln(' ':25,'Исходные данные:'); 
 writeln('Размер квадратного массива n = ',n);                        
  writeln(' ':26,'Результаты расчета'); 
    writeln(' матрица А: ');
    MATRICA(n,A);
     out(n,a);		

VECTOR(N,A,X);			   
  writeln(' Элементы вектора Х: ');
   for i:=1 to n do  write(x[i]:5:2);	


PORJADOK(N,A); 			    
 writeln(' Упорядоченная матрица:');
  out(n,a);

 readln;
end.
Так лучше?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2015, 22:55   #3
Fredoom
Новичок
Джуниор
 
Регистрация: 10.11.2015
Сообщений: 6
По умолчанию

Внес некоторые поправки к вашей программе и все заработало. Спасибо огромное за уделенное мне время!
Fredoom вне форума Ответить с цитированием
Старый 11.11.2015, 23:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Да не за что
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2015, 23:03   #5
Fredoom
Новичок
Джуниор
 
Регистрация: 10.11.2015
Сообщений: 6
По умолчанию

В результате по вашей программе я получил :

n= 5
Исходные данные:
Размер квадратного массива n = 5
Результаты расчета
матрица А:
0.85 0.43 0.21 0.11 0.05
0.35 0.18 0.09 0.04 0.02
0.15 0.08 0.04 0.02 0.01
0.65 0.33 0.16 0.08 0.04
1.15 0.58 0.29 0.14 0.07
Элементы вектора Х:
0.00 0.00 0.00 0.00 1.53
Упорядоченная матрица:
0.85 0.08 0.21 0.02 0.05
0.35 0.18 0.09 0.04 0.02
0.15 0.33 0.04 0.08 0.01
0.65 0.43 0.16 0.11 0.04
1.15 0.58 0.29 0.14 0.07

Мне кажется 2)Элементы вектора Х: выводит неверно ?
и упорядоченная матрица работает по столбцам, а мне нужно по строкам(четным).

Помогите исправить...
Fredoom вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с одномерным массивом(исправьте мою ошибку в программе) Fredoom Паскаль, Turbo Pascal, PascalABC.NET 6 11.11.2015 17:53
Исправьте ошибку в программе xxxartikxxx Паскаль, Turbo Pascal, PascalABC.NET 5 26.11.2012 07:02
исправьте ошибку в программе Tolian92 Помощь студентам 0 20.05.2012 12:38