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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2009, 19:13   #1
f4rr3l
 
Регистрация: 06.01.2009
Сообщений: 7
По умолчанию Два небольших вопроса :)

Парни помагите подправить две программы:
1.
Расположить элементы матрицы X[nxn] так, чтобы на побочной диагонали были минимальные элементы столбцов (путем обмена соответствующих элементов).
Вывести на экран исходную и преобразованную матрицы.

Здесь у меня получилось поставить минимальные элементы на ГЛАВНУЮ диагональ, а по заданию надо на ПОБОЧНУЮ, пожалуйста помогите исправить.

Мой код:
Код:
Var 
a:array[1..100,1..100] of byte;
i,k,tmp,n,nmin:word;

Begin
Writeln('Введите n');Readln(n);
randomize;
for i:=1 to n do for k:=1 to n do a[i,k]:=random(250);
for i:=1 to n do 
Begin
for k:=1 to n do 
Writeln(a[i,k], ' ');
Writeln;
End;

for i:=n downto 1 do 
Begin
nmin:=1;
for k:=1 to n do if a[i,k]<a[i,nmin] then nmin:=k;
tmp:=a[i,i];
a[i,i]:=a[i,min];
a[i,min]:=tmp;
End;

for i:=1 to n do 
Begin
for k:=1 to n do 
Writeln(a[i,k], ' ');
Writeln;
End;
2.
Вычислить с заданной точностью ɛ значение функции Y для каждого из 20 значений Х:
Y = 1 – X / 2 + (1*3*X2) / (2*4) – (1*3*5*X3) / (2*4*6) + (1*3*5*7*X4) / (2*4*6*8) – ...
Значения Х и ɛ ввести.

А здесь собственно вопрос в началбный установках.

Мой код:
Код:
program United;
Var
 x, y, eps,mem: real;
 n, i: integer;
Begin
 WriteLn('Eps:='); ReadLn(eps);
 mem:=1; // тут ли надо делать эти начальные установки? Ведь по   
 y:=1; //заданию они для каждого из Х должны устанавливаться заново. 
 n:=1;     // Не могу сообразить как это сделать, помагите исправить :)
for i:=1 to 20 do
begin
WriteLn('X:='); ReadLn(x);
While Abs (mem)>=Eps Do
 Begin
  mem:=-mem*x*(2*n-1)/(2*n); 
  y:=y+mem;
  n:=n+1;
End; 
WriteLn(y); 
End;
End.
f4rr3l вне форума Ответить с цитированием
Старый 09.01.2009, 19:34   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

для побочной диагонали
n:=n+1;
for i:=1 to n-1 do
begin
n:=n-1;
a[i,n]-элемент побочной диагонали
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 09.01.2009, 19:44   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Побочная диагональ:
Вместо tmp:=a[i,i]; пишешь tmp:=a[i,n-i+1];
puporev вне форума Ответить с цитированием
Старый 09.01.2009, 19:51   #4
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию 1)

uses crt;
const
n=4;
var
mas:array[1..5,1..n] of integer;
i,j,min,k,buf,l,m:integer;
begin
clrscr;
randomize;
for i:=1 to n do
begin
for j:=1 to n do
begin
mas[i,j]:=random(10);
write(mas[i,j],' ');
end;
writeln;
end;
writeln;
k:=n;
l:=1;
writeln;
writeln;
for j:=1 to n do
begin
min:=mas[1,j];
m:=1;
for i:=2 to n do
begin
if mas[i,j]<min then begin min:=mas[i,j]; m:=i; end;
end;
buf:=mas[k,l];
mas[k,l]:=mas[m,j];
mas[m,j]:=buf;
k:=k-1;
l:=l+1;
end;
writeln;
for i:=1 to n do
begin
for j:=1 to n do
write(mas[i,j],' ');
writeln;
end;
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 09.01.2009, 21:19   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

По второй задаче переставьте начальные значения, или у будет одинаковый. И еще у Вас есть условие, что |x|<=1?
А то при других х функция расходится.
Код:
program United;
Var
 x, y, eps,mem: real;
 n, i: integer;
Begin
 WriteLn('Eps:='); ReadLn(eps);
for i:=1 to 20 do
    begin
      WriteLn('X:='); ReadLn(x);
      mem:=1;  y:=1; n:=1;  
      While Abs (mem)>=Eps Do
         Begin
           mem:=-mem*x*(2*n-1)/(2*n); 
           y:=y+mem;
           n:=n+1;
        End; 
WriteLn(y); 
End;
End.
puporev вне форума Ответить с цитированием
Старый 10.01.2009, 12:44   #6
f4rr3l
 
Регистрация: 06.01.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
По второй задаче переставьте начальные значения, или у будет одинаковый. И еще у Вас есть условие, что |x|<=1?
А то при других х функция расходится.
Код:
program United;
Var
 x, y, eps,mem: real;
 n, i: integer;
Begin
 WriteLn('Eps:='); ReadLn(eps);
for i:=1 to 20 do
    begin
      WriteLn('X:='); ReadLn(x);
      mem:=1;  y:=1; n:=1;  
      While Abs (mem)>=Eps Do
         Begin
           mem:=-mem*x*(2*n-1)/(2*n); 
           y:=y+mem;
           n:=n+1;
        End; 
WriteLn(y); 
End;
End.
"Y" одинаковый, а "|x|<=1" нет.
f4rr3l вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два тупых вопроса. proglamer Общие вопросы Delphi 2 10.04.2008 07:12
Два вопроса Никки Общие вопросы Delphi 2 19.01.2008 21:39
Два простых вопроса Relrin Общие вопросы Delphi 3 28.12.2007 16:00
Два вопроса новичка по синтаксису: grey Помощь студентам 6 09.11.2007 22:49
Два вопроса новичка по графике. grey Помощь студентам 7 04.11.2007 17:48