Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
1

Преобразовать элемент в числе без цикла и без рекурсии

18.10.2012, 10:10. Показов 2166. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Вопрос такой, как преобразовать элемент в целом числе, а именно самый правый 0 в 1, не используя циклы и рекурсию.
Буду рад всем идеям.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 10:10
Ответы с готовыми решениями:

Array: Как без цикла узнать содержится ли в массиве элемент?
Как без цикла узнать содержиться ли в массиве эллемент???

Stack Overflow без рекурсии
Предложили такую задачку. Надо написать программу, которая кидает SO, использовать рекурсию нельзя....

Быстрая сортировка без рекурсии
КАК решить быструю сортировку без рекурсии на языке java, очень очень срочно....вопрос жизни и...

Вызвать переполнение стека без рекурсии
Как вызвать переполнение стека без рекурсии? Вариант throw new StackOverflowError - тоже не...

19
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 11:00 2
Java
1
2
int a = 10; 
a+=1;
не?
0
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 11:13  [ТС] 3
Цитата Сообщение от mutagen Посмотреть сообщение
Java
1
2
int a = 10; 
a+=1;
не?
не

Java
1
2
int a = 101
a+=1
а=10 это только частный случай
0
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
18.10.2012, 11:39 4
Цитата Сообщение от hoocie Посмотреть сообщение
Вопрос такой, как преобразовать элемент в целом числе, а именно самый правый 0 в 1, не используя циклы и рекурсию.
А если не 0, то что? Задание не полное.
0
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 12:04  [ТС] 5
Цитата Сообщение от turbanoff Посмотреть сообщение
А если не 0, то что? Задание не полное.
вся информация, которая была в задании,вся изложена. больше ничего не говориться а что если... и тд.
требуется алгоритм,а какой - в этом все дело

Добавлено через 15 минут
задание ведь на сообразительность)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
 
public class Hel
{    
    public static void run(){
        try{
            int m = 3060, n = 4080, a, result;
            
            result = (int) (Math.floor( Math.random() * (n - m + 1) ) + m);
            
            System.out.println("Number: " + result);
            
            Scanner in = new Scanner(System.in);
            
            System.out.print("0-->1: ");
            
            n = in.nextInt();
            
            a = n + result;
            
            System.out.println("Result: " + a);
            
            in.close();
        }
        catch (Exception e){
            System.err.println(e.getMessage());
        }
    }
    public static void main(String[] args) {
        run();
    }
}
0
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 13:24  [ТС] 6
может у кого есть еще какие небудь идеи
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 13:45 7
дето так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Random;
 
public class ToZero {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i < 100; i++) {
            int r = random.nextInt(100);
            System.out.println(r + " " + getValue(r));
        }
    }
 
    static int getValue(int i) {
        char[] c = Integer.valueOf(i).toString().toCharArray();
        if (c[c.length - 1] == '0')
            c[c.length - 1] = '1';
        return Integer.parseInt(String.valueOf(c));
    }
}
0
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
18.10.2012, 13:56 8
Java
1
2
3
4
5
6
7
int k = 1342420;
        
        StringBuilder bld=new StringBuilder(Integer.toString(k));
        char chLast=bld.charAt(bld.length()-1);
        if (chLast==0) bld.setCharAt(bld.length()-1, '1');
        k=Integer.parseInt(bld.toString());
        System.out.print(k);
0
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 14:01  [ТС] 9
"...не используй циклы и рекурсию..."
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 14:12 10
Цитата Сообщение от RequiemMass Посмотреть сообщение
if (chLast==0) bld.setCharAt(bld.length()-1, '1');
вот тут у вас будет отличный сигфолт )))

Добавлено через 11 минут
Цитата Сообщение от hoocie Посмотреть сообщение
"...не используй циклы и рекурсию..."
и где у меня циклы???

Java
1
2
3
4
5
6
static int getValue(int i) {
        char[] c = Integer.valueOf(i).toString().toCharArray();
        if (c[c.length - 1] == '0')
            c[c.length - 1] = '1';
        return Integer.parseInt(String.valueOf(c));
    }
