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

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

12.09.2016, 21:36. Показов 361. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2016, 21:36
Ответы с готовыми решениями:

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

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

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

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

2
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2016, 23:25
Помогаю со студенческими работами здесь

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

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

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

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


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

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