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

Программа вычисления среднегеометрического - Android

Восстановить пароль Регистрация
 
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
15.08.2014, 21:24     Программа вычисления среднегеометрического #1
Доброго времени суток!

Интересует такой вопрос - как реализовать ввод кол-ва элементов и ввод самих элементов массива для вычисления среднегеометрического данных?

Я подумываю использовать 2 поля, одно для ввода числа кол-ва элементов, другое для ввода чисел самих элементов через запятую.
Перебрать числа из второго поля и добавить в одномерный массив с размерностью из первого поля.
Перемножить каждый элемент массива (Arr[i]*Arr[i+1])/n, но в конце массива будет ошибка так как вылезу за размерность массива и не знаю как отфильтровать числа из второго поля от запятых и присвоить их к Arr[i].
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 21:24     Программа вычисления среднегеометрического
Посмотрите здесь:

Нужны арифметические вычисления Android
Параллельные вычисления на Android Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 21:53     Программа вычисления среднегеометрического #2
Цитата Сообщение от SuLLeN Посмотреть сообщение
Я подумываю использовать 2 поля, одно для ввода числа кол-ва элементов, другое для ввода чисел самих элементов через запятую
Если надо красиво, то новые элементы массива надо добавлять кнопкой.
Но если надо просто сделать, то достаточно одного текстового поля EditText.
Затем методом split разбить строку через запятую в массив String[], и переобразовать этот массив в числовой int[].
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
15.08.2014, 22:46  [ТС]     Программа вычисления среднегеометрического #3
Цитата Сообщение от 646kapeh064 Посмотреть сообщение
Если надо красиво, то новые элементы массива надо добавлять кнопкой.
Но как это сделать имея одну кнопку и 2 поля? Или вообще минимум элементов на экране?

Добавлено через 4 минуты
Вот то что мне надо "Создать программу для вычисления среднегеометрического элементов одномерного массива (вводятся кол-во элементов и сами элементы)."
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 22:59     Программа вычисления среднегеометрического #4
Цитата Сообщение от SuLLeN Посмотреть сообщение
Но как это сделать имея одну кнопку и 2 поля? Или вообще минимум элементов на экране?
Опыт в программировании на Android имеется?
Если имеется, то в XML слое своей активити добавь нужное количество EditText (поля для ввода текста), затем добавь кнопку. Ну и обрабатывай событие клика по кнопке, в котором читай нужный текст со своего EditText.
А как именно распарсить текст, я уже написал.
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
15.08.2014, 23:28  [ТС]     Программа вычисления среднегеометрического #5
Цитата Сообщение от 646kapeh064 Посмотреть сообщение
XML слое своей активити добавь нужное количество EditText (поля для ввода текста), затем добавь кнопку. Ну и обрабатывай событие клика по кнопке, в котором читай нужный текст со своего EditText.
То есть, если задаю 10 элементов, значит обработчик добавит 10 полей? Не запарится ли юзер клацать по полям и вводить туда циферки?=)

Добавлено через 15 минут
Пока что так:
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
myButton1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (myEdit1.getText().length() != 0){
                    myTextView1.setEnabled(false);
                    myEdit1.setEnabled(false);
                    myTextView2.setEnabled(true);
                    myEdit2.setEnabled(true);
                    
                    myButton1.setText("Подсчитать");
                    
                    if (myEdit2.getText().length() != 0){
                        n = Integer.parseInt(myEdit1.getText().toString());
                        String[] Arr = new String[n];
                        
                        Arr = myEdit2.getText().toString().split(",");
                        
                        for(i=0;i<n;i++)
                        {
                            myTextView3.append(Arr[i]+", ");
                        }
                    }
                    else if (myEdit2.getText().length() == 0){
                        
                    }
                }
                else if (myEdit1.getText().length() != 0){
                }
            }
        });
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
16.08.2014, 00:18     Программа вычисления среднегеометрического #6
Цитата Сообщение от SuLLeN Посмотреть сообщение
myButton1.setText("Подсчитать");
Цитата Сообщение от SuLLeN Посмотреть сообщение
if (myEdit1.getText().length() != 0){ . . . } else if (myEdit1.getText().length() != 0){ }
Интересный подход к программированию... ну допустим пускай так : )