0
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
18.10.2012, 14:20 11
hoocie, а вы уверены, что правильно поняли задание? Просто это довольно популярная задача, но про число в двоичном виде.
0
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 14:38  [ТС] 12
Цитата Сообщение от exiqa Посмотреть сообщение
hoocie, а вы уверены, что правильно поняли задание? Просто это довольно популярная задача, но про число в двоичном виде.
уверен. я тоже догадывался про двоичный вид, видимо на это и расчитывали когда дали задание
0
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
18.10.2012, 18:39 13
mutagen, можно по подробнее?
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 22:35 14
Цитата Сообщение от RequiemMass Посмотреть сообщение
mutagen, можно по подробнее?
сравнение char с int
1
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
21.10.2012, 13:00 15
Java
1
2
3
4
5
6
7
8
9
10
switch(x % 10) {
    case 0: return x + 1;
    case 1: return x - 1;
    default: return x;
}
// для битов:
switch(x & 0x1) {
    case 0: return x | 0x1;
    case 1: return x & 0xfffffffe;
}
не?
0
14 / 13 / 5
Регистрация: 04.10.2012
Сообщений: 29
21.10.2012, 18:20 16
Как я понимаю, возможны варианты типа
40567 -> 41567
401230567 -> 401231567
Поэтому в варианте mutagen надо найти последнее вхождение lastIndexOf('0') в строку, а затем заменить его на '1'.

Добавлено через 10 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
 
public class Last
{
        public static void main(String[] args)throws Exception
        {
                Scanner sc = new Scanner(System.in);
                int val  = sc.nextInt();
                System.out.println(getValue(val));
 
        }
 
        static int getValue(int i) {
                String str = Integer.valueOf(i).toString();
                int index = str.lastIndexOf('0');
                char[] c = str.toCharArray();
                c[index] = '1';
                return Integer.parseInt(String.valueOf(c));
        }
}
0
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
21.10.2012, 23:08 17
mutagen, чем оправдано использование valueOf в строке
Java
1
char[] c = Integer.valueOf(i).toString().toCharArray();?
Добавлено через 31 минуту
Ну или даже по другому спрошу, критично ли, что вы используете класс обёртку?
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.10.2012, 01:17 18
Цитата Сообщение от RequiemMass Посмотреть сообщение
критично ли, что вы используете класс обёртку?
я не понимаю вопроса, что за смысл Вы вкладываете в "критично" и для чего нужно оправдание Integer.valueOf(i)?
0
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
22.10.2012, 13:10 19
mutagen, Я всё это к тому, что можно просто вот так написать.
Java
1
Integer.toString(k).toCharArray();
0
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.10.2012, 21:01 20
ваш вариант популирует новый String объект, а мой кеширован, хотя в итоге всё равно вызывается ваш.
Это привычка просто пользоваться экономными к памяти вариантами и в данном конкретном случае она ничего не даёт.
Но вот если бы этих интежеров было много и они нужны были бы как интежеры а не как строка, вот тогда бы стало заметно на моём варианте

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
 
 public static String toString(int i) {
        if (i == Integer.MIN_VALUE)
            return "-2147483648";
        int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
        char[] buf = new char[size];
        getChars(i, size, buf);
        return new String(buf, true);
    }
2
22.10.2012, 21:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2012, 21:01
Помогаю со студенческими работами здесь

Вычисление факториалов больших чисел, без рекурсии
public static void main(String args) { BigInteger bi1, bi2, bi3; int n = 20; ...

Как обойти дерево файловой системы БЕЗ рекурсии
Подскажите как обойти дерево файловой системы на заданную глубину БЕЗ рекурсии, и найти элементы...

Работа с массивом без цикла
Есть массив из N элементов. Возможно ли без цикла узнать, есть ли в массиве такой элемент с...

Как без цикла объявить?
ArrayList mat = new ArrayList; //как не делать этот цикл? for(int i=0;i&lt;n;i++) { mat=new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru