Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Светлана0078
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 3
#1

Необходимо перевести программу с Pascal ABC на free pascal - Free Pascal

23.11.2015, 17:55. Просмотров 836. Ответов 11
Метки нет (Все метки)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var a, factorial:longint;
const c:array [0..1] of char= ('0','1');
var res:string;
    d:0..1;
    k, n, i:byte;
    begin
        assign(input, 'input.txt');
    assign(output, 'output.txt');
    reset(input);
    rewrite(output);
    readln(n);
     factorial := 1;
     for i:=2 to n do
        factorial := factorial * i;
     a:=factorial;
res:='';
k:=0;
while a<>0 do 
 begin
  d:=a mod 2;
  if d=0 then k:=k+1;
  res:=c[d]+res;
  a:=a div 2;
 end;
write(k);
readln
 end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2015, 17:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Необходимо перевести программу с Pascal ABC на free pascal (Free Pascal):

Как перевести программу с PascalABC.NET в Free Pascal
program post; uses crt; const nmax=100; var i,j,k,n,m,s,p,n1: integer; a:...

Перевести в Free Pascal с Delphi
unit Unit1; interface uses Windows, SysUtils, Forms, StdCtrls,...

Есть ли аналог модуля tpdate.tpu (Turbo Pascal) для Free Pascal
Внимание! Нужно срочно узнать название юнита для freepascal, который выполняет...

В Turbo Pascal при нажатии на Run ничего не происходит, а в Free Pascal окно сразу же закрывается
Привет всем! У меня такая небольшая проблемка... Я установил Turbo Pascal и...

Программа на Turbo Pascal не запускается на Free Pascal
В теории должен быть симулятор перекрестка, приведенный ниже код работает через...

Чем Turbo Pascal отличается от Free Pascal
Обьясните, пожалуйста, чем Turbo Pascal отличается от Free Pascal? Заранее...

11
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
23.11.2015, 18:17 #2
Можно ничего не делать, можно немного причесать:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const
  c: array [0..1] of char = ('0','1');
var
  a, factorial: Longint;
  res: String;
  d: 0..1;
  k, n, i: Byte;
begin
  Assign(input, 'input.txt');
  Assign(output, 'output.txt');
  Reset(input);
  Rewrite(output);
  Readln(n);
  factorial:=1;
  for i:=2 to n do
    factorial:=factorial*i;
  a:=factorial;
  res:='';
  k:=0;
  while a<>0 do begin
    d:=a mod 2;
    if d=0 then k:=k+1;
    res:=c[d]+res;
    a:=a div 2;
  end;
  Write(k);
  ReadLn
end.
Добавлено через 49 секунд
А какое было задание?

Добавлено через 5 минут
Посчитать количество 0 в двоичном представлении n! ?
Тогда можно выкинуть лишнее:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  f: Longint;
  n, k: Byte;
begin
  Assign(input,'input.txt'); Assign(output,'output.txt');
  Reset(input); Rewrite(output);
  ReadLn(n); f:=1;
  for n:=2 to n do f:=f*n;
  while f<>0 do begin
    if f mod 2=0 then Inc(k);
    f:=f div 2;
  end;
  WriteLn(k);
end.
0
Светлана0078
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 3
23.11.2015, 18:24  [ТС] #3
Сколько же нулей?

Миша ходит на кружок по информатике. Там он впервые услышал про «факториал» и про то, как его вычислить. Он узнал, что 2! = 1·2 = 2, а 3! = 1·2·3 = 6. Правда, он не понял, почему 0! = 1.

Там же он научился записывать натуральные числа в двоичной системе счисления. Оказалось, что в двоичной записи обычные числа выглядят совсем по-другому. Например, обычная двойка в двоичной системе счисления превращается в «10», а шестерка – в «110».

Требуется узнать, сколькими нулями оканчивается «факториал» заданного числа, если его записать в двоичной системе счисления.

Формат входных данных

В единственной строке входного файла input.txt записано целое неотрицательное число N, причем 0 ≤ N ≤ 109.

Формат выходных данных

В единственной строке выходного файла output.txt должно быть записано целое неотрицательное число – количество «нулей», идущих подряд в конце двоичной записи числа N!

