Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.10.2007, 08:51   #1
urgu_st
 
Регистрация: 20.10.2007
Сообщений: 9
Сообщение Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки

Вообщем, дано натуральное число N, нужно заменить одну из его цифр, только одну, чтобы получилось число, максимально близкое к некоторой степени двойки. Вот собственно, буду очень благодарен, если еще кто-нить объяснит по-простому
urgu_st вне форума
Старый 21.10.2007, 11:25   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

начни отталкиваться от количества символов в заданном числе. Наращивай степень, пока двойка в степени не будет иметь то же количество символов. Потом в порядке убывания сравнивай одноразрядные числа, если старшие равны, переходим к младшим, если нет, то приравниваем к одноразрядному числу в степени двойки (если есть число 25 и степень двойки 16, то из 25 получаем 15. из 13 - 16). После сохраняем в массивразницу по модулю, число и степень двойки. Возводим двойку в следующую степень и проверяем ее разрядность, если она такая же, как и у данного числа, повторяем процедуру. Когда разрядность степени двойки будет больше, чем у числа, тогда начинаем искать наименьшую разность в массиве (ответов может быть несколько). Выводим результат =)
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 21.10.2007, 11:57   #3
urgu_st
 
Регистрация: 20.10.2007
Сообщений: 9
По умолчанию

Это конечно круто, спасибо большое. А без массивов можно обойтись? т.к не проходили еще )))))
urgu_st вне форума
Старый 21.10.2007, 12:39   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 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...
SuperVisor вне форума
Старый 21.10.2007, 14:41   #5
urgu_st
 
Регистрация: 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);
urgu_st вне форума
Старый 22.10.2007, 07:53   #6
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
Лампочка

Цитата:
Сообщение от urgu_st Посмотреть сообщение
я упустил один момент, надо все-таки решить без масивов,строк и функций...
Вот это уже интереснее...

Попытался указать на ошибки в коде, но так и не понял, что он у тебя делает... Кидай целиком - будем разбирать.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума
Старый 22.10.2007, 08:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я может чето не допонимаю, но во-первых sqrt здесь не причем ибо
"некоторая степени двойки" это 2^X а не X^2, или нет? Я прав?

Во-вторых какое бы число я не ввел, я всегда смогу найти в 2^X =Y тот самый Х исходя из Y логарифмом по основанию 2 и мне не придется никакие цифры переставлять, или ты имееш ввиду что X должен быть целым?

Короче уточни задачу, ну очень мутно это все...
I'm learning to live...
Stilet вне форума
Старый 22.10.2007, 10:00   #8
urgu_st
 
Регистрация: 20.10.2007
Сообщений: 9
По умолчанию

Ужас...голова совсем кипит...учусь месяц...и уже мало что понимаю...вот условие полное:

Дано натуральное число N, нужно заменить одну из его цифр, только одну, чтобы получилось число, максимально близкое к некоторой степени двойки. Без массивов, строк и функций.

А код который выше, это я в интернете нашел похожую задачку, оттуда и взял - пытался понять что к чему.

Вдобавок седня дали еще одну =((( уже с массивами:

В массиве записаны целочисленные координаты точек на плоскости. Найти все тройки точек расположенных на одной прямой.
urgu_st вне форума
Старый 22.10.2007, 12:28   #9
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

8,6,5
на эти цифры на чинаются максимальные степени двойки
однозначное число первая цифра максимального "8"
2-хзначое первая цифра максимального "6"
3-х "5"
4-х опять "8"
5-ти опять "6"
6-ти опять "5"
и т.д.
чуствуешь последовательность
т.о. находим скольки значное число
и заменяем первую цифру
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума
Старый 22.10.2007, 16:11   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Возможно условие задачи неполное. Просто в общем виде для всех чисел она однозначно без использования операторов Паскаля не решается. Например для числа 24 есть два решения: 14 и 34, для числа 999 нет решений и т.д. В задачах на линейные алгоритмы обычно оговариваются какие-либо дополнительные условия, чтобы можно было решить простой арифметикой. Посмотри внимательно первоисточник задачи.
puporev вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в 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