Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Pomogite v pascale s ciklami reshitj zadachki :)
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Одна страница
Модераторы: paradise, KMA
  

Roman25


Удален

Составить программу для графического изображения делимости чисел от 1 до n (n - исходное данное). В каждой строке надо печатать число и сколько плюсов, сколько делителей у этого числа. Например, если исходное данное - число 4, то на экране должно быть напечатано:


1+

2++

3++

4+++

Составить программу получения всех совершенных чисел, меньших заданного числа n. Число называется совершенным, если равно сумме всех своих положительных делителей, кроме самого этого числа. Например, 28 - совершенно, так как 28=1+2+4+7+14.
Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m.
Даны натуральные числа n и m. Найти все пары дружественных чисел, лежащих в диапазоне от n до m. Два числа называются дружественными, если каждое из них равно сумме всех делителей другого (само число в качестве делителя не рассматривается).

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 20 фев. 2005 20:25 | IP
IDStud


Удален

Роман, что Вам не понятно в этих задачах? Попытайтесь решить их сами. Во время решения задач, у Вас будут возникать конкретные вопросы, задавайте их. Я с удовольствием на них отвечу.

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 20 фев. 2005 22:46 | IP
Roman25


Удален

Спасибо ! А можно попытки к решению сюда кидать ?

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 20 фев. 2005 23:12 | IP
Roman25


Удален

Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m.
uses crt;
var n,m,i,a,summ:integer;
begin
clrscr;
readln (n,m);
for i:= 10 to n do
summ:=0;
repeat
a:=i mod 10;
summ:=summ+a;
i:=i div 10;
until i<10;
if (summ+i)*(summ+i)=m then writeln (i);
readkey;
end.
Помогите найти ошибку плз !

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 20 фев. 2005 23:14 | IP
IDStud


Удален

uses crt;
var n,m,i,a,summ:integer;
begin
clrscr;
readln (n,m);
for i:= 1 to n do
begin
summ:=0;
a:= i;
repeat
summ:=summ + a mod 10;
a:=a div 10;
until a<10;
if (summ+a)*(summ+a)=m then writeln (i);
end;
readkey;
end.

Вот что исправлено.
1. Вместо for i:= 10 to n do я написал for i:= 1 to n do.  
Здесь все зависит от того, как трактовать условие задачи. Мне кажется правильнее мой вариант, хотя по идее "квадрат суммы цифр" должен означать, что число как минимум двухзначное, т.е. >=10.
2. После этого же цикла заключил часть операторов в begin...end. Это объясняется правилами записи цикла for. Если тело цикла состоит из нескольких операторов, то их следует заключать в begin...end.
3. Так как переменная i участвует в цикле, то ее в теле цикла изменять нельзя, поэтому я переделал программу так, чтобы изменялась переменная a.

Одна задачи решена. Попробуйте решить остальные.

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 фев. 2005 6:16 | IP
Roman25


Удален

Благодарю вас. Все решал, кроме последней, собственно говоря её сейчас и пытаюсь сделать!

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 фев. 2005 16:33 | IP
Roman25


Удален

Вот что со второй вышло:
uses crt;
var n,m,del1,del2,per,vtor,summ1,summ2:integer;
begin
readln (n,m);
summ1:=0;
summ2:=0;
for per:=n to m do
for vtor:=n to m  do
begin
for del1:= n to m do
for del2:= n to m do
if (per mod del1=0) then inc (summ1);
if (vtor mod del2=0) then inc (summ2);
end;
if (summ1-per)=(summ2-vtor) then writeln (per,' ', vtor);
readkey;
end.
виснет.. помогайте...

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 фев. 2005 17:08 | IP
Roman25


Удален

Точнее, с последней... Про делители...

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 фев. 2005 17:10 | IP
IDStud


Удален

Четвертая задача:

uses crt;
var n,m,del1,del2,per,vtor,summ1,summ2:integer;
begin
readln (n,m);
for per:=n to m - 1 do
for vtor:=per + 1 to m  do
begin
summ1:=0;
summ2:=0;
for del1:= 1 to per div 2 do
if (per mod del1=0) then summ1:=summ1+del1;
for del2:= 1 to vtor div 2 do
if (vtor mod del2=0) then summ2:=summ2+del2;
if (summ1=vtor)and(summ2=per) then writeln (per,' ', vtor);
end;
readkey;
end.

Изменения
1. Заголовки циклов переписались на for per:=n to m - 1 do и for vtor:=per + 1 to m  do, чтобы уменьшить количество перебираемых чисел.
2. В тело цикла вошли операции приравнивания сумм нулю и операция вывода дружественных чисел. Думаю, понятно почему.
3. Ну и сам поиск делителей немного переделан.

Кстати, эта программа требует больших вычислений. Поэтому, если задать большую вилку чисел (например, n=1, m=10000), программа будет долго работать и может показаться, что программа "зависла".

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 фев. 2005 22:47 | IP

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Одна страница

Форум работает на скрипте © Ikonboard.com