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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2008, 22:39   #1
vlad1991
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 69
По умолчанию Массив!

Всем здрасти!Сделал задачу на Паскале, но почему-то не получается сформировать массив, при тестировании массива выводит массив состоящий из нулей!
Подскажите пожалуйста в чем ошибка!

дан массив x.Получить массив y, каждый элемент которого определяется формулой:
y[i]=(((x[i])^2) -2!)*(((x[i])^3) -3!)+...+(((x[i])^9) -9!).
моя прога:

program lab;
var
x,y:array [1..10] of integer;
i,z,t,n,l,m,p,f:integer;
begin
readln(n);
for i:=1 to n do begin
readln(x[i]);
end;
for i:=1 to n do
begin
f:=2;
p:=x[i];
l:=x[i];
t:=1;
for m:=2 to 9 do begin
p:=l*p; {формирование степени}
f:=f*m; {формирование факториала}
z:=p-f; {НАХОЖДЕНИЕ СКОБКИ}
t:=t*z; {нахождение произведения скобок}
end;
y[i]:=t
end;
for i:=1 to n do
write(y[i],' ');
end.
vlad1991 вне форума Ответить с цитированием
Старый 01.11.2008, 22:48   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
y[i]=(((x[i])^2) -2!)*(((x[i])^3) -3!)+...+(((x[i])^9) -9!).
1. Точно нужно произведение? А то сначала стоит произведение, потом сумма.
2.Если у Вас х целые числа, да еще и большие, то в процессе вычисления они точно вылезают за пределы типа Integer, а возможно и Longint, надо проверить.
Нужно бы точное условие задачи. Какой массив, целых или вещественных чисел. Если целые, какой диапазон и все-таки сумма или произведение.
puporev вне форума Ответить с цитированием
Старый 01.11.2008, 22:55   #3
vlad1991
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 69
По умолчанию

1.Произведение, это просто я опечатался!
2.Массив целочисленный, а диапазон препод сказала, чтоб сам выбрал!Я выбрал 1.10!
Я дума, что integer пойдет!Особых требований к задаче просто нет!
Просто я не могу понять, почему не формируется новый массив!
vlad1991 вне форума Ответить с цитированием
Старый 02.11.2008, 09:24   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1.Циклов должно быть не 2, а 3. Внешниий цикл - формирование массива y[i]. Первый вложенный - подсчет скобок и их умножение, второй вложенный - подсчет степеней и факториалов.
2.Вот Вы пытаетесь написать программу, садитесь за комп и пишете всякие буковки, половину неправильно. Но это легко поправить. Беда Ваша в том, что думать не хотите. Прежде чем писать програаму, нужно обдумать задание, проанализировать его. Если бы Вы сделали это, то увидели бы что например при условии как Вы его представляете (умножение 9 больших чисел), при x[i]=0 y[i]= 1.8^21; при x[i]=1 y[i]=7.2^21 и т.д., что не только в integer, но и в Longint не влезет. Значит нужно подумать, либо условие неверное(что скорее всего, потому что задание учебное, на вложенные циклы и вряд ли будут такие числа), либо использовать тип extended.
Кстати 1..10 это не диапазон чисел (x[i]), о чем я спрашивал, а размер массива.
Если хотите произведение, пожалуйста, но я думаю, что все-таки сумма. Код легко исправить. Тип extended переделать на Longint, а произведение y[i]:=y[i]*z -> y[i]:=y[i]+z;
Код:
program lab;
uses crt;
var
x:array[1..10]of integer;
y:array [1..10] of extended;
n,m,i,j:integer;
z,t,p,f:extended;
begin
clrscr;
write('n=');
readln(n);
for i:=1 to n do
readln(x[i]);
for i:=1 to n do
   begin
     y[i]:=1;
     for j:=1 to 8 do
       begin
         p:=1;
         f:=1;
         for m:=1 to j+1 do
            begin
               p:=p*x[i]; {формирование степени}
               f:=f*m; {формирование факториала}
           end;
        z:=p-f; {НАХОЖДЕНИЕ СКОБКИ}
        y[i]:=y[i]*z; {нахождение произведения скобок}
     end;
  end;
for i:=1 to n do
writeln(y[i]:0:2);
readln
end.
puporev вне форума Ответить с цитированием
Старый 06.11.2008, 22:09   #5
vlad1991
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 69
По умолчанию

Ясно!!!!Спасибо большое!
vlad1991 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив KpeHDeJIb Помощь студентам 2 27.09.2008 13:59
Массив Levsha100 Помощь студентам 5 23.07.2008 16:29
Массив.С++ bloo[d] Помощь студентам 1 13.01.2008 14:55
Массив. С++ bloo[d] Помощь студентам 2 12.12.2007 23:30
массив Jodu Паскаль, Turbo Pascal, PascalABC.NET 11 01.11.2007 16:11