Добавлено через 44 секунды
ответ система не принимает

Добавлено через 1 минуту
«Компилятор» - Free Pascal Compiler 2.4.0;
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
23.11.2015, 19:37 #4
Цитата Сообщение от Светлана0078 Посмотреть сообщение
оканчивается «факториал» заданного числа, если его записать в двоичной системе счисления.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  f: Longint;
  n, k: Byte;
begin
  Assign(input,'input.txt'); Assign(output,'output.txt');
  Reset(input); Rewrite(output);
  ReadLn(n); f:=1;
  for n:=2 to n do f:=f*n;
  while (f<>0) and (f mod 2=0) do begin
    Inc(k); f:=f div 2;
  end;
  WriteLn(k);
end.
Вот только не все так просто, как было в вашем исходнике, потому как "0 ≤ N ≤ 109" наверняка звучало как "0 ≤ N ≤ 109", и нужно писать длинную арифметику.
0
Ромаха
336 / 118 / 27
Регистрация: 16.12.2012
Сообщений: 555
Записей в блоге: 1
Завершенные тесты: 1
23.11.2015, 19:42 #5
Цитата Сообщение от bormant Посмотреть сообщение
f:=f*n;
Пффф
Так как бэ 10^9. да и при 109 не зайдет
И длинка как бэ не нужна
да и не поможет она вам
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
23.11.2015, 19:44 #6
Но даже 109! -- это 177-значное число. Выходит, нужно искать закономерности в получении последних цифр такого числа.
0
Светлана0078
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 3
23.11.2015, 19:47  [ТС] #7
Да была степень 10 в 9степени. Я только начинающий программист, поэтому плохо разбираюсь
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
23.11.2015, 19:48 #8
Ромаха,
в исходном сообщении было приведено решение без условия в нативной арифметике. Пример выше показывает, как то же самое должно было бы выглядеть не для общего количества 0, а для подсчета последних 0 при тех же допущениях, что и исходный код.

А длинная арифметика, да, тут не поможет, только закономерности в произведениях.
0
Ромаха
336 / 118 / 27
Регистрация: 16.12.2012
Сообщений: 555
Записей в блоге: 1
Завершенные тесты: 1
23.11.2015, 19:55 #9
Да никаких закономерностей тут нет. Самое обычное деление на два и дальше по списку
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
23.11.2015, 20:03 #10
Цитата Сообщение от Ромаха Посмотреть сообщение
никаких закономерностей тут нет
Умножаете на число с последней цифрой 2 (102), получаете +0 на хвосте, умножаете на число с последней 4 (1002), получаете +00 на хвосте, ...

Уверены, что все 109 нужно перебрать, чтобы подсчитать нули, или возможно сократить перебор?
0
Ромаха
336 / 118 / 27
Регистрация: 16.12.2012
Сообщений: 555
Записей в блоге: 1
Завершенные тесты: 1
23.11.2015, 20:28 #11
Лучший ответ Сообщение было отмечено Новичок как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  f: Longint;
  n, k: Byte;
begin
  ReadLn(n); f:=2;
  while (n >= f) do
  begin
    Inc(k, n div f);
    f := f*2;
  end;
  
  WriteLn(k);
end.
Не уж-то эт так сложно?

Добавлено через 1 минуту
Ток типы нормально выкрутить
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
23.11.2015, 20:46 #12
Pascal
1
2
var
  f, n, k: Longint;
0
23.11.2015, 20:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2015, 20:46
Привет! Вот еще темы с решениями:

Не играют звуки в Turbo Pascal и Free Pascal
Uses CRT; Procedure mi; Begin sound(659); Delay(500); nosound; Delay(20);...

Напишите рабочую программу free pascal
Можете помочь написать полный код программы,чтобы работал в паскале? Чему...

Программу на Pascal ABC Net переделать для FreePascal
Никогда не писал на FP, можете помочь переписать программу на код для FP? ...

Различия между Turbo Pascal и Free Pascal (Turbo mode)
Собственно вот и вопрос. Чем отличается FPC Turbo Pascal mode от самого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru