7.01.2011 / 11:21 | |
XakepPRO Пользователь
| Молодец, за старания даю 120 монет, однако я протестить смог только на бумаге (что не очень хорошо). Теперь моё решение. Обозначим: T - исходная строка, L - длина этой строки. Для решения создадим ещё одну строку T1 (вначале пустую). Далее организуем цикл по номеру символа в строке T. Если очередной символ не #, то добавим его к строке T1, если это знак # и строка T1 не пустая, то удалим из неё последний символ. Программа, реализирующая данный алгоритм на паскале будет иметь следующий вид: var t,t1:string;
l,i,k:integer;
begin
writeln('Введите строку');
readln(t);
l:=length(t);
t1:=''; //Две одинарных кавычки '
k:=0;
for i:=1 to l do
if (t[i]='#') and (k<>0) then
begin
delete(t1,k,1);
k:=k-1;
end
else
begin
k:=k+1;
t1:=t1+t[i];
end;
writeln(t1);
end.
Изменено XakepPRO (7.01 / 11:22) (всего 1 раз) |
7.01.2011 / 11:28 | |
XakepPRO Пользователь
| Тут, как я вижу, любителей бейсика немного, поэтому выкладывать не буду. Если же очень интересно (узнать решение), то скажите мне - напишу.
|
7.01.2011 / 11:44 | |
XakepPRO Пользователь
| Теперь еще одна задача. Легкая. Распечатать числовую последовательность, которая задается по следующим правилам: - первое число последовательности - натуральное число, кратное 3 (входной параметр задачи); - каждый последующий элемент равен сумме кубов цифр предыдущего. Например: 33
3^3 + 3^3 = 54
5^3 + 4^3 = 189
1^3 + 8^3 + 9^3 = 1242
1^3 + 2^3 + 4^3 + 2^3 = 81
8^3 + 1^3 = 513
5^3 + 1^3 + 3^3 = 153
Вычисления прекратить, когда очередной элемент последовательности станет равен 153. (Известно, что любая такая последовательность рано или поздно приводит к 153). Даю за неё 70 монет. |
7.01.2011 / 14:27 | |
LPzhelud Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| XakepPRO, int proc(int input){
return next(input);
}
int next(int in){
Vector v=new Vector();
for(int i=1;in>0;i++){
v.addElement(new Integer(in%row(10,i));
in-=in%row(10,i);
}
int sum;
for(int i=0;i<v.size();i++){
sum+=row(((Integer)(v.elementAt(i))).intValue(),3);
}
return sum==153?153:next(sum);
}
int row(int a,int b){
int ret=1;
for(int i=0; i<b;i++){
ret*=a;
}
return ret;
}
__________________
Эль Презеденте |
7.01.2011 / 14:59 | |
XakepPRO Пользователь
| На вас не раскошелишься) (не наберещься денег). Яву не знаю, поэтому результат будет запоздалым. Давайте, чтобы легче было тестировать, компилировать прогрмаммы и выкладывать суда?
|
7.01.2011 / 15:24 | |
LPzhelud Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| XakepPRO, Мне на бумаге компилировать?)
__________________
Эль Презеденте |
7.01.2011 / 16:02 | |
XakepPRO Пользователь
| xD, если вдруг в бумаге возникнут электрические токи.
Ты на телефоне?
|
7.01.2011 / 20:16 | |
Artej Пользователь Сейчас: Offline
Имя: Артём Регистрация: 15.01.2010
| Представить число –37,53(10 система счисления) в форме с плавающей точкой в тридцатидвухразрядной ячейке.
|
7.01.2011 / 20:33 | |
Artej Пользователь Сейчас: Offline
Имя: Артём Регистрация: 15.01.2010
| Большая МЕГА-подсказка.
Прикрепленные файлы: Skachat_lekciju(…).pdf (471.9 кб.) Скачано 855 раз |
7.01.2011 / 20:47 | |
XakepPRO Пользователь
| А попроще не мог формат? У меня телефон такой не читает)
Как я понял, это число нужно перевести в двоичную систему.
Давайте будем решать по кускам.
37 в 10сс (системе счисления) = 100101 в 2сс 0.53 в 10сс = 0.100001111010111000011 в 2сс Как я знаю, представление отрицательных чисел в 10сс осуществляется добавлением 1 перед записью этого же числа в 2сс, и эмм.. инвертированием записи таким вот образом: 1 на 0 0 на 1
Получаем: 1011010.011110000101000111100 (хотя в последних двух может быть и так: 01)
Вуаля, решение готово.
|