Задачки по Turbo Pascal - Форум
Воскресенье, 04.12.2016, 04:54
Задачи по информатике
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ignorer, PASCAL26, atvrider 
Форум » Решение задач по информатике » Другие задания » Задачки по Turbo Pascal
Задачки по Turbo Pascal
КарательДата: Пятница, 14.05.2010, 18:30 | Сообщение # 1
Рядовой
Группа: Новичок
Сообщений: 3
[ 0 ]
Статус: Offline
Задача 1.
Составить программу, которая на ввод натурального трехзначного числа выводит все возможные неповторяющиеся трехзначные числа, которые можно составить из цифр данного числа. Учесть, что если один или два разряда числа равны нулю, или цифры числа повторяются, то количество вариантов сокращается.

Задача 2.
Задано натуральное число N. Найти натуральное число, не превышающее N, с максимальной суммой своих делителей.

Помогите решить плиз.Нужно описать ход решения обеих задач.Желательно к 17.05.
Заранее спасибо.

Сообщение отредактировал Каратель - Пятница, 14.05.2010, 18:39
 
ignorerДата: Пятница, 14.05.2010, 22:26 | Сообщение # 2
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
ну вторая вроде не сложная, а вот первая... над первой придётся попотеть. к 17.05 решу вторую, насчёт первой ничего обещать не могу
 
ignorerДата: Воскресенье, 16.05.2010, 16:00 | Сообщение # 3
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
вот:
Code
uses crt;
var n, a, b : integer;
function delit(a : integer) : integer;
   var b, c : integer;
   begin
    for b:=1 to a do
     if a mod b=0 then c:=c+b;
    delit:=c;
   end;
begin
   clrscr;
   read(n);
   for a:=1 to n do if delit(a)>delit(b) then b:=a;
   write(b);
   readkey;
end.

только ты проверь, я не тестировал результаты.
 
КарательДата: Вторник, 18.05.2010, 17:14 | Сообщение # 4
Рядовой
Группа: Новичок
Сообщений: 3
[ 0 ]
Статус: Offline
Проверил,вроде правильно работает.Точно узнаю завтра)

Добавлено (18.05.2010, 17:14)
---------------------------------------------
Если не трудно можешь коментарии написать?)

 
ignorerДата: Вторник, 18.05.2010, 19:40 | Сообщение # 5
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
да нет, не трудно, но не факт, что выйдет понятно. сейчас напишу
 
ignorerДата: Вторник, 18.05.2010, 21:36 | Сообщение # 6
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
uses crt;
var n, a, b : integer;
function delit(a : integer) : integer;
var b, c : integer;
begin
for b:=1 to a do перебираем значение переменной b от 1 до a
if a mod b=0 then c:=c+b; если число b является делителем a, то мы прибавляем его к сумме c
delit:=c; присваивааем значению функции delit значение суммы c
end; конец процедуры.
begin
clrscr; - очистка экрана
read(n); - программа читает с клавиатуры число n
for a:=1 to n do if delit(a)>delit(b) then b:=a; - перебираем все числа от 1 до n и сравниваем сумму делителей каждого числа с максимальной на данный момент суммой, и если первая сумма оказывается больше второй, то на данный момент числом с наименьшей суммой делителей будет являться 1 число (сумма делителей числа находится при помощи функции delit, описаной выше)
write(b); - прграмма выводит искомое число
readkey; - программа ждёт нажатие любой клавиши
end. - конец
 
КарательДата: Вторник, 18.05.2010, 22:33 | Сообщение # 7
Рядовой
Группа: Новичок
Сообщений: 3
[ 0 ]
Статус: Offline
Спасибо)
 
Форум » Решение задач по информатике » Другие задания » Задачки по Turbo Pascal
Страница 1 из 11
Поиск:

Copyright MyCorp © 2016