Перейти к содержанию

Нужна помощь с Паскалем


Рекомендуемые сообщения

Люди добрые! Нужна помощь, т.к. я сам в этом деле НУЛЬ - прошу помощи знающих)

2 задания, вроде как *почти* правильные, но где то есть небольшие ошибки.

Помогите)


vector=array[1..50] of real;
var A:massiv; {переменная массива}
B:vector; {переменная массива}
i,j,m,n:integer; {переменные для циклов}

{------------------------------------------------------------}
function simple(x:real):boolean; {процедура проверки числа на "простоту"}
label 1;
var i:longint;

begin

if (x=1) or (x=0) then begin result:=false; goto 1; end;
for i:=2 to round(x) div 2 do
if round(x) mod i=0 then begin
result:=false; goto 1; end;
result:=true;

1:simple:=result;
end; {***конец процедуры проверки числа на "простоту"}
{------------------------------------------------------------}
procedure make_vector(A:massiv;m,n:integer;var B:vector);
var i,j :integer;
pr :real;
begin
for j:=1 to m do
begin
pr:=1;
for i:=1 to n do
if simple(A[i,j]) then pr:=pr*A[i,j];
B[j]:=pr;
end;
end;
{------------------------------------------------------------}
begin
write('N= '); readln (n); {считываем размер массива}
write('M= '); readln (m); {считываем размер массива}

writeln ('Vvedite elementy massiva A: ');
for i:=1 to n do
for j:=1 to m do begin
write ('A[',i,',',j,']='); readln (A[i,j]); end; {считываем элементы массива}

write ('Vot vvedennyi vami massiv A: ');
for i:=1 to n do begin writeln;
for j:=1 to m do write (A[i,j]:4,' '); end; {выводим массив на экран}

writeln;writeln;

make_vector(A,m,n,B);

writeln ('Vot vector B: ');
for j:=1 to m do write (B[j]:4,' ');

readln;
end.
type massiv=array[1..50,1..50] of real;

Здесь матрица вроде как считается, но не запрашиваются данные для вектора, в этом загвоздка.


Var n,i,j,k,r:integer;
max,c,s,M:real;
a:array [1..50,1..50] of real;
b:array [1..50] of real;
x:array[1..50] of real;
begin
ClrScr;
Write('Введите размерность');
Readln(n);
for i:=1 to n do
begin
for j:=1 to n do
begin
Write('a[',i,',',j,']=');
Read(a[i,j]);
end;
Write('b[',i,']=');
Readln(b[i]);
end;
for k:=1 to n do
begin
max:=abs(a[k,k]);
r:=k;
for i:=k+1 to n do
if abs(a[i,k])>max then
begin
max:=abs(a[i,k]);
r:=i;
end;
for j:=1 to n do
begin
c:=a[k,j];
a[k,j]:=a[r,j];
a[r,j]:=c;
end;
c:=b[k];
b[k]:=b[r];
b[r]:=c;
for i:=k+1 to n do
begin
M:=a[i,k]/a[k,k];
for j:=k to n do
begin
a[i,j]:=a[i,j]-a[k,j]*M;
end;
b[i]:=b[i]-b[k]*M;
end;
end;
Writeln('Ступенчатый вид системы');
Writeln;
for i:=1 to n do
begin
for j:=1 to n do
Write(a[i,j]);
Write('|');
Writeln(b[i]);
Writeln;
end;
Writeln('Ответ');
Writeln;
if a[n,n]=0 then
if b[n]=0 then
Writeln('Уравнение имеет бесконечное множество решений')
else
Writeln('Уравнение не имеет решений')
else
begin
for i:=n downto 1 do
begin
s:=0;
for j:=i+1 to n do
begin
s:=s+a[i,j]*x[j];
end;
x[i]:=(b[i]-s)/a[i,i];
end;
for i:=1 to n do
Writeln('x[',i,']=',x[i]:2:1);
end;
readln;
end.
 Uses Crt;

А тут я вообще не понял в чем проблема)

Ссылка на комментарий
Метод Якоби

Что это за ад? Какое отношение он имеет к методу Якоби?

Как задание то звучало изначально?

Метод Гаусса

А от такого форматирования кода выпить захотелось.

А тут я вообще не понял в чем проблема)

Подробнее. Далеко не у всех есть какая-нибудь среда разработки для pascal/delphi. В чем проблема? Не компилируется (если да, то какие ошибки)? Неправильно работает (если да, то что именно не так: неправильно считает для такого-то примера или еще чего)?

Ссылка на комментарий
Метод Якоби

Что это за ад? Какое отношение он имеет к методу Якоби?

Как задание то звучало изначально?

Метод Гаусса

А от такого форматирования кода выпить захотелось.

А тут я вообще не понял в чем проблема)

Подробнее. Далеко не у всех есть какая-нибудь среда разработки для pascal/delphi. В чем проблема? Не компилируется (если да, то какие ошибки)? Неправильно работает (если да, то что именно не так: неправильно считает для такого-то примера или еще чего)?

Я не понимаю в этом нифига)

Препод сказал что ошибки какие то, мы там командой *гениев* так и не смогли разобраться!

А этом (вроде Якоби) не запрашивает ввод значений для вектора в конце программы, а сразу выдает значеия

Добавлено спустя 1 минуту 44 секунды:

А на счет самого задания, просто сделать 2 программы по этим 2-м методам

Ссылка на комментарий

-=InFeRn@L=-

http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%AF%D0%BA%D0%BE%D0%B1%D0%B8

А в том, что написано в посте, строится вектор из произведений всех простых чисел матрицы по столбцам. С неизвестными целями.

Ссылка на комментарий
-=InFeRn@L=-

http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%AF%D0%BA%D0%BE%D0%B1%D0%B8

А в том, что написано в посте, строится вектор из произведений всех простых чисел матрицы по столбцам. С неизвестными целями.

Ну вот именно) а как сделать чтобы с целью какой то он строился)

Добавлено спустя 4 минуты 51 секунду:

ArtyomK

Если не сложно, скиньте хоть что то рабочее по этим методам)

Ссылка на комментарий
piecemaker

Учили бы, да только это технолажа, дали задание, как хочешь так и делай

Имелось ввиду что операторы перехода типа GOTO и GOSUB в ООП не используются ВООБЩЕ. НИКАК. Ни при каких обстоятельствах. Как и глобальные переменные. Да, это усложняет код простых задач. Но значительно упрощает разработку крупных проектов.

Ссылка на комментарий

Только не вздумай брать оттуда метод Якоби, тебе не этот нужен)

А что вас учат с goto программировать?

Серьезно?) Это больше всего смущает?)

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...