Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите исправить IF

Автор: Diablo 18.05.2007 0:20

в if, что энтером отделен, нужно вписать else. помогите пожалуйста, а то что-то ничего на ум не приходит.

program lab5;
uses crt;
const n=10;
m=10;
var a,b:array [1..n,1..m] of longint;
c:array [1..n] of longint;
i,j,k:integer;
max,f:longint;
begin
clrscr;
randomize;
for i:=1 to n do
begin
f:=1;
for j:=1 to m do
begin
if i=j then f:=1 else

if j>i then f:=f*abs(j-i) else

a[i,j]:=(-1)*(100-f);
write(a[i,j]:7);
end;
writeln;
end;
writeln;
max:=a[1,1];
for j:=1 to m do
begin
for i:=1 to n do
if a[i,j]>max then max:=a[i,j];
write(max:7);
max:=a[1,1];
end;
writeln;
writeln;
for i:=1 to n do
begin
for j:=1 to m do
begin
b[i,j]:=a[n+1-i,n+1-j];
write(b[i,j]:7);
end;
writeln;
end;
repeat
until keypressed;
end.

Автор: volvo 18.05.2007 0:29

Так у тебя уже есть там Else... Куда еще поставить-то надо, уточни...

Автор: Diablo 18.05.2007 0:32

если j<i. не пойму что будет результатом.

...for j:=1 to m do
begin
if i=j then f:=1 else
if j>i then f:=f*abs(j-i) else__________;

a[i,j]:=(-1)*(100-f);
write(a[i,j]:7);
end...

Автор: volvo 18.05.2007 0:37

Так вот и будет результатом нижняя строка... Делал бы форматирование текста, все было бы видно:


for j:=1 to m do begin

if i=j then f:=1
else
if j>i then f:=f*abs(j-i)
else a[i,j]:=(-1)*(100-f);

write(a[i,j]:7);
end;


Четвертого варианта не дано, может быть только i = j, j > i или j < i ...

Добавлено через 1 мин.
Особенно радует - что условие задачи известное тебе должно быть автоматически известно и нам, правда?

Автор: Diablo 18.05.2007 0:44

нужно было матрицу задать по формуле a[i,j]=(100-lj-il!)*(-1)
извини, но по твоему если i>j, то тогда факториал будет равен 1?


for j:=1 to m do begin

if i=j then f:=1
else
if j>i then f:=f*abs(j-i)
else a[i,j]:=(-1)*(100-f);

write(a[i,j]:7);
end;





Автор: volvo 18.05.2007 0:56

А при чем здесь по-моему? Ты полностью ЗАДАНИЕ приведи, как тебе его дали, а не "типа, тут это надо было..."

Я, понимаешь ли, не вижу сквозь несколько тысяч километров, и через экран читать еще не научился... Я просто показал тебе, как компилятор воспринимает твою программу...

Автор: мисс_граффити 18.05.2007 0:58

Diablo, вообще-то, это по-твоему smile.gif))
а так - какая разница, что больше - i или j?
надо делать

if i=j then...
else...


и все

Автор: volvo 18.05.2007 1:01

А если задание у тебя такое как ты показал, на что тебе эти if-ы тогда?

  for i:=1 to n do begin
for j:=1 to m do begin

f := 1;
for k := 1 to abs(j - i) do f:=f*k; { <--- Вот тебе вычисление факториала }
a[i,j]:=(-1)*(100-f);

write(a[i,j]:7);
end;
writeln;
end;

Автор: Diablo 18.05.2007 1:50

знаешь в чем вся штука? я целый день доказывал своему преподу, что никаких условий кроме равенства i=j здесь не нужно. что модуль, он и в африке модуль, а потому разницы нету, что больше i или же j.
но все равно, спасибо что выделил время.

Автор: Skala_net 18.05.2007 2:06

Цитата(Diablo @ 17.05.2007 22:50) *

знаешь в чем вся штука? я целый день доказывал своему преподу, что никаких условий кроме равенства i=j здесь не нужно. что модуль, он и в африке модуль, а потому разницы нету, что больше i или же j.
но все равно, спасибо что выделил время.

ты пол дня пива пил, как ты мог доказывать что blink.gif то.

Автор: Diablo 18.05.2007 17:37

закрыть тему