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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 17:27   #1
Memphis
 
Регистрация: 28.11.2008
Сообщений: 5
Восклицание 2 задачи. Нужна помощь

Здраствуйте, не могу решить 2 задачи, они довольно простые

Первая:
Дан одномерный массив a(n). Найти количесво различных чисел в нем. Число действий алгоритма порядка nlogn.

Вторая:
Составить программу для вычисления точного значения суммы 1!+2!+3!+...+n! при (n>10).

За ранее безмерно благодарен
Если есть возможность стучите 445283173
Memphis вне форума Ответить с цитированием
Старый 01.12.2008, 23:28   #2
Memphis
 
Регистрация: 28.11.2008
Сообщений: 5
По умолчанию

Что никто не в состоянии решить такую простоту?)
Memphis вне форума Ответить с цитированием
Старый 02.12.2008, 00:55   #3
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Первая задача.
Код:
var
  Arr1, Arr2: array[0..N-1] of integer;
  flag: boolean;
  Count: word;
  ...
Arr2[0] := Arr1[0];
Count := 1;

for i := 0 to N-1 do
begin
  flag := true;
  for j := 0 to Count-1 do
  begin
    if Arr1[i] = Arr2[j] then
    begin
      flag := false;
      Continue;
    end;
  end;
  if flag then
  begin
    Arr2[Count] := Arr1[i];
    inc(Count);
  end;
end;
readln('количесво различных чисел: ', Count);
...
MalexG вне форума Ответить с цитированием
Старый 02.12.2008, 01:31   #4
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
Подмигивание

лови вторую

Код:
var n,summa,m:integer;

Function factorial(m:integer):integer;
begin
 if m=1 then
  factorial:=1
 else if m>1 then
  factorial:=m*factorial(m-1);
end;


begin
write('Введите n ');
readln(n);
 if n<=10 then
  begin
   write('Ошибка!, n<=10!');
   readln;
   exit;
  end;
summa:=0;
m:=0;
while true do
 begin
  inc(m);
  summa:=summa+factorial(m);
   if m=n then
    break;
 end;


write('Итог = ',summa);
readln;
end.
Викдон вне форума Ответить с цитированием
Старый 15.12.2008, 22:44   #5
Memphis
 
Регистрация: 28.11.2008
Сообщений: 5
По умолчанию

Привет вам ещё раз добрые люди.
Что-то я не очень понял с задачами... там чего-то не хватает? Ибо я совсем нуб в паскале, вы бы могли дописать чего не хватает или объяснить по толковее как доделать нужно
Большое спасибо!
Memphis вне форума Ответить с цитированием
Старый 16.12.2008, 11:52   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию Поправка ко второй

При n>10 значение факториала нужно делать хотя бы real

Код:
var n,m:integer;
    summa:real;

Function factorial(m:integer):real;
begin
 if m=1 then
  factorial:=1
 else if m>1 then
  factorial:=m*factorial(m-1);
end;


begin
write('Введите n ');
readln(n);
 if n<=10 then
  begin
   write('Ошибка!, n<=10!');
   readln;
   exit;
  end;
summa:=0;
m:=0;
while true do
 begin
  inc(m);
  summa:=summa+factorial(m);
   if m=n then
    break;
 end;


write('Итог = ',summa);
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 16.12.2008, 15:53   #7
Memphis
 
Регистрация: 28.11.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от alex_fcsm Посмотреть сообщение
При n>10 значение факториала нужно делать хотя бы real

Ввожу 11, 12, 13, 16 и постоянно выдает такую ошибку
Безымянный2.JPG

Спасибо за помощь!
Memphis вне форума Ответить с цитированием
Старый 16.12.2008, 16:09   #8
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию Попобуй так

Код:
var n,m:integer;
    summa:real;

Function factorial(m:integer):real;
var i:integer;
    j:real;

begin
j:=1;
for i:=1 to m do
      j:=j*i;
factorial:=j;
end;


begin
write('Введите n ');
readln(n);
 if n<=10 then
  begin
   write('Ошибка!, n<=10!');
   readln;
   exit;
  end;
summa:=0;
m:=0;
while true do
 begin
  inc(m);
  summa:=summa+factorial(m);
   if m=n then
    break;
 end;


write('Итог = ',summa);
readln;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 16.12.2008, 20:11   #9
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

Все работает в первоначальном листинге!!!!! Вопрос "делать хотя бы real" почему? разве факториал не целое число? а если диапазон маленький то можно и longint использовать.?
Викдон вне форума Ответить с цитированием
Старый 16.12.2008, 20:18   #10
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Да можно и longint, но у вас был integer.(факториал 10 уже число с 7 нулями)
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно нужна помощь в решении несложной задачи AlexUnder Паскаль, Turbo Pascal, PascalABC.NET 6 27.11.2012 16:44
Delphi.Задачи.Нужна помощь SkaStud Помощь студентам 10 30.05.2011 23:26
Нужна помощь по решению задачи .(Delphi) Nora Помощь студентам 4 24.05.2008 07:29
Нужна помощь в решении задачи в Delphi AndrYxo Помощь студентам 10 28.04.2008 15:53
DELPHI две задачи очень нужна помощь. MARGO Помощь студентам 2 01.11.2007 22:35