Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод из TurboPascal

9.9K
17 марта 2007 года
o1ps
51 / / 11.10.2006
Уважаемые программисты, не будете ли вы так любезны описать по-строково алгоритм этой задачи и действия в каждой строке. Проблема в том, что я не знаком с этим языком и мне очень проблематично в нем ориентироваться. Буду очень благодарен вам. Спасибо.





program z18; {Напечатать все совершенные числа меньше m}
{ Справка: Совершенными называются числа сумма делителей включая 1,
которых равна самому числу, делители не должны быть
равны самому числу }
uses crt;
var i,j,k,m,sum:longint;
b:array[1..50]of longint;
begin
clrscr;
write('введите ограничение: ');readln(m);
i:=1;{write('1');}
while i<=m do
begin
sum:=0;k:=1;
for j:=1 to i-1 do if i mod j=0 then begin
b[k]:=j;inc(k);
end;
for j:=1 to k-1 do sum:=sum+b[j];
if i=sum then write(' ',i);inc(i);
end;
readln;
end.





-------------------------------------------------





program z45;
{ Найти двоичное представление для чётных совершенных чисел
вида 2 в степени (p-1) умножить на ((2 в степени p)-1) }
uses crt;
var ch,p,s,sum,i,j,f,m,g:longint;
procedure sistema(n:longint;var g:longint);
var t:array[1..10]of longint;k:longint;
begin
j:=0;k:=0;
while n>=1 do
begin
inc(k);inc(j);t[j]:=n mod 2;n:=n div 2;
end;
for j:=1 to k do g:=g*10+t[k+1-j];
end;
begin
clrscr;
write('ограничение: m=');readln(m);
p:=1;s:=2;
while p<=m do
begin
ch:=(s div 2)*(s-1);
if ch mod 2=0 then
begin sum:=0;
for j:=1 to ch-1 do if ch mod j=0 then sum:=sum+j;
if ch=sum then
begin sistema(ch,g);writeln(g); end;
end;
inc(p);s:=s*2;
end;
readln;
end.
2.0K
17 марта 2007 года
nevile
138 / / 05.01.2007
program z18; - название программы. не обязательный раздел

uses - подключается модуль

crt; - модуль для отчистки экрана при каждом запуске программы

var - раздел для описания переменных

i,j,k,m,sum:longint; - переменные.

b:array[1..50]of longint; - массив.

begin - операторные скобки. Аналог { на С++

clrscr; - команда для отчистки экрана

write('введите ограничение: '); - выводит на экран текст в кавычках

readln(m); - читает введенную переменную с клавиатуры

i:=1; - переменной i присваивается значение 1

{write('1');} - коментарий

while i<=m do - цикл пока, почитай в какой-нить лит-ре, по-моему и в С есть аналог
begin
sum:=0;k:=1;
for j:=1 to i-1 do

if i mod j=0 then - условие if, в С++ имеется аналог
begin
b[k]:=j;
inc(k); - увеличивает переменную k на 1;
end;

for j:=1 to k-1 do sum:=sum+b[j]; - Цикл for, в с++ есть аналог

if i=sum then write(' ',i);inc(i);
end;
readln;
end.

Ну вобщем это все. Вторую если будет время позже опишу
2.0K
17 марта 2007 года
nevile
138 / / 05.01.2007
program z18; - название программы. не обязательный раздел

uses - подключается модуль

crt; - модуль для отчистки экрана при каждом запуске программы

var - раздел для описания переменных

i,j,k,m,sum:longint; - переменные.

b:array[1..50]of longint; - массив.

begin - операторные скобки. Аналог { на С++

clrscr; - команда для отчистки экрана

write('введите ограничение: '); - выводит на экран текст в кавычках

readln(m); - читает введенную переменную с клавиатуры

i:=1; - переменной i присваивается значение 1

{write('1');} - коментарий

while i<=m do - цикл пока, почитай в какой-нить лит-ре, по-моему и в С есть аналог
begin
sum:=0;k:=1;
for j:=1 to i-1 do

if i mod j=0 then - условие if, в С++ имеется аналог
begin
b[k]:=j;
inc(k); - увеличивает переменную k на 1;
end;

for j:=1 to k-1 do sum:=sum+b[j]; - Цикл for, в с++ есть аналог

if i=sum then write(' ',i);inc(i);
end;
readln;
end. - конец операторных скобок. Аналог } на С++

Ну вобщем это все. Вторую если будет время позже опишу
622
17 марта 2007 года
nilbog
507 / / 19.12.2006
у меня бы терпения не хватило )
Цитата: nevile

crt; - модуль для отчистки экрана при каждом запуске программы


только crt это не модуль для очистки экрана ))

2.0K
17 марта 2007 года
nevile
138 / / 05.01.2007
я не помню как он точно называется. Но через в crt входит очистка экрана.
9.9K
17 марта 2007 года
o1ps
51 / / 11.10.2006
а из данного кода

function perf(n:integer):boolean;
var i,s:integer;
begin s:=0;
for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
perf:=s=n
end;

1-ая, и вторая строка это описание переменных. s присваивается 0.
А что означает for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
perf:=s=n
622
17 марта 2007 года
nilbog
507 / / 19.12.2006
Цитата: o1ps
а из данного кода

function perf(n:integer):boolean;
var i,s:integer;
begin s:=0;
for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
perf:=s=n
end;

1-ая, и вторая строка это описание переменных. s присваивается 0.
А что означает for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
perf:=s=n


 
Код:
function perf(n:integer):boolean; {заголовок функции}
var i,s:integer;
begin s:=0; {в s будем накапливать сумму}
for i:=1 to n div 2 do
 if n mod i = 0 then s:=s+i;{ проверяем все числа от 1 до n div 2 если делитель то прибавляем к сумме}
perf:=s=n { возвращаем функции значение s=n то есть true если наша сумма равняется числу}
end;
9.9K
18 марта 2007 года
o1ps
51 / / 11.10.2006
а как данный код for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
можно реализовать допустим на Фортране или C++?
242
18 марта 2007 года
Оlga
2.2K / / 04.02.2006
Цитата: o1ps
а как данный код for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
можно реализовать допустим на Фортране или C++?


 
Код:
for(i = 1; i < n/2; i++)
    if(n % i == 0)
         s += i; [COLOR=green]//исправила[/COLOR]


[COLOR=red]читай пожалуйста правила форума и научись использовать теги code.[/COLOR]
[COLOR=red]также стоит читать книги, статьи по программированию. у нас на сайте и в интернете этого добра валом.[/COLOR]
622
18 марта 2007 года
nilbog
507 / / 19.12.2006
Ольга там опечатка не s++ мы не инкрементируем а сумму копим
242
18 марта 2007 года
Оlga
2.2K / / 04.02.2006
точно, перепутала i с 1, спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог