Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 2
Регистрация: 21.12.2014
Сообщений: 100
1

Проверка написанной програмки

12.09.2016, 21:36. Показов 371. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, а можно ли ещё упростить код программы, пока я вижу только такое решение...
Задача: Необходимо реализовать линейные целочисленные массивы произвольного размера с сортировкой вставками.
Причем, Обязательные ограничения:
- перегрузка как минимум одной операции над объектами этого класса (операция указана в условии);
- перегрузка операций потокового ввода и вывода для объектов этого класса или определение соответствующих методов ввода/вывода значений объектов класса;
- конструктор (при необходимости перегруженный) и деструктор;
Желательные ограничения:
- наследование;
- виртуальные функции;
- абстрактный класс, чистые виртуальные функции;
- дружественность;
- шаблон класса;

Джавой не увлекался, так прошелся гaлопом по Европе, вот что вышло. Был бы уверен в правильности программы на 100% - не выкладывал бы сюда. Спасибо всем откликнувшимся

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
public class InsertSort {   
    public static void main(String[] args) {        
        /*Для считывания данных воспользуемся классом Scanner, а для вывода PrintWriter*/
        Scanner scanner = new Scanner(System.in);        
        PrintWriter printWriter = new PrintWriter(System.out);
 
        System.out.println("Исходный массив:");        
        
        /*Считываем размер массива,который необходимо отсортировать*/
        int size = scanner.nextInt();        
        int[] a = new int[size];
 
        /*Считываем массив*/
        for (int i = 0; i < size; i++) {
            a[i] = scanner.nextInt();
        }
        
        for (int i = 0; i < size; i++)
        {
          int temp = a[i];   // Запомним i-ый эл.
          int j = i - 1;     // Идём начиная с i-1-го эл. 
          while(j >= 0 && a[j] > temp){ // Пока не достигли начала массива или не нашли элемент больше i-1-го        
            a[j + 1] = a[j]; // Проталкиваем элемент вверх            
            j--;
          }
          a[j + 1] = temp;   // Возвращаем i-1 элемент 
          
        }    
        /*Вывод отсортированного массива*/
        System.out.println("Отсортированный массив:");
        for (int i = 0; i < size; i++) {        
            printWriter.print(a[i] + " ");
        }
 
        /*Удаление объектов классов Scaner и printWriter*/
        scanner.close();
        printWriter.close();
    }   
}
Ранее как-то писал эту же прогу на C++, а сейчас надо ее переписать на JAVA(Переписать чисто тупо не смог, решил написать с нуля, пожалуйста прокомментируйте все недочеты, постараюсь исправить)
Собственно вот код на 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
#include <iostream>
#include <clocale>
#include "Vectors.h"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int length = 0;
    //создание объектов класса Vectors
    Vectors* vector = nullptr;
    Vectors* sortedVector = nullptr;
 
    cout << "Введите размер одномерного целочисленного массива: ";
    cin >> length;
    vector = new Vectors(length);
    cin >> vector;
 
    cout << "Исходный массив:  " << vector;
    sortedVector = new Vectors(vector->GetVectorSize(), vector->Sort());
    cout << "Отсортированный массив:  " << sortedVector;
    
    //удаление объектов класса Vectors
    delete vector;
    delete sortedVector;в
 
    system("pause");
    return 0;
}
0
12.09.2016, 21:36
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2016, 21:36
Ответы с готовыми решениями:

Склеить 2 програмки в 1,все програмки есть готовые
Нужно вставить две программки(готовые) в 1 рамку(как менюшку) программы вот: 1: program mask; uses crt; const n1=23; n2=19; ...

Вызов программой, написанной на С++, функции из dll, написанной на Assembler (явное подключение dll)
Доброго времени суток!Задали лабораторную работу: программа, написанная на с++ должна подключать dll, написанную на Assembler и вызывать...

програмки C++
1. Даны сведения об авто: фамилия владельца, марка, цвет, год выпуска: 1) Найти фамилии владельцев, у которых белые «Жигули». 2) Найти...

2
 Аватар для FatNinja
82 / 82 / 32
Регистрация: 17.02.2016
Сообщений: 226
12.09.2016, 22:47 2
Задание для языка абсолютно неподходящее, так как в java отсутствуют деструкторы и возможность перегрузки операторов (хотя создатели языка сделали перегрузки "+" для контенкации строк и арифметических операций для классов врапперов примитивных типов).
Также в java, если не ошибаюсь в терминах плюсов, нет виртуальных функций. Точнее все методы классов можно назвать виртуальными (если ошибаюсь, надеюсь кто-нибудь поправит).
Что такое дружественность и шаблон класса - тоже не ясно - таких терминов в языке нет.

