Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2014, 04:12   #1
sgt_Nibbles
 
Регистрация: 15.11.2014
Сообщений: 6
По умолчанию (C#)Подсчет четных чисел в строке

Задание: Ввести данные с помощью ListBox, вывод результата в Lable, нужно подсчитать количество четных чисел в выбранной строке.
Проблема в том, что помимо чисел он считает и пробелы.
Код:
        private void button1_Click(object sender, EventArgs e)
        {
                // Получаем номер выделенной строки
            	int index = listBox1.SelectedIndex;
	            // Считываем строку в переменную str
	            string str = (string)listBox1.Items[index];
	            // Узнаем количество символов в строке
	            int len = str.Length; 
	            // Считаем, что количество четных чисел равно 0
	            int count = 0; 
	            // Устанавливаем счетчик символов в 0
	            int i = 0;
	            // Организуем цикл перебора всех символов в строке
	            while (i < len)
	            {
		            // Если нашли четное число, то увеличиваем
		            // счетчик чисел на 1
                    if (str[i] % 2 == 0)
                        count++;
                        i++;
                    
	            }
	            label1.Text = "Количество четных чисел = " +
		            count.ToString();
        }
sgt_Nibbles вне форума Ответить с цитированием
Старый 15.11.2014, 09:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри, все просто, если использовать LINQ. Делается одним запросом, который сам разделит строку, и подсчитает ее элементы:
Код:
using System;
using System.Linq;

namespace Application
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			string s = "1 2 3 4 55 88 99";
			int cnt = s.Split (' ').Select ((v, i) => new {i,v}).Count (n => Convert.ToInt32(n.v) % 2 == 0);
			Console.WriteLine ("{0}",cnt);
			Console.ReadKey ();
		}
	}
}
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2014, 09:42   #3
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Запишите строку в массив, выбрав в качестве разделителя пробел, и работайте с ним.

To Stilet
Классное решение, но задача чисто учебная и думаю ТС вряд ли объяснит как это всё работает.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681

Последний раз редактировалось GetMax; 15.11.2014 в 09:46.
GetMax вне форума Ответить с цитированием
Старый 15.11.2014, 10:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и думаю ТС вряд ли объяснит как это всё работает.
Это да... Возможен такой риск. А ведь давно пора ВУЗам делать упор на современные алгоритмы а не устаревшие.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2014, 15:34   #5
sgt_Nibbles
 
Регистрация: 15.11.2014
Сообщений: 6
По умолчанию

Дело в том, что дана методичка, в которой дано теоретическое объяснение темы, примерное решение одной из задач, а далее уже идут сами варианты с заданиями, где в основном идет игра "Интуиция", приходится искать инфу в нете по данной теме, а препод ничем не помогает, кроме как ткнуть пальцем в номер темы в методичке и пойти попить кофе.

Спасибо, но я сделал проще и добавил в условие не считать пробелы)
Код:
if ((str[i] % 2 == 0) && (str[i] != ' '))
Грубо, но работает)

Последний раз редактировалось Stilet; 15.11.2014 в 15:57.
sgt_Nibbles вне форума Ответить с цитированием
Старый 15.11.2014, 15:57   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А он и не станет помогать, пока калым не дашь )
Ты лучше скажи мой совет подошел? Или действительно так запрещено ассоциацией преподавателей любящих кофе?
Цитата:
я сделал проще и добавил в условие не считать пробелы)
Ага ясно. Что ж жаль что преподы LINQ не любят
I'm learning to live...

Последний раз редактировалось Stilet; 15.11.2014 в 15:59.
Stilet вне форума Ответить с цитированием
Старый 15.11.2014, 15:59   #7
sgt_Nibbles
 
Регистрация: 15.11.2014
Сообщений: 6
По умолчанию

Подошел бы, но увы, все нужно делать по шаблону и не выходить за рамки условия и темы((
sgt_Nibbles вне форума Ответить с цитированием
Старый 15.11.2014, 16:23   #8
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
if ((str[i] % 2 == 0) && (str[i] != ' '))
Не уверен что такое прокатит с двух и более значными числами.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 16.11.2014, 07:42   #9
sgt_Nibbles
 
Регистрация: 15.11.2014
Сообщений: 6
По умолчанию

То что не прокатит, но раз уж ответа нет другого, приходится пользоваться этим методом
sgt_Nibbles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать сумму отрицательных четных чисел, количество четных чисел кратных 3 и т.д. (pascal abc .net) kardinalmax Общие вопросы .NET 1 24.01.2014 09:28
Пусть вводится последовательность чисел, которая заканчивается нулем. Найдите среднее арифметическое четных чисел. d_dima Помощь студентам 3 13.03.2013 12:17
Заданы массивы А(15).В(17),С(10),состоящие из положительных и отрицательных чисел. Определить в каком массиве,больше четных чисел. Richik123 Паскаль, Turbo Pascal, PascalABC.NET 1 19.06.2012 12:24
Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел prelest' Паскаль, Turbo Pascal, PascalABC.NET 4 01.06.2011 10:27
вычислить произведение четных чисел в каждой строке массива. Oliver Sykes Паскаль, Turbo Pascal, PascalABC.NET 5 09.10.2008 03:43