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

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

Войти
Регистрация
Восстановить пароль
 
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
#1

Возвращение функий двух значений - Программирование Android

09.10.2015, 16:09. Просмотров 209. Ответов 2
Метки нет (Все метки)

Смотрите...
У меня два числа, которые вещественные (могут быть).
Я каждое (!) число разделил на два ArrayList то что до точки и после.
Есть функция, которая складывает столбиком.

Сначала мы должны складывать дробную часть, от неё мы должны вернуть ArrayList result и temp (если сложение чисел превышает sys - Систему счисления) и передать temp уже функции для сложения целой части.

Вот я не знаю, как сделать, чтобы функция возвращала ArrayList и int, т.е. два значения.
B нужно ли написать новую функцию для дробной части, т.к. для функции дробной части нужно передать temp, а не увеличивать ArrayList.

// Для целой части
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static ArrayList<Integer> Addition(int length, int sys, ArrayList<Integer> num1, ArrayList<Integer> num2, ArrayList<Integer> result) {
        int temp = 0;
        for (int i = 0; i < length; i++) {
            int tempA = (num1.size() > i) ? num1.get(i) : 0; // Временное значение i-го разряда из первого числа
            int tempB = (num2.size() > i) ? num2.get(i) : 0; // Временное значение i-го разряда из второго числа
            result.add(tempA + tempB + temp);
            if (result.get(i) >= sys) {
                result.set(i, result.get(i) - sys);
                temp = 1;
            } else {
                temp = 0;
            }
        }
 
        // Увеличиваем массив
        if (temp == 1) {
            result.add(temp);
        }
        return result;
    }
http://prntscr.com/8pgb92 - картинка. Как должно быть написал.
Тут просто использовал в обоих случаях одну функцию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2015, 16:09     Возвращение функий двух значений
Посмотрите здесь:

Используя оператор цикла для вычесления значений функий - Turbo Pascal
Используя оператор цикла для вычисления значений функции, заданной на интервале при изменении аргумента с заданным шагом. Значения...

Возвращение неправильных значений - C#
Добрый день Написал программу для умножения двух матриц. Но к сожалению метод возвращает мне нули. А на самом деле не должна. ...

Возвращение значений из функции - PHP
Добрый день! Есть индексный файл в котором происходит начало сессии, подключаются библиотека с функциями и шаблоны сайта и...

Возвращение значений из функции - C++
как вернуть кроме значения структуры еще и значение переменной а типа int? struct STROKA { string name; int kolvo,ves; }; ...

Возвращение выполненных значений - jQuery
$(&quot;.sd&quot;).click(function(){ $(&quot;.sd&quot;).animate({ width: '95%', 'min-height': '200px', }); ...

Возвращение значений масивов - C#
Требуется: 1) Создать метод MyReverse(int array), который принимает в качестве аргумента массив целочисленных элементов и возвращает...

возвращение значений функциями - C++
Здравствуйте. Возник у меня следующий вопрос. char** FtpConnect::readServ() { int rc; int countByte; char buff; char*...

Возвращение трех значений - C++
Как в функции возвратить три значения?

Возвращение из функций нескольких значений - C++
Доброго времени суток. Нужна помощь. Дано задание: Напишите функцию swap(int&amp; a, int&amp; b, int&amp; c), которая изменяет значения параметров по...

Шаблон и возвращение булевых значений - C++
Всем привет. есть такой шаблон: template &lt;typename T&gt; T printResult(const char* message, bool pause, const T value) { if...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
09.10.2015, 16:19     Возвращение функий двух значений #2
b0nny, не совсем понял что Вы хотите, но по видимому Вам нужен класс-обёртка (wrapper)

Java
1
2
3
4
5
6
public class Wrapper {
 
    public ArrayList<Integer> list;
    public int myInt;
 
}
и где Вам надо вернуть два значения, то

Java
1
2
3
4
5
6
7
public Wrapper myMethod () {
.....
Wrapper w = new Wrapper();
w.list = mylist;
w.myInt = myInt;
return w;
}
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
09.10.2015, 18:41  [ТС]     Возвращение функий двух значений #3
Пока я это не понимаю...
Решил из одной функции вернуть пока temp для следующей функции.
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
int temp = 0;
AdditionPart2(length2, sys, arrayNum1part2, arrayNum2part2, result2);
Toast.makeText(this, Integer.toString(temp), Toast.LENGTH_SHORT).show();
Addition(length, sys, temp, arrayNum1, arrayNum2, result);
 
public static ArrayList<Integer> Addition(int length, int sys, int temp, ArrayList<Integer> num1, ArrayList<Integer> num2, ArrayList<Integer> result) {
        for (int i = 0; i < length; i++) {
            int tempA = (num1.size() > i) ? num1.get(i) : 0; // Временное значение i-го разряда из первого числа
            int tempB = (num2.size() > i) ? num2.get(i) : 0; // Временное значение i-го разряда из второго числа
            result.add(tempA + tempB + temp);
            if (result.get(i) >= sys) {
                result.set(i, result.get(i) - sys);
                temp = 1;
            } else {
                temp = 0;
            }
        }
 
        // Увеличиваем массив
        if (temp == 1) {
            result.add(temp);
        }
        return result;
    }
 
    public static int AdditionPart2(int length, int sys, int temp, ArrayList<Integer> num1, ArrayList<Integer> num2, ArrayList<Integer> result) {
        for (int i = 0; i < length; i++) {
            int tempA = (num1.size() > i) ? num1.get(i) : 0; // Временное значение i-го разряда из первого числа
            int tempB = (num2.size() > i) ? num2.get(i) : 0; // Временное значение i-го разряда из второго числа
            result.add(tempA + tempB + temp);
            if (result.get(i) >= sys) {
                result.set(i, result.get(i) - sys);
                temp = 1;
            } else {
                temp = 0;
            }
            temp = 100;
        }
        return temp;
    }
Но почему-то постоянно получаю сообщение - temp = 0, хотя я специально temp = 100 написал. Где ошибка, заметить не могу...
temp = 100;

Добавлено через 1 час 35 минут
А точно...
Java
1
temp = AdditionPart2(length2, sys, temp, arrayNum1part2, arrayNum2part2, result2);
Ответ Создать тему
Опции темы

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