Если бы у меня стояла такая задача, я бы посоветовал преподавателю не копипастить бездумно задания и написал примерно так (алгоритм сортировки ваш):

Кликните здесь для просмотра всего текста
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
 
public class Runner {
 
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            int[] s = inputNumbers(scanner, "Enter the set of integers.", "exit");
            LineArray lineArray = new LineArray(s);
            System.out.println("\nSource array: " + lineArray);
            System.out.println("\nSorted array: " + lineArray.sort());
        }
    }
    
    static int[] inputNumbers(Scanner scanner, String tooltip, String exitWord) {
        
        // for convenience of entering
        List<Integer> inputNumbers = new ArrayList<>(); 
        int counter = 0;
        System.out.println(tooltip);
        System.out.printf("Input "%s" for end of input.\n", exitWord);
        do {
            System.out.printf("number[%d]: ", counter);
            if (scanner.hasNextLine()) {
                String currentLine = scanner.nextLine().trim();
                if (exitWord.equals(currentLine)) {
                    return inputNumbers.stream().mapToInt(i->i).toArray(); // Only java 8 and above
                }
                try {
                    int currentNumber = Integer.valueOf(currentLine);
                    inputNumbers.add(currentNumber);
                    counter++;
                } catch (NumberFormatException ex) {
                    System.out.println("Illegal input value. " + ex);
                }
            }
        } while (true);
    }
}
 
class LineArray {
    
    private int[] numbers;
    
    public LineArray(int... numbers) {
        this.numbers = numbers;
    }
 
    public LineArray sort() {
        int[] result = new int[numbers.length];
        System.arraycopy(numbers, 0, result, 0, numbers.length);
 
        for (int i = 0; i < result.length; i++) { // sort
            int temp = result[i];
            int j = i - 1;
            while (j >= 0 && result[j] > temp) {
                result[j + 1] = result[j];
                j--;
            }
            result[j + 1] = temp;
        }    
 
        return new LineArray(result);
    }
 
    @Override
    public String toString() {
        return Arrays.toString(numbers);
    }
}
1
3 / 3 / 2
Регистрация: 21.12.2014
Сообщений: 100
12.09.2016, 23:25  [ТС] 3
Как нет? Дружественные классы и дружественные функции есть. Вот в моем понимании дружественный класс - это когда класс может объявить другой класс(или ф-ию) дружественной. В нашем случае ДК получает доступ извне ко всем этим скрытым полям класса. Но он вроде говорят, что нарушает принцип инкапсуляции, поэтому рекомендуют его избегать, по крайней мере нам так говорили... А така плюсах существует тоже две категории шаблонов: шаблоны классов и шаблоны функций. Шаблон функции есть однократно функция, выполняющая операции одной семантики с данными разных типов и описанная ровно один раз для всех типов своих параметров, она имеет один исходный текст своего тела для всех типов данных, к которым применима, а за различие внутренней реализации операций отвечает перегрузка используемых в ней операторов и вызываемых ею других функций, перегрузка самой функции выполняется автоматически. Шаблон же класса есть сокращённая запись нескольких классов, различающихся типами фактических членов и/или определёнными в этих классах константами, но не исходным текстом. Как-то так если понятно, ну в инете более понятно наверное объяснено, я хотел передать суть.
А вот про виртуальные функции что пишут на просторах http://javatutor.net/articles/... ns-in-java .
Да скорее препод и не пытался бездумно копипастить. Может так на скорую руку, не мне ведать...
Большое спасибо за аргументированный комментарий и сой вариант.
0
12.09.2016, 23:25
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2016, 23:25
Помогаю со студенческими работами здесь

решите програмки на C++
1. Описать процедуру Swap(x,y), меняющую содержимо переменных x и y(x и y - вещественные параметры, являющиеся одновремнно входными и...

составте програмки
вот задание За вибором користувача (реалізується через оператор case) розв’язати вказане завдання, використавши власні процедури....

Ускорение програмки
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; struct Tree { char s; struct Tree *d; ...

2 програмки с циклами
1. Составить программу вычисления суммы 5-ти слов в памяти от адреса start_adr в сегменте данных. Протестировать программу при следующем...

Помошь в создании програмки
Суть такая, я только начинаю осваивать программирование, но хотелось бы помощи со стороны. Вообщем я хочу создать программку, которая бы...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией через Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru