ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

03.01.2010, 16:50
|
|
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме: 35427
Репутация:
3
|
|
Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное !
Код:
program xyz;
uses
SysUtils,
Windows;
label
EnterN;
var
N, i, z : Integer;
ans : Char;
//------------------------------------------------------------------------------
function Ru(str: String): String; // Функция перевода получаемой строки из ANSI-кодировки в OEM-кодировку DOS.
begin // Начало функции.
Result := ''; // Обнуляем результат.
if Length(str) > 0 then // Если получена непустая строка, то
begin // выполняем код:
SetLength(Result, Length(str)); // Устанавливаем размер для строки результата.
CharToOem(PChar(str), PChar(Result)); // Конвертируем строку в OEM-формат (модуль 'Windows.pas').
end; // Результирующая строка уже в новой кодировке.
end; // Конец функции.
//------------------------------------------------------------------------------
begin
WriteLn(Ru('Программа для вычисления факториала нечётных чисел:')); // Вывод информации на экран о назначении программы.
WriteLn('');
WriteLn(' N!!! = 1 x 3 x 5 ... x N ');
WriteLn('');
WriteLn(Ru('Выполнил ...')); // Вывод информации на экран об авторе программы.
WriteLn('');
Writeln('...');
EnterN: // Возврат в это место при ошибке или при повторном вводе данных.
WriteLn(''); // ...
Write(Ru('Введите нечётное число N, где N > 1 : ')); // ...
ReadLn(N); // Ввод числа Х.
if (N <= 1) or (N mod 2=0) then // Если Х меньше или равен 1, то
begin // выполнить код:
WriteLn(Ru('Произошла ошибка при вводе, попробуйте ещё раз.')); // - вывести сообщение об ошибке;
GoTo EnterN; // - вернуться к началу;
end; // ...
WriteLn(''); // ...
z := 1; // Обнуляем переменную результата.
for i := 1 to N do z := z*(i*2-1); // Увеличиваем переменную результата N раз.
WriteLn(Ru('Полученный результат: '+IntToStr(z))); // Отправить Х на обработку в функцию 'Formula()' и вывести результат.
WriteLn(''); // ...
Write(Ru('Вы хотите продолжить работу с программой? (Y/N) : ')); // Предложить продолжить работу с программой.
ReadLn(ans); // Получить согласие.
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo EnterN; // Если согласие получено - возврат к началу.
end.
Когда запускаешь прогу, просит ввести N, если вводим 5, то получаем такой факториал 1х3х5х7х9, а нужно чтобы 5 была последней цифрой в этом подсчёте, то есть 1х3х5.
Перепробовал многие варианты, не выходит. кто может разобраться, помогите !
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|