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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 20:32   #1
SeNeMka
Новичок
Джуниор
 
Регистрация: 16.11.2010
Сообщений: 7
По умолчанию паскаль.Прога из 2ух частей .факториалы массива

1) составить программу из 2 ух частей, в основной программе ввести значения чисел m и n , в функции вычислить сумму факториалов всех чётных чисел от m до n .Результат вывести в основной программе

Я так понял сначала надо сделать проверку чёт/нечёт...затем каждому элементу массива присваивоить факториал его...И потом сложить ВСЕ элементы массива...

ВОт мой вариант программы...Только он не совсем работает

Код:
Program name;
uses crt;
var
s,i,j,M,N:integer;
a:array[1..100] of integer;
BEGIN
s:=0;
Writeln('3agauTe M');
Readln(M);
Writeln('3agauTe N');
Readln(N);
for i:=1 to M-N do
if a[i] mod 2=0 //проверка на чёт/нечёт
then
begin
for j:=1 to (M-N/2) do //для всех чётных чисел ,которых будет Round(M-N) и тут M-N ошибка в данных
a[i]:=a[i]*j; //элементу массива присвоить факториал его...
end;
for i:=1 to Round((M-N)/2) do // сумма факториалов всех чёт чисел.
s:=s+a[i];
Writeln('Symma =',s);
END.
На Строке 16 ошибка..
Возможно наверно и через процедуры делать ??
В чём ошибка :?

Последний раз редактировалось Stilet; 16.11.2010 в 20:51.
SeNeMka вне форума Ответить с цитированием
Старый 16.11.2010, 20:36   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

1. Прочитайте что такое факториал
2.
Код:
for j:=1 to (M-N/2) do
Здесь ошибка, при чем не только синтаксическая сколько логическая. Вам надо взять четные числа из M до N
Код:
for i:=M to N do
 if i mod 2 = 0 then
     begin
      ........
     end;
Функций в программе вообще не вижу. Напишите функцию факториала отдельно а в цикле по условию будите считать сумму

P.S. Массив можно и не использовать
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 16.11.2010 в 20:40.
alex_fcsm вне форума Ответить с цитированием
Старый 16.11.2010, 20:45   #3
SeNeMka
Новичок
Джуниор
 
Регистрация: 16.11.2010
Сообщений: 7
По умолчанию исправил...только сумма нулевая что то

Program name;
uses crt;
var
s,i,j,M,N:integer;
a:array[1..100] of integer;
function fact(n : integer) : longint;
begin
if n <= 1 then
fact := 1
else
a[i] := n * a[i-1]
end;
BEGIN
s:=0;
Writeln('3agauTe M');
Readln(M);
Writeln('3agauTe N');
Readln(N);
for i:=M to N do
if i mod 2 = 0 then
fact(a[i]);
for i:=1 to Round((M-N)/2) do
s:=s+a[i];
Writeln('Symma =',s);
END.


Ну я решил через массив так как по другому мыслей не было...

Последний раз редактировалось SeNeMka; 16.11.2010 в 21:02. Причина: С функцией
SeNeMka вне форума Ответить с цитированием
Старый 16.11.2010, 21:08   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Оформляй код в теги - читать невозможно. Да к тому же это правило)

Код:
Program name;
uses crt;
var
s,i,j,M,N:integer;

function fact(n : integer) : longint;
begin

end;

BEGIN
clrscr;// ты вроде объявил модуль crt и забыл про него
s:=0;
Writeln('3agauTe M');
Readln(M);
Writeln('3agauTe N');
Readln(N);
for i:=M to N do
if i mod 2 = 0 then s:=s+fact(i);
Writeln('Symma =',s);
END.
Тебе осталось все-таки написать функцию факториала)
З.Ы. Еще можно было проверку поставить чтобы M<=N, ну это уже так понты
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 16.11.2010, 21:35   #5
SeNeMka
Новичок
Джуниор
 
Регистрация: 16.11.2010
Сообщений: 7
По умолчанию

Цитата:
Program name;
uses crt;
var
f,s,i,j,M,N:integer;
a,b:array[1..100] of integer;
function fact(n : integer) : longint;
begin
for i:=1 to M-N do
b[i]:=1;
for i:=1 to M-N do
a[i]:=1;
for i:=1 to a[i] do
b[i]:=b[i]*i;
end;
BEGIN
s:=0;
Writeln('3agauTe M');
Readln(M);
Writeln('3agauTe N');
Readln(N);
for i:=M to N do
if i mod 2 = 0
then s:=s+fact(i);
Writeln('Symma =',s);
end.
Cумма нуль по прежнему...

Последний раз редактировалось SeNeMka; 16.11.2010 в 21:39.
SeNeMka вне форума Ответить с цитированием
Старый 16.11.2010, 21:37   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Я повторяю что массивы не нужны!!!
Факториа́л числа n — произведение всех натуральных чисел до n включительно. 3!=3*2*1, факториал 0!=1 - это правило

Напиши функцию, куда передаешь N а возвращаешь N!.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 16.11.2010, 21:41   #7
SeNeMka
Новичок
Джуниор
 
Регистрация: 16.11.2010
Сообщений: 7
По умолчанию эмс

Цитата:
Сообщение от alex_fcsm Посмотреть сообщение
Я повторяю что массивы не нужны!!!
Факториа́л числа n — произведение всех натуральных чисел до n включительно. 3!=3*2*1, факториал 0!=1 - это правило

Напиши функцию, куда передаешь N а возвращаешь N!.
А ...понял идею....
Только не понял где взять другие числа ?! Например M=6 и N=2...... M!=720
N!=2 А вот 4!=24 Даже Незнай как вернуть...Вот я почему через массивы решил делать.
SeNeMka вне форума Ответить с цитированием
Старый 16.11.2010, 21:44   #8
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от SeNeMka Посмотреть сообщение
А ...понял идею....
Только не понял где взять другие числа ?! Например M=6 и N=2...... M!=720
N!=2 А вот 4!=24 Даже Незнай как вернуть...Вот я почему через массивы решил делать.
Возвращать должна функция.
Есть цикл например от 4 до 9
1. 4 - четное? Да s:=s+fact(4);
2. 5 - Четное? нет
3. 6 - четное? Да s:=s+fact(6);
...............

Я так подозреваю что ты не совсем понимаешь что такое функция?
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 16.11.2010, 21:57   #9
SeNeMka
Новичок
Джуниор
 
Регистрация: 16.11.2010
Сообщений: 7
По умолчанию

Ну я с процедурами больше заданий делал чем с функциями....
SeNeMka вне форума Ответить с цитированием
Старый 16.11.2010, 22:00   #10
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от SeNeMka Посмотреть сообщение
Ну я с процедурами больше заданий делал чем с функциями....
в принципе можно и в процедуре все сделать...
http://www.pascal.helpov.net/index/pascal_Function
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прога не хочет брать элементы из массива. Rin Мультимедиа в Delphi 16 23.05.2010 23:56
паскаль и факториалы A.S.W Помощь студентам 2 07.01.2010 20:17
хотел с помощью массива,но не получается с интервалом от 2ух до 5,что делать?Помогите пожалуйста. SSS_sergey_SSS Помощь студентам 2 09.12.2009 20:31
сортировка частей массива(паскаль) Useless Помощь студентам 1 18.11.2008 09:19
[С++] Сортировка 2ух строк двумерного массива. ReDev1L Помощь студентам 1 19.10.2008 03:45