Ты сделал пол дела, осталось массив String[] Arr перевести весь в другой массив Integer[] и произвести вычисления.
А уже после этого, вывести результат, например через AlertDialog, или через свой EditText3
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
16.08.2014, 18:40  [ТС]     Программа вычисления среднегеометрического #7
Цитата Сообщение от 646kapeh064 Посмотреть сообщение
Интересный подход к программированию... ну допустим пускай так : )
Как могу, так и делаю (пока главное что работает). Если есть предложения лучше, выкладывайте=)

Добавлено через 3 минуты
Цитата Сообщение от 646kapeh064 Посмотреть сообщение
или через свой EditText3
Через myTextView3 вывожу...

Добавлено через 1 час 0 минут
Цитата Сообщение от 646kapeh064 Посмотреть сообщение
осталось массив String[] Arr перевести весь в другой массив Integer[]
Вот тут я и застрял

Добавлено через 11 минут
Вроде можно так перевести:
Java
1
2
3
4
5
6
7
8
Integer[] ArrInt = new Integer[n];
                        
Arr = myEdit2.getText().toString().split(",");
for (int i=0;i<Arr.length;i++) {
try {
ArrInt[i] = Integer.parseInt(Arr[i]);
} catch (NumberFormatException nfe) {};
}
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
16.08.2014, 18:53     Программа вычисления среднегеометрического #8
Цитата Сообщение от SuLLeN Посмотреть сообщение
Вроде можно так перевести
Да, только так и получается, в данном случае.
SuLLeN
 Аватар для SuLLeN
21 / 21 / 4
Регистрация: 27.12.2011
Сообщений: 767
16.08.2014, 19:21  [ТС]     Программа вычисления среднегеометрического #9
Ок, задание я выполнил, но так интересно как бы вы это сделали, раз мой подход интересен для вас=)))
Покажите пожалуйста, 646kapeh064.
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
73
74
75
76
77
78
79
80
81
82
package com.mine.lab_1_2;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    
    TextView myTextView1;
    TextView myTextView2;
    TextView myTextView3;
    EditText myEdit1;
    EditText myEdit2;
    Button myButton1;
    int n, i, prod;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        myTextView1=(TextView)findViewById(R.id.textView1);
        myTextView2=(TextView)findViewById(R.id.textView2);
        myTextView3=(TextView)findViewById(R.id.textView3);
        myEdit1=(EditText)findViewById(R.id.editText1);
        myEdit2=(EditText)findViewById(R.id.editText2);
        myButton1=(Button)findViewById(R.id.button1);
        
        myEdit2.setEnabled(false);
        myTextView2.setEnabled(false);
        
        myButton1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (myEdit1.getText().length() != 0){
                    myTextView1.setEnabled(false);
                    myEdit1.setEnabled(false);
                    myTextView2.setEnabled(true);
                    myEdit2.setEnabled(true);
                    
                    myButton1.setText("Подсчитать");
                    
                    if (myEdit2.getText().length() != 0){
                        n = Integer.parseInt(myEdit1.getText().toString());
                        String[] Arr = new String[n];
                        Integer[] ArrInt = new Integer[n];
                        
                        Arr = myEdit2.getText().toString().split(",");
                        prod = Integer.parseInt(Arr[0]);
                        
                        for (i=0;i<Arr.length;i++) {
                            try {
                                ArrInt[i] = Integer.parseInt(Arr[i]);
                                myTextView3.append(ArrInt[i]+", ");
                                prod *= ArrInt[i];
                            } catch (NumberFormatException nfe) {};
                        }
                        prod /= Arr.length;
                        myTextView3.append("\n"+prod);
                    }
                    else if (myEdit2.getText().length() == 0){
                    }
                }
                else if (myEdit1.getText().length() != 0){
                }
            }
        });
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}
Добавлено через 4 минуты
Так правильнее, хотя ничего в данном случае не изменится.
Java
1
2
3
4
5
6
7
for (i=0;i<Arr.length;i++) {
try {
ArrInt[i] = Integer.parseInt(Arr[i]);
} catch (NumberFormatException nfe) {};
myTextView3.append(ArrInt[i]+", ");
prod *= ArrInt[i];
}
Muhammad97
 Аватар для Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 21:58     Программа вычисления среднегеометрического #10
SuLLeN,

Правильнее написать вот так:

Java
1
2
3
if (myEdit1.isEmpty()){
 Toast.makeText(MainActivity.this, "Текст не может быть пустым", Toast.LENGTH_SHORT).show();
 } else {...}
Yandex
Объявления
16.08.2014, 21:58     Программа вычисления среднегеометрического
Ответ Создать тему
Опции темы

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