Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 16.03.2021
Сообщений: 32

Перевод с плюсов на java

02.05.2022, 19:49. Показов 977. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача состоит в построении двоичного дерева поиска. Я не могу разобрать одну часть кода с плюсов, чтобы перенести её на java.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template<class T>
struct Tree {
    T data;
    Tree *left;
    Tree *right;
};
 
template<class T>
void addInTree(T newData, Tree<T>*& tree) {
    if (tree == nullptr) {
        tree = new Tree<T>;
        tree->data = newData;
        tree->left = nullptr;
        tree->right = nullptr;
        return;
    }
 
    if (tree->data < newData) {
        addInTree(newData, tree->right);
    } else {
        addInTree(newData, tree->left);
    }
}
функция addInTree добавляет элемент в дерево. Вот код из запуска:
C++
1
2
3
4
int menuPickNumber; std::cin >> menuPickNumber;
        if (menuPickNumber == 1) {
            int elem; std::cout << "Введите элемент: "; std::cin >> elem;
            addInTree(elem, tree);
Всё, что я не понимаю что за класс struct Tree, и для чего он нужен, и входные данные в функцию(T newData, Tree<T>*& tree) тоже не понял.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2022, 19:49
Ответы с готовыми решениями:

Перевод с плюсов на чистый си
В общем писал прогу на плюсах, теперь необходима помощь в переводе на чистый &quot;си&quot; #include &lt;stdio.h&gt; #include...

Построчное чтение и запись в файл + перевод с плюсов
Есть у меня код, который построчно считывает и записывает в файл определённые строки. Помогите пожалуйста перевести код на С#. Я что-то уже...

Аналог MoveNext на Java. Перевод программы с C# на Java
Написала программу на C#. Перевожу ее на Java. Проблема возникла в переводе нижеследующего куска программы. В связи с крайне слабым знанием...

2
2 / 1 / 1
Регистрация: 26.08.2021
Сообщений: 31
02.05.2022, 22:49
Лучший ответ Сообщение было отмечено g45g3g34g34 как решение

Решение

Класс Tree нужен для хранения значения и хранения указателей (в Java это все делают ссылочные переменные которые хранят не значения, а адреса) на другие ячейки памяти при добавлнении элементов в дерево. Не понимаю как тут без объявления переменной используешь функцию addInTree(elem, tree), tree - ведь не объявлена у тебя, должна быть ошибка компиляции, ну или по крайней мере в сигнатуре функции второй аргумент должен быть указан по умолчанию и приравнен к nullptr. Tree<T>*& tree - это аргумент, указатель по ссылке - суть заключаеться в том, что в Java например все переменные передаются по значению, и если например ты в методе делаешь новый массив на большее количество элементов и хочешь им пользоваться дальше, то ты должен переприсвоить эту ссылку, здесь подругому.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Array {
    public static void main(String[] args) {
        int[] array = new int[5];
        System.out.println("Old array size = "+array.length);
        array = changeArray(array);
        System.out.printf("New array size = "+array.length);
    }
 
    public static int[] changeArray(int[] array){
        int[] newArray = new int[10];
        return newArray;
    }
}

Old array size = 5
New array size = 10

c c++ так работает
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
#include <iostream>
 
using namespace std;
 
void changeArray(int *&array) {
    
    int const newSize = 20;
 
    int *newArray = new int[newSize];
    for (int i = 0; i < newSize; i++) {
        newArray[i] = i * 10;
    }
 
    delete[] array;
    array = newArray;
    delete[] newArray;
}
 
int main() {
    const int size = 10;
    int* array = new int[size];
 
    for (int i = 0; i < size; i++) {
        array[i] = i;
        cout << array[i] << " ";
    }
    cout << endl;
    
    changeArray(array);
 
    for (int i = 0; i < 20; i++) {
        array[i] = i;
        cout << array[i] << " ";
    }
    cout << endl;
 
 
    return 1;
}
1
0 / 0 / 0
Регистрация: 16.03.2021
Сообщений: 32
02.05.2022, 23:41  [ТС]
Спасибо за ответ) А переменна tree объявляется там же, только мальца выше:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[[noreturn]] int start() {
    Tree<int> *tree = nullptr;
    while(true) {
        std::cout << '\n' <<
            "1. Добавить элемент\n"
            "2. Удалить элемент\n"
            "3. Проверить на пустоту\n"
            "4. Очистить дерево\n"
            "5. Поиск в глубину\n"
            "6. Вывести в порядке возрастания\n"
            "7. Выйти";
        std::cout << "\n> ";
        int menuPickNumber; std::cin >> menuPickNumber;
        if (menuPickNumber == 1) {
            int elem; std::cout << "Введите элемент: "; std::cin >> elem;
            addInTree(elem, tree);
Просто решил, что эту часть будет уже лишним выставлять)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2022, 23:41
Помогаю со студенческими работами здесь

Перевод кода с Pascal на Java - Java SE
var a:Int64; begin Reset(Input,'input.txt'); Rewrite(Output,'output.txt'); read(a); Write(a,9,9-a) end. Заранее...

Перевод код С++ на Java - Java SE
#include &lt;fstream&gt; using namespace std; ifstream cin (&quot;input.txt&quot;); ofstream cout (&quot;output.txt&quot;); int main() { int...

Перевод java.sql.date -> java.util.date?
Перевод java.sql.date -&gt; java.util.date?

Перевод из C# в Java
Помогите перевести в Java public static void FareiSequence(int n) { Console.WriteLine(&quot;{0} / {1}&quot;, 0, 1); ...

Перевод с Си на Java
Помогите перевести программу с Си на Java. Методы cmp, Make и Union не ставил, перевел. Вместо char использую String. typedef struct {...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru