Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.04.2020
Сообщений: 14
1

Переделать код с C++ на Java

12.01.2021, 14:12. Показов 1068. Ответов 6
Метки нет (Все метки)

Нужно конвертировать код с С на Java.

Дано количество целых чисел N.
Необходимо с помощью пузырьковой сортировки отсортировать единицы в двоичном представлении так, чтобы на выходе целые числа шли в порядке убывания количества единиц.
Пример:
задаём три числа: 1 3 35.
В двоичном представлении это 1 11 100011
Следовательно программа должна вывести: 35 3 1
C
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
 
int num_one(int n)
{
    int i,s=0;
    while(n>0)
    {
       if (n%2) s++;
       n=n/2;
    }
    return s;
}
 
void bubble_sort(int *a, int *b, int n)
{
    int i,k=1,c,t;
    while(1)
    {
        c=0;
        for (i=0; i<n-k; i++)
            if (a[i]>a[i+1])
            {
                c++;
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
                t=b[i];
                b[i]=b[i+1];
                b[i+1]=t;
            }
        if (c==0) return;
        k++;
    }
    
}
 
int main()
{
    int x[]={1,2,3,56,78,23,1024,1023,511,512};
    int p[10],z[10];
    int i;
    
    for (i=0; i<10; i++)
    { 
        p[i]=i;
        z[i]=num_one(x[i]);
    }    
    
    bubble_sort(z,p,10);
    
    for (i=0; i<10; i++) printf("%d ",x[p[i]]);
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2021, 14:12
Ответы с готовыми решениями:

Переделать код с Си на Java
Помогите переделать код с Си на Java. #include &lt;stdio.h&gt; #include &lt;locale.h&gt; int main(void){ ...

Переделать код из Pascal в Java
Помогите переделать код и Pascal в Java uses crt; var a,b:array of integer; n:byte; ...

Не могу переделать код с pascal на Java
Помогите пожалуйста переделать код на java program Project1; {$APPTYPE CONSOLE} var ...

Не могу переделать код с С++ на Java? Выручайте
using namespace std; int gcd(int a, int b) { int t; while (b) { t = a % b; ...

__________________

Записывайтесь на профессиональные курсы Java-разработчиков
Обучение в Java Mentor с оплатой после трудоустройства
6
41 / 29 / 13
Регистрация: 09.06.2018
Сообщений: 137
12.01.2021, 15:00 2
Лучший ответ Сообщение было отмечено Larsson как решение

Решение

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class Main {
    public static void main(String[] args) {
        int[] x = {1, 2, 3, 56, 78, 23, 1024, 1023, 511, 512};
        int[] p = new int[10];
        int[] z = new int[10];
 
        for (int i = 0; i < 10; i++) {
            p[i] = i;
            z[i] = numOne(x[i]);
        }
 
        bubbleSort(z, p, 10);
 
        for (int i = 0; i < 10; i++){
            System.out.println(x[p[i]]);
        }
    }
 
    public static int numOne(int n) {
        int s = 0;
        while (n > 0) {
            if (n % 2 == 1) {
                s++;
            }
            n = n / 2;
        }
        return s;
    }
 
    public static void bubbleSort(int[] a, int[] b, int n) {
        int i, k = 1, c, t;
        while (true) {
            c = 0;
            for (i = 0; i < n - k; i++) {
                if (a[i] > a[i + 1]) {
                    c++;
                    t = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = t;
                    t = b[i];
                    b[i] = b[i + 1];
                    b[i + 1] = t;
                }
            }
            if (c == 0) {
                return;
            }
            k++;
        }
    }
}
1
Модератор
1474 / 462 / 153
Регистрация: 11.08.2017
Сообщений: 1,562
12.01.2021, 15:24 3
3C_273, Число единичек можно считать в одну строчку
Java
1
2
3
private int numberOnes(int n) {
    return Integer.toBinaryString(n).replaceAll("0", "").length();
}
Зачем тупо и бездумно переводить код?
0
41 / 29 / 13
Регистрация: 09.06.2018
Сообщений: 137
12.01.2021, 15:37 4
alecss131, Я видимо не так понял что требовалось. Я думал что нужен такой же код но на java. А так конечно правильно будет как у тебя.

Добавлено через 11 минут
Вот код который будет выглядеть более менее
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
import java.util.ArrayList;
import java.util.Comparator;
 
public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(56);
        list.add(78);
        list.add(23);
        list.add(1024);
        list.add(1023);
        list.add(511);
        list.add(512);
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.toBinaryString(o2).replaceAll("0", "").length() -
                        Integer.toBinaryString(o1).replaceAll("0", "").length();
            }
        });
        System.out.println(list);
    }
}
0
1893 / 1509 / 374
Регистрация: 17.02.2014
Сообщений: 7,613
12.01.2021, 16:48 5
Цитата Сообщение от alecss131 Посмотреть сообщение
Число единичек можно считать в одну строчку
на-ка, проверь на сколько порядков это хуже.
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
public class Helper {
 
    public static void main(String[] args) {
        long begiFirst = System.nanoTime();
        countSetBits(55555);
        long speed1 = System.nanoTime() - begiFirst;
        long begiSecond = System.nanoTime();
        numberOnes(55555);
        System.out.println((System.nanoTime() - begiSecond) / speed1);
    }
 
    private static int countSetBits(int n) {
        int count = 0;
        while (n > 0) {
            count += n & 1;
            n >>= 1;
        }
        return count;
    }
 
    private static int numberOnes(int n) {
        return Integer.toBinaryString(n).replaceAll("0", "").length();
    }
}
у меня в 1000 раз медленнее!
0
0 / 0 / 0
Регистрация: 22.04.2020
Сообщений: 14
12.01.2021, 18:05  [ТС] 6
Мне нужно именно такой как на c++, ничего лишнего добавлять не нужно. Спасибо всем.
0
Модератор
Эксперт Python
28543 / 15412 / 3046
Регистрация: 12.02.2012
Сообщений: 25,265
Записей в блоге: 4
12.01.2021, 21:55 7
Larsson, где-то я этот код видел...
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2021, 21:55

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Переделать код С java на c++
С java на c++ public class Main { public static void main(String args) { int ...

Переделать код с С++ на java
Здравствуйте!помогите пожалуйста переделать код с С++ на java,где должны быть 2...

переделать код из с++ в java
здравствуйте)помогите пожалуйста переделать код из с++ в java. в java должно быть 2 файла input и...

Как переделать код с Java на С++?
package org.kinjey.JordanGaus; public class JordanGaus { public static double...

Переделать код Pascal в Java
Помогите пожалуйста переделать этот код Pascal на Java. Пожалуста. unit likne_unit; {$mode...

Как переделать код с Java на С++?
package org.groon.integral; import java.util.Scanner; public class Integral { public static...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.