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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2007, 22:11   #11
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

(-2) возводишь в 25 степень.

посмотрите и исправьте первую часть у меня.

a[i,j]:=exp(i*j*ln(-2)); под знаком логарифма не может отрицательбное число стоять.(хотя вроде как все делал по правилу)


Код:
program matrica;
uses crt;
const n =5;
type matrix = array[1..n,1..n] of integer;
var a:matrix;
     i:integer;
     j:integer;
begin
    clrscr;
    for i:= 1 to n do
begin
    for j:= 1 to n do
begin
    a[i,j]:=exp(i*j*ln(-2));
    write(a[i,j],' ');
end;
writeln;
end;
readln;
end.

Последний раз редактировалось Jodu; 26.11.2007 в 22:21.
Jodu вне форума Ответить с цитированием
Старый 26.11.2007, 22:44   #12
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Дана матрица А[5,5] положительных и отрицательных элементов.АХ[i,j]= (-2) в степени i*j

задание:
1) Записать матрицу.
По моему ты чего-то не врубаешся. Как ты собираешся записывать в матрицу числа типа (-2)^25?
А чтобы не считать логарифмы отрицательных чисел, вводишь в программу такую функцию:
Код:
var n,i,a:integer;
function step2(n:integer):integer;
begin
a:=1;
for i:=1 to n do
a:=a*(-2);
step2:=a;
end;
begin
write('n=');readln(n);
a:=step2(n);
writeln('2^n=',a);readln
end.
В своей программе напишешь
a[i,j]:=step2(i*j);(Все таки я думаю, что здесь ты неправ).

Последний раз редактировалось puporev; 26.11.2007 в 22:49.
puporev вне форума Ответить с цитированием
Старый 27.11.2007, 00:02   #13
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

Дана матрица А[5,5] положительных и отрицательных элементов.
А[i,j]= (-2)^i*j

Объясните мне вот это.Как я понимаю элемент A[1,3]=(-2)^1*3....
Т.е. в первой строке и третьем столбце должно быть число (-8)
Т.Е. матрица она будет вида(она не рандомайзом задается):

-2 4 -8 ... ...
4 16 -32 ... ...
-8 64 ... ... ...
... ... ... ... ...
... ... ... ... ...


Исправьте меня,что я не так понимаю.
Jodu вне форума Ответить с цитированием
Старый 27.11.2007, 07:14   #14
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

я настаиваю, что у тебя ошибка в задании. Ты мне все пишешь (-2)^4,(-2)^5. А ты напиши (-2)^25, тогда будем смотреть дальше.
Вот еще способ возведения отрицательных чисел в степень
Цитата:
Используя свойства логарифмов, можно избавиться от мучительного программирования.

Function Pow(A,B:Real):Real;
{ Функция возведения в степень (A^B) }
Var T:Real;
Begin
T := Abs(A);
If A < 0 Then Pow := (-1)*Exp(B*Ln(T))
Else Pow := Exp(B*Ln(T));
End;

Последний раз редактировалось puporev; 27.11.2007 в 08:18.
puporev вне форума Ответить с цитированием
Старый 27.11.2007, 13:09   #15
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

можно написать,только очень большое число получится+)

(-2)^25= (-2)^5 * (-2)^5 * (-2)^5 * (-2)^5 * (-2)^5 =
64*64*64*64*64 = 1073741824
Jodu вне форума Ответить с цитированием
Старый 30.11.2007, 15:12   #16
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию получилось.

все сделал.Всем спасибо за помощь.

Маленький вопрос...когда можно в программе можно не писать begin после do?

Цитата:
program Project2;
uses crt;
const n =5;
type matrix = array[1..n,1..n] of integer;
var a:matrix;
i:integer;
j:integer;
S5,S:integer;
P:real;

begin
randomize;
for i:= 1 to n do
begin
for j:= 1 to n do
begin
a[i,j] :=random(100) - 50;
write(a[i,j]:3 ,' ');
end;
writeln;
end;


P:=1; S5:=0; S:=0;
For i:=1 to 5 do begin
For j:=1 to 5 do begin
If i=j then P:=P*a[i,j];
end;
end;
Writeln ('prouzBedenue paBHo ',p:5:2);
For j:=1 to 5 do
S5:=S5+a[5,j];
S:=0;
For i:=1 to 5 do
For j:=1 to 5 do
S:=S+a[i,j];
writeln ('cymma S5 paBHa ' ,s5);
writeln ('cymma maccuBa paBHa ' , s);



writeln;
for i:= 1 to n do
begin
for j:= 1 to n do
begin
if a[i,j] < 0
then
a[i,j]:=10
else a[i,j] := 20;
write(a[i,j]:2,' ');
end;
writeln;
end;
readln;
end.


Последний раз редактировалось Jodu; 30.11.2007 в 15:15.
Jodu вне форума Ответить с цитированием
Старый 30.11.2007, 16:20   #17
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Можно не писать begin , если в цикле выполняется одна команда, например:
for i:=1 to n do a[i]:=sqr(i);
и если этот цикл не нужно прерывать с помощью exit, break, abort, continue. Более детально смотри в учебниках.
puporev вне форума Ответить с цитированием
Старый 05.12.2007, 22:00   #18
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию как массив сделать как матрицу?!ровненьким.а то у меня получается, что в каждой строке один элемент.

Код:
program Project3;
uses crt;
const n =5;
type matrix = array[1..n,1..n] of real;
var a:matrix;
     i:integer;
     j:integer;
begin  clrscr;

    for i:= 1 to 5 do
    for j:= 1 to 5 do
Begin
     if odd(i*j) then
    a[i,j]:=-exp(i*j*ln(2))
    else  a[i,j]:=exp(i*j*ln(2));
    write(a[i,j]:14:2,' ');
writeln;
end;
readln;

end.
Jodu вне форума Ответить с цитированием
Старый 05.12.2007, 22:44   #19
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот я немного поправил, сейчас похоже на матрицу.
Код:
program Project3;
uses crt;
const n =5;
type matrix = array[1..n,1..n] of real;
var a:matrix;
     i:integer;
     j:integer;
begin  clrscr;

    for i:= 1 to 5 do
    for j:= 1 to 5 do
Begin
     if odd(i*j) then
    a[i,j]:=-exp(i*j*ln(2))
    else  a[i,j]:=exp(i*j*ln(2));
Далее вставь следующее:
end;
    for i:=1 to n do
          begin
              for j:=1 to n do
Конец вставки
                 write(a[i,j]:14:2);
                writeln;
          end;
readln;
end.
Выводить матрицу, как и вводить, нужно в цикле.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный Массив n01R Помощь студентам 9 19.12.2009 16:41
Двумерный массив... slim5 Помощь студентам 2 20.06.2008 23:16
Двумерный массив в С++ Draid Помощь студентам 2 07.03.2008 22:06
Двумерный массив help Imperceptible Паскаль, Turbo Pascal, PascalABC.NET 25 02.03.2007 20:00