|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
21.10.2007, 08:51 | #1 |
Регистрация: 20.10.2007
Сообщений: 9
|
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки
Вообщем, дано натуральное число N, нужно заменить одну из его цифр, только одну, чтобы получилось число, максимально близкое к некоторой степени двойки. Вот собственно, буду очень благодарен, если еще кто-нить объяснит по-простому
|
21.10.2007, 11:25 | #2 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
начни отталкиваться от количества символов в заданном числе. Наращивай степень, пока двойка в степени не будет иметь то же количество символов. Потом в порядке убывания сравнивай одноразрядные числа, если старшие равны, переходим к младшим, если нет, то приравниваем к одноразрядному числу в степени двойки (если есть число 25 и степень двойки 16, то из 25 получаем 15. из 13 - 16). После сохраняем в массивразницу по модулю, число и степень двойки. Возводим двойку в следующую степень и проверяем ее разрядность, если она такая же, как и у данного числа, повторяем процедуру. Когда разрядность степени двойки будет больше, чем у числа, тогда начинаем искать наименьшую разность в массиве (ответов может быть несколько). Выводим результат =)
Познавая других, мы познаем себя.
С'est la vie... |
21.10.2007, 11:57 | #3 |
Регистрация: 20.10.2007
Сообщений: 9
|
Это конечно круто, спасибо большое. А без массивов можно обойтись? т.к не проходили еще )))))
|
21.10.2007, 12:39 | #4 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
обойтись, конечно, можно, но я бы не советовал. С тебя получится море переменных, да и за самообучение он предмету преподаватель не накажет, а массивы очень удобны в использовании. Можно было бы создать типизированный массив, он для тебя это будет сложнее. Поэтому:
massiv: array [0..10] of array [0..2] of integer; //объявление двумерного integer массива (представь себе таблицу с 11 строками и 3 столбцами, в каждой ячейке можно хранить переменную класса integer. Запись в массив: massiv[3,1]:=853; //присвоение ячейке во 2 столбце, 4 строки значения 853 Чтение из массива: x:=massiv[3,1]; //по анологии
Познавая других, мы познаем себя.
С'est la vie... |
21.10.2007, 14:41 | #5 |
Регистрация: 20.10.2007
Сообщений: 9
|
За самообучение конечно не накажет ), я упустил один момент, надо все-таки решить без масивов,строк и функций...ну вот примерно...
// readln(a); //вводим число b:=sqrt(e); a:=e; c:=a; d:=aqrt(c); while d<>trun(d) do begin c:=c-1; d:=sqrt(c); end; while b<>trun(b) do begin a:=a+1; b:=sqrt(a); end; if c<0 then writeln (a) else if (e-c)>(a-e) then writeln(a) else writeln(c); |
22.10.2007, 07:53 | #6 | |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Цитата:
Попытался указать на ошибки в коде, но так и не понял, что он у тебя делает... Кидай целиком - будем разбирать.
Познавая других, мы познаем себя.
С'est la vie... |
|
22.10.2007, 08:48 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я может чето не допонимаю, но во-первых sqrt здесь не причем ибо
"некоторая степени двойки" это 2^X а не X^2, или нет? Я прав? Во-вторых какое бы число я не ввел, я всегда смогу найти в 2^X =Y тот самый Х исходя из Y логарифмом по основанию 2 и мне не придется никакие цифры переставлять, или ты имееш ввиду что X должен быть целым? Короче уточни задачу, ну очень мутно это все...
I'm learning to live...
|
22.10.2007, 10:00 | #8 |
Регистрация: 20.10.2007
Сообщений: 9
|
Ужас...голова совсем кипит...учусь месяц...и уже мало что понимаю...вот условие полное:
Дано натуральное число N, нужно заменить одну из его цифр, только одну, чтобы получилось число, максимально близкое к некоторой степени двойки. Без массивов, строк и функций. А код который выше, это я в интернете нашел похожую задачку, оттуда и взял - пытался понять что к чему. Вдобавок седня дали еще одну =((( уже с массивами: В массиве записаны целочисленные координаты точек на плоскости. Найти все тройки точек расположенных на одной прямой. |
22.10.2007, 12:28 | #9 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
8,6,5
на эти цифры на чинаются максимальные степени двойки однозначное число первая цифра максимального "8" 2-хзначое первая цифра максимального "6" 3-х "5" 4-х опять "8" 5-ти опять "6" 6-ти опять "5" и т.д. чуствуешь последовательность т.о. находим скольки значное число и заменяем первую цифру
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
22.10.2007, 16:11 | #10 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Возможно условие задачи неполное. Просто в общем виде для всех чисел она однозначно без использования операторов Паскаля не решается. Например для числа 24 есть два решения: 14 и 34, для числа 999 нет решений и т.д. В задачах на линейные алгоритмы обычно оговариваются какие-либо дополнительные условия, чтобы можно было решить простой арифметикой. Посмотри внимательно первоисточник задачи.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в Label записать число в степени? | XilDen | Общие вопросы Delphi | 7 | 03.07.2009 21:03 |
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. | Briz | Помощь студентам | 2 | 11.05.2008 00:56 |
Число в степени | vItal87ka | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 12.01.2008 08:21 |
Какие знаения нужно сложить, чтобы получилось определенное число | Natalia K. | Microsoft Office Excel | 4 | 23.11.2007 13:22 |
как вывести число с ограниченным количеством цифр после запятой? delphi | Ensoph | Помощь студентам | 1 | 02.10.2007 07:50 |