Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка вставкой и сумма элементов массива 
:(
    Опции темы
ArniLand
Дата 26.9.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



написал программу по следующему заданию - создайте одномерный массив строк str [N], где каждая строка состоит из цифровых символов. Выполните сортировку строк по убыванию сумм элементов строки алгоритмом вставки. 
1. При выводе строки где считается сумма элементов массива char, выводиться странная сумма со значением 100. Как это исправить, ведь должно считаться количество элементов строки.
2. Правильно я реализовал сортировку вставками согласно заданию?

Код программы
Код
package laba13;


public class Row {

    private char str[];
    private int nElems;
    
    public Row(int max){
        str = new char[max];
        nElems = 0;
    }
    
    public void insert(char value){
        str[nElems] = value;
        nElems++; 
    }
    public void out(){
        for(int h = 0; h < nElems; h++) {
            System.out.print(str[h] + "");
            System.out.println("");
        }
    }
    public int summary() {
        this.str = str;
        int sum = str.length;
        System.out.println("Сумма элементов строки" + sum);
        return sum;
    }
  
    

      public void insertionSort(){
        int k, j;
        char newValue;
        for (k = 1; k < nElems; k++) {
            newValue = str[k];
            j = k;
            while (j > 0 && str[j + 1] > newValue){
                str[j] = str[j +  1];
                j--;
        }
        str[j] = newValue;
    }
    }

    public static void main(String[] args) {
      int maxSize = 100;
      Row array;
      array = new Row(maxSize);

      array.insert('7');
      array.insert('6');
      array.insert('2');
      array.insert('4');
      array.insert('5');

      array.out();

      array.summary();

      array.insertionSort();

      array.out();
      }
}

PM MAIL   Вверх
syblog
Дата 26.9.2010, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.9.2010

Репутация: нет
Всего: нет



Да вроде все ок
PM MAIL WWW   Вверх
ArniLand
Дата 26.9.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



С суммой мне не нравиться, у меня количество элементов 5, а выводит 100
PM MAIL   Вверх
Connie
Дата 27.9.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 1
Всего: 9



Код

import java.util.*;

public class Main {
    private Vector<NumString> arr = new Vector<NumString>();
    /**
     * @param args the command line arguments
     */
    public Main(){
        arr.add(new NumString("12345"));
        arr.add(new NumString("23456"));
        arr.add(new NumString("34567"));
        arr.add(new NumString("411011"));

        Collections.sort(arr, new Comparator<NumString>(){
            public int compare(NumString a, NumString b){
                return a.getWeight() - b.getWeight();
            }
            });
        for(NumString it:arr){
             System.out.println(it.toString());
        }
    }
    public static void main(String[] args) {
        // TODO code application logic here
        new Main();
    }
}


Код

public class NumString {
    private String vl;
    public NumString(String st){
        vl = st;
    }
    public int getWeight(){
        int sum = 0;
        for(int i=0;i<vl.length();i++){
            sum += Integer.valueOf(""+vl.charAt(i));
        }
        return sum;
    }
    @Override
    public String toString(){
        return vl;
    }
}

Только сортировку я сделал "по ленивому"
PM MAIL WWW   Вверх
ArniLand
Дата 27.9.2010, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



коллекции мне использовать нельзя
PM MAIL   Вверх
Connie
Дата 27.9.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 1
Всего: 9



ArniLand, не используй smile Но мне то можно ;) Я написал класс, который реализует строку, которая, в свою очередь, дает знать о сумме своих символов, как я понял в этом была загвоздка.

А как хранить этот класс (NumString) дело десятое smile 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.