Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
beeline09
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
#1

Распределить массивы - Android

28.04.2013, 13:41. Просмотров 564. Ответов 11
Метки нет (Все метки)

Делаю график сброса веса, но столкнулся со следующей проблемой... Люди иногда не могут каждый день заносить данные, поэтому, при отсутствии нехватающих дней, мне нужно их добавить и сделать усредненными значения в этих днях.
Мне нужно, чтобы от den[0] до den[den.length-1] были последовательно идущие числа по возрастанию. Это можно сделать разными способами, но чтоб еще ось Y (т.е. Ves) соответствовал ему...вот это для меня пока нерешимая задача.
Вот скрин с пропущенными днями:
Распределить массивы
Здесь int[] Dni надо заполнить пропущенными значениями, а double[] Ves и double[] indx надо заполнить усредненными значениями между первым и последним известными (((78+89)/2=83.5) и ((25,8+29,4)/2=27.6)) значениями в интервале. Причем вставить надо будет это все в те же позиции, что добавятся и у Dni.
Надеюсь сейчас понятно объяснил?
Кто поможет, тому огромный жирный плюс и большущее человеческое спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
28.04.2013, 13:47     Распределить массивы #2
и в чем проблема сложить два числа и разделить на 2?
beeline09
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
28.04.2013, 13:58  [ТС]     Распределить массивы #3
Цитата Сообщение от V0v1k Посмотреть сообщение
и в чем проблема сложить два числа и разделить на 2?
Да неееет) Проблема в том, что массив изначально одного размера, а если добавить пропущенные дни, то массив увеличивается, да и пропущенные значение нужно вставить в нужную позицию.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.04.2013, 14:02     Распределить массивы #4
Так используйте вместо массива generic, например, List<T>, в чём проблема-то?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
28.04.2013, 14:03     Распределить массивы #5
используйте List или оставляйте пустое место в массиве для пропущенных дней.
beeline09
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
28.04.2013, 14:19  [ТС]     Распределить массивы #6
Цитата Сообщение от YuraAAA Посмотреть сообщение
Так используйте вместо массива generic, например, List<T>, в чём проблема-то?
Проблема в том, что я как раз и не могу это сделать. Вы не могли бы с примером мне?

Добавлено через 3 минуты
Цитата Сообщение от V0v1k Посмотреть сообщение
используйте List или оставляйте пустое место в массиве для пропущенных дней.
Пустое место нельзя оставлять, так как дни могут начинаться и с 29 по 31, и с 1 по 16, и т.п. Нужно чтобы в промежутке между первым и последним значением были последовательно растущие значения без пробелов. Это по оси X, а по оси Y надо чтобы те позиции, что у Х были заполнены усредненными значениями первого и последнего известного элемента.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
28.04.2013, 14:23     Распределить массивы #7
Цитата Сообщение от beeline09 Посмотреть сообщение
Проблема в том, что я как раз и не могу это сделать. Вы не могли бы с примером мне?
Java
1
2
List<Day> list = new ArrayList<Day>();
list.add(firstDay);

Цитата Сообщение от beeline09 Посмотреть сообщение
Пустое место нельзя оставлять, так как дни могут начинаться и с 29 по 31, и с 1 по 16, и т.п. Нужно чтобы в промежутке между первым и последним значением были последовательно растущие значения без пробелов. Это по оси X, а по оси Y надо чтобы те позиции, что у Х были заполнены усредненными значениями первого и последнего известного элемента.
не пойму суть проблемы.
beeline09
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
28.04.2013, 14:37  [ТС]     Распределить массивы #8
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
2
List<Day> list = new ArrayList<Day>();
list.add(firstDay);
list.add мне добавит в последнюю позицию, а мне нужно последовательно и в нужную позицию. Этот вариант я рассматривал, но он не подходит.

Суть видна на картинке выше. Нужно заполнить пропущенные дни и в них положить средние значения между первыми известными значениями до и после пропущенного числа. Я не знаю как еще объяснить(
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.04.2013, 14:48     Распределить массивы #9
Java
1
list.add(1, firstDay)
вставит в нужную позицию ( в данном случае в первую), а остальные элементы сдвинет.
beeline09
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
28.04.2013, 15:02  [ТС]     Распределить массивы #10
Цитата Сообщение от YuraAAA Посмотреть сообщение
Java
1
list.add(1, firstDay)
вставит в нужную позицию ( в данном случае в первую), а остальные элементы сдвинет.
То, что нужно! Спасибо огромное! Сейчас попробую реализовать.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
28.04.2013, 15:21     Распределить массивы #11
автодополнение не пробовал юзать? пишешь list.add, потом нажимаешь Ctrl+space и получаешь все варианты.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 17:17     Распределить массивы
Еще ссылки по теме:

Json http парсинг. Массивы Android
Oracle Распределить сумму
C++ Распределить участников по местам
Равномерно распределить элементы по ширине Android

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

Или воспользуйтесь поиском по форуму:
beeline09
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
28.04.2013, 17:17  [ТС]     Распределить массивы #12
Цитата Сообщение от V0v1k Посмотреть сообщение
автодополнение не пробовал юзать? пишешь list.add, потом нажимаешь Ctrl+space и получаешь все варианты.
Ну такие вещи я знаю конечно! Просто я алгоритм не мог придумать. Получилось вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
List<Integer> x = new ArrayList<Integer>();
List<Float> ves = new ArrayList<Float>();
 
//
//Здесь заполняем x и ves не отсортированными значениями.
//
 
for (int i=0; i<x.size()-1; i++)
    {
        int raznica = (x.get(i+1)-x.get(i));
        float dob = ((ves.get(i)+ves.get(i+1))/2);
        if (raznica>1)
            {
                    x.add(i+1, x.get(i)+1);
                    ves.add(i+1, dob);
            }
    }
Все отлично работает теперь! Спасибо большущее всем, кто помогал!
Yandex
Объявления
28.04.2013, 17:17     Распределить массивы
Ответ Создать тему
Опции темы

Текущее время: 04:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru