С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
1

Ввод массивов через множество textBox, подсчёт суммы, и вывод через listBox. Ошибка при вводе через textBox

23.02.2015, 17:59. Показов 4462. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал я кучу текст боксов, там происходит ввод каждого элемента массива. И вывод через листбокс
По идее должен высчитывать сумму ряда и показывать чему равна эта сумма.
Программа такая работает тока если ввести все поля.
Но консольная версия без использования double.Parse() работает даже если какое-то поле не введено.
в sum = new double[13]; по идее sum = new double[12] должна быть а работает ток с 13.
В цикле использую 12 хотя можно и 13,
если ввод заменить числами, работает как часы.
Подскажите как исправить. Я ток осваиваю шарп желательно попроще обьясните пожалуста
C#
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
                  int i;
                  double summ;
                  double[] sum = new double[13];
                  sum[0] = double.Parse(tb_met.Text);               
                  sum[1] = double.Parse(tb_ugld.Text);
                  sum[2] = double.Parse(tb_tol.Text);
                  sum[3] = double.Parse(tb_am.Text);
                  sum[4] = double.Parse(tb_ksi.Text);
                  sum[5] = double.Parse(tb_uglok.Text);
                  sum[6] = double.Parse(tb_azdi.Text);
                  sum[7] = double.Parse(tb_form.Text);
                  sum[8] = double.Parse(tb_etben.Text);
                  sum[9] = double.Parse(tb_andser.Text);
                  sum[10] = double.Parse(tb_serv.Text);
                  sum[11] = double.Parse(tb_benz.Text);
                  sum[12] = double.Parse(tb_fen.Text);
              summ = 0;
 
                for (i = 0; i <= 12; i++)
                {
                    summ += sum[i];
                    if (i > 11)
                    {
                        listBox1.Items.Add(string.Format("Summ={0}", summ));
                    }
Добавлено через 16 минут
Проблема решена поставил значение text 0. Теперь он по умолчанию ставит 0 значение и тем самым программа работает коректно
0
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
23.02.2015, 17:59
Ответы с готовыми решениями:

Ввод количества итераций через textBox, вывод в listBox, и график в Chart
Доброго дня. Прошу помощи в вводе количества итераций через textBox, выводе через listBox, и...

Вывод данных из XML в TextBox через ListBox
Всё хорошо работает но есть пару но... Как сделать что бы при выборе элемента из listbox данные из...

Написать программу, осуществив ввод одномерного массива через TextBox, а вывод результатов в Label
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер и величину...

Поиск в ListBox через TextBox
Всем привет! Есть такая задача, у нас есть в Форме: 4 ListBox с данными, 1 Textbox, Button...

7
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
23.02.2015, 18:08 2
13 - потому что у вас тринадцать текстбоксов. Уберете один - сможете сделать размерность массива -12.
Уберите if - он не нужен.
Попробуйте заменить double.Parse на Convert.ToDouble.
Если с числами работает, значит, возможно, проблема в именах текстбоксов. Попробуйте поставить 13 новых и не меняйте имена: пусть в коде будут textBox1.Text и т. д. Проверьте, если будет работать - значит проблема в этом.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int i;
double summ;
double[] sum = new double[13];
sum[0] = Convert.ToDouble(tb_met.Text); 
sum[1] = Convert.ToDouble(tb_ugld.Text);
sum[2] = Convert.ToDouble(tb_tol.Text);
sum[3] = Convert.ToDouble(tb_am.Text);
sum[4] = Convert.ToDouble(tb_ksi.Text);
sum[5] = Convert.ToDouble(tb_uglok.Text);
sum[6] = Convert.ToDouble(tb_azdi.Text);
sum[7] = Convert.ToDouble(tb_form.Text);
sum[8] = Convert.ToDouble(tb_etben.Text);
sum[9] = Convert.ToDouble(tb_andser.Text);
sum[10] = Convert.ToDouble(tb_serv.Text);
sum[11] = Convert.ToDouble(tb_benz.Text);
sum[12] = Convert.ToDouble(tb_fen.Text);
summ = 0;
for (i = 0; i <= 12; i++)
{
    summ += sum[i];
}
listBox1.Items.Add(string.Format("Summ={0}", summ));
0
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
23.02.2015, 18:49  [ТС] 3
Ну if нужен для того что бы сумма конечная была, а то он выдаст 13 значении с разными числами ;
13 новых textBox не помогли. И Convert.ToDouble не меняет данной ситуации.
И разве цикл не считываеться по порядку 0,1,2,3,4...12 ,то есть 13 textBoxs?
0
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
23.02.2015, 19:00 4
Цитата Сообщение от DarkSinner Посмотреть сообщение
Ну if нужен для того что бы сумма конечная была, а то он выдаст 13 значении с разными числами
Не выдаст (в моем коде). Цикл заканчивается на 21 строке. И в листбокс пойдет конечный результат.
Цикл считывается по порядку с 0 до 12.
0
Заблокирован
23.02.2015, 19:34 5
DarkSinner, если вам нужно посчитать сумму значений во всех текстбоксах, то можно сделать проще:

C#
1
2
3
4
5
6
7
            listBox1.Items.Add(string.Format("Сумма = {0}",
                 Controls.OfType<TextBox>() //выбираем из всех элементов формы только textBox
                .Select(x => x.Text)//получаем введенный текст
                .Where(x => !string.IsNullOrWhiteSpace(x))//проверяем, что строка не пустая
                .Select(x => double.Parse(x))//преобразовываем строку в число
                .Sum()//суммируем
                ));
можно записать немного короче, но я решил рассписать, чтобы было более понятно.
0
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
23.02.2015, 20:22  [ТС] 6
Ev_Hyper Спасибо, но мне не надо суму всех текс боксов мне надо сумму определённых.
0
Заблокирован
23.02.2015, 21:12 7
DarkSinner, в таком случае можно использовать точно такой-же код, только добавить строчку отбора п критерию (например, те, чьи названия начинаются с: "tb_".
C#
1
2
3
4
5
6
7
8
            listBox1.Items.Add(string.Format("Сумма = {0}",
                Controls.OfType<TextBox>() //выбираем из всех элементов формы только textBox
                .Where(x => x.Name.StartsWith("tb_")) //условие отбора
                .Select(x => x.Text)//получаем введенный текст
                .Where(x => !string.IsNullOrWhiteSpace(x))//проверяем, что строка не пустая
                .Select(x => double.Parse(x))//преобразовываем строку в число
                .Sum()//суммируем
                ));
Или сгруппировать текстбоксы в один groupBox или другой группирующий элемент управления
C#
1
2
3
4
5
6
7
            listBox1.Items.Add(string.Format("Сумма = {0}",
                 groupBox1.Controls.OfType<TextBox>() //выбираем из всех элементов groupBox1 только textBox
                .Select(x => x.Text)//получаем введенный текст
                .Where(x => !string.IsNullOrWhiteSpace(x))//проверяем, что строка не пустая
                .Select(x => double.Parse(x))//преобразовываем строку в число
                .Sum()//суммируем
                ));
как видите вариантов может быть много, но изменения в коде происходит всего в 1 строчке!
0
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
24.02.2015, 09:06  [ТС] 8
Ev_Hyper Спасибо воспользовался с условием отбора, а с группбоксом взял на заметку.
А не подскажите как вернуть быстрые клавиши ctrl +c , ctrl +v, ctrl +x.
А то заблочил и не знаю как вернуть.
кейпресс
C#
1
2
3
4
5
 char ch = e.KeyChar;
            if (!Char.IsDigit(ch) && ch != ',' && ch != 8)
            {
                e.Handled = true;
            }
0
24.02.2015, 09:06
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
24.02.2015, 09:06
Помогаю со студенческими работами здесь

Заполнение ListBox через TextBox
Здравствуйте. Помогите, пожалуйста. Есть форма, нак оторой 2 ListBox'a, TextBox и кнопка. Нужно,...

Поиск в ListBox через TextBox
Всем привет! Как сделать так чтобы при запуске словаря можно было выбором из ListBox сразу...

Фильтрация записей в Listbox через Textbox ()
Ребята помогите решить задачу Суть такая : Есть форма Userform_FIND на ней Listbox_FIND ( ...

Ввод данных в БД через textbox
Всем привет,есть таблица (card) в ней 4 поля (фамилия,имя,отчество,контактные данные) и есть 4...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru