Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 810
#1

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

15.08.2014, 21:24. Просмотров 501. Ответов 9
Метки нет (Все метки)

Доброго времени суток!

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

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

Написать программу для вычисления среднегеометрического трех чисел
Написать программу для вычисления среднегеометрического трех чисел. Вычисление...

поиск среднегеометрического
Снова накосячил с программой. Нужно найти среднегеометрическое элементов...

Программа для вычисления F с описанием и вызовом процедуры вычисления
исправить ошибки в программе t=(P^2+L^2)^2 Program lab9; {F = (A^2 +...

Программа вычисления
Ребята, помогите сделать программу. Выполнить вычисления Х согласно...

Программа вычисления
Помогите решить эту задачу, выдаёт неправильные результаты, при x=-1 должно...

Программа вычисления
Всем доброго времени суток! Помогите пожалуйста с написанием программы ...

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

Добавлено через 4 минуты
Вот то что мне надо "Создать программу для вычисления среднегеометрического элементов одномерного массива (вводятся кол-во элементов и сами элементы)."
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 22:59 #4
Цитата Сообщение от SuLLeN Посмотреть сообщение
Но как это сделать имея одну кнопку и 2 поля? Или вообще минимум элементов на экране?
Опыт в программировании на Android имеется?
Если имеется, то в XML слое своей активити добавь нужное количество EditText (поля для ввода текста), затем добавь кнопку. Ну и обрабатывай событие клика по кнопке, в котором читай нужный текст со своего EditText.
А как именно распарсить текст, я уже написал.
0
SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 810
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){
                }
            }
        });
0
646kapeh064
59 / 58 / 16
Регистрация: 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
0
SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 810
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) {};
}
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
16.08.2014, 18:53 #8
Цитата Сообщение от SuLLeN Посмотреть сообщение
Вроде можно так перевести
Да, только так и получается, в данном случае.
0
SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 810
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];
}
0
Muhammad97
10 / 10 / 2
Регистрация: 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 {...}
0
16.08.2014, 21:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 21:58
Привет! Вот еще темы с решениями:

программа вычисления пи
Здравствуйте, помогите составить программу вычисления ряда чисел...

Программа вычисления
Написать программу, которая вычисляет размер заработной платы в соответствии...

программа вычисления
Составьте программу вычисления суммы тех элементов одномерного массива A(N),что...

программа для вычисления
Составьте в Excel список условных 20-ти своих одноклассников, предложите форму...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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