<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Статьи о программировании, все о программировании, исходники программ &#187; Visual Studio 2008</title>
	<atom:link href="http://statprog.ru/tag/visual-studio-2008/feed" rel="self" type="application/rss+xml" />
	<link>http://statprog.ru</link>
	<description>Авторские статьи, исходники программ.</description>
	<lastBuildDate>Mon, 23 Jan 2012 08:02:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Поиск чисел, равных сумме факториалов своих цифр</title>
		<link>http://statprog.ru/2009/04/08/poisk-chisel-ravnyx-summe-faktorialov-svoix-cifr</link>
		<comments>http://statprog.ru/2009/04/08/poisk-chisel-ravnyx-summe-faktorialov-svoix-cifr#comments</comments>
		<pubDate>Wed, 08 Apr 2009 19:54:50 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[C / C++ / C#]]></category>
		<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=171</guid>
		<description><![CDATA[В этой статье вы узнаете, как решить и написать следующую задачу на C#: - Найти числа, равные сумме факториалов своих цифр. Например, 1!+4!+5! = 145 Как эта задача решается? Мы устанавливаем диапазон чисел, среди которых будем искать такие числа, которые равны сумме факториалов своих цифр. Дальше находим факториал каждой цифры данного числа, суммируем суммы факториалов [...]]]></description>
			<content:encoded><![CDATA[<p>В этой статье вы узнаете, как решить и написать следующую задачу на <strong>C#</strong>:</p>
<p>- Найти числа, равные сумме факториалов своих цифр. Например, 1!+4!+5! = 145</p>
<div id="attachment_177" class="wp-caption aligncenter" style="width: 310px"><a href="http://statprog.ru/wp-content/app_findnumsummfact.gif" rel="lightbox[171]"><img class="size-medium wp-image-177" title="Поиск чисел, равных сумме факториалов своих цифр" src="http://statprog.ru/wp-content/app_findnumsummfact-300x248.gif" alt="Поиск чисел, равных сумме факториалов своих цифр" width="300" height="248" /></a><p class="wp-caption-text">Поиск чисел, равных сумме факториалов своих цифр</p></div>
<p>Как эта задача решается? Мы устанавливаем диапазон чисел, среди которых будем искать такие числа, которые равны сумме факториалов своих цифр. Дальше находим факториал каждой цифры данного числа, суммируем суммы факториалов и проверяем на равенство: [сумма] = [число], где [сумма] &#8212; это, найденная сумма факториалов всех цифр данного числа, а [число] – данное число в диапазоне.<span id="more-171"></span> Так вот, если равенство выполняется, то сохраняем это выражение в массив. Теперь реализуем этот алгоритм в программный код.</p>
<p>Для начала напишем рекурсивную функцию нахождения факториала числа. <strong>Факториал</strong> находится так: все числа от 1 до числа, факториал которого нужно найти, перемножаем.<br />
Готовый код этой функции:</p>
<pre class="brush: csharp; title: ; notranslate">int fact(int f) {
	int fact = 1;
	for (int i = 1; i &lt; = f; i++)
		fact *= i;

	return fact;
}</pre>
<p>Процедура для кнопки “<strong>Найти</strong>”:</p>
<pre class="brush: csharp; title: ; notranslate">private void button1_Click(object sender, EventArgs e) {
	int q = 0;
	String str = &quot;&quot;, sint = &quot;&quot;;
	listBox1.Items.Clear();
	DateTime start = (DateTime.Now);
	for (int dip = Convert.ToInt32(textBox1.Text); dip &lt; = Convert.ToInt32(textBox2.Text); dip++) {
		q = 0;
		sint = Convert.ToString(dip);
		int[] mass = new int[sint.Length];
		for (int i = 0; i &lt; sint.Length; i++) {
			q += sint.Substring(i, 1) == &quot;0&quot; ? 1 : sint.Substring(i, 1) == &quot;1&quot; ? 1 :
			sint.Substring(i, 1) == &quot;2&quot; ? 2 : fact(Convert.ToInt32(sint.Substring(i, 1)));
			mass[i] = Convert.ToInt32(sint.Substring(i, 1));
		}
		if (q == dip) {
			str = &quot;&quot;;
			for (int i = 0; i &lt; sint.Length; i++) {
				if (i &lt; sint.Length - 1)
					str = str + Convert.ToString(mass[i]) + &quot;! + &quot;;
				else
					str = str + Convert.ToString(mass[i]) + &quot;! = &quot;;
			}
			listBox1.Items.Add(str + sint);
		}
	}
	DateTime end = (DateTime.Now);

	listBox1.Items.Add(&quot;Время выполнения: &quot; + Convert.ToString(end — start));
}</pre>
<p>По ходу работы программы выполняется на такие цифры как 0, 1 и 2, для них мы не выполняем поиск факториала, а просто приравниваем 1, 1 и 2 соответственно. Так как 0! = 1, 1! = 1, а 2! = 2, то мы не будем тратить процессорное время на запуск функции нахождения факториала, а приравняем соответствующие значения.<br />
Код процедуры “<strong>Завершить работу</strong>”:</p>
<pre class="brush: csharp; title: ; notranslate">private void button3_Click(object sender, EventArgs e) {
	Application.Exit();
}</pre>
<div id="attachment_178" class="wp-caption aligncenter" style="width: 310px"><a href="http://statprog.ru/wp-content/app_findnumsummfact_res.gif" rel="lightbox[171]"><img class="size-medium wp-image-178" title="Поиск чисел, равных сумме факториалов своих цифр" src="http://statprog.ru/wp-content/app_findnumsummfact_res-300x245.gif" alt="Поиск чисел, равных сумме факториалов своих цифр" width="300" height="245" /></a><p class="wp-caption-text">Поиск чисел, равных сумме факториалов своих цифр</p></div>
<p>В этой процедуры, вызываемой нажатием на кнопку “Завершить работу”, мы вызываем событие выхода из программы.<br />
На рисунке приведен результат выполнения программы. Диапазон использовался от 0 до 1 млн. В этом диапазоне, как видите, найдено всего 4 числа, которые необходимо найти по заданию.</p>
<blockquote><p><strong>Автор</strong>: <em>Евтеев Евгений Александрович</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/04/08/poisk-chisel-ravnyx-summe-faktorialov-svoix-cifr/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Переставить числа 0, 1 и 2 в порядке возрастания, используя перестановку 2-х элементов</title>
		<link>http://statprog.ru/2009/04/05/perestavit-chisla-0-1-i-2-v-poryadke-vozrastaniya-ispolzuya-perestanovku-2-x-elementov</link>
		<comments>http://statprog.ru/2009/04/05/perestavit-chisla-0-1-i-2-v-poryadke-vozrastaniya-ispolzuya-perestanovku-2-x-elementov#comments</comments>
		<pubDate>Sat, 04 Apr 2009 20:13:06 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[C / C++ / C#]]></category>
		<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=70</guid>
		<description><![CDATA[В данной статье будет разобрано решение следующей задачи: В массиве стоят числа 0, 1 и 2. Переставить их в порядке возрастания, если единственной разрешенной операцией (помимо чтения) над массивом является перестановка двух элементов. Реализовать программный код будем на C# в среде разработки Visual Studio 2008 как Windows приложение с формами. Начинаем, конечно, с создания проекта [...]]]></description>
			<content:encoded><![CDATA[<p>В данной статье будет разобрано решение следующей задачи:<br />
В массиве стоят числа 0, 1 и 2. Переставить их в порядке возрастания, если единственной разрешенной операцией (помимо чтения) над массивом является перестановка двух элементов.</p>
<p>Реализовать программный код будем на C# в среде разработки Visual Studio 2008 как Windows приложение с формами.<br />
Начинаем, конечно, с создания проекта с формой. На форме нужно разместить следующие объекты:<span id="more-70"></span></p>
<ol>
<li>Надпись Label;</li>
<li>Текстовое поле Textbox, переименовать имя в “cout_oper”;</li>
<li>Кнопку Button, переименовать в “work”;</li>
<li>Два текстовых поля большой длины RichTextbox, переименовать в “ data_mas ” и “date_mas_ch” соответственно.</li>
</ol>
<p>Пример показан на рисунке:</p>
<div id="attachment_72" class="wp-caption aligncenter" style="width: 310px"><a href="http://statprog.ru/wp-content/appl_9_3.gif" rel="lightbox[70]"><img class="size-medium wp-image-72 " title="Переставить числа 0, 1 и 2 в порядке возрастания" src="http://statprog.ru/wp-content/appl_9_3-300x132.gif" alt="Переставить числа 0, 1 и 2 в порядке возрастания" width="300" height="132" /></a><p class="wp-caption-text">Переставить числа 0, 1 и 2 в порядке возрастания</p></div>
<p>Программа не большая и довольно проста. Рассмотрим процедуру “work_Click(), которая вызывается всякий раз, когда происходит событие клика по кнопке “work”:</p>
<pre class="brush: csharp; title: ; notranslate">private void work_Click(object sender, EventArgs e) {
	data_mas.Clear();
	date_mas_ch.Clear();
	Random r = new Random();
	int c_m = r.Next(10, 30), count = 0;
	int[] mass = new int[c_m];
	for (int i = 0; i &lt; c_m; i++) {
		mass[i] = r.Next(0, 3);
		data_mas.Text = data_mas.Text + &quot; &quot; + mass[i];
	}
	for (int i = 0; i &lt; c_m; i++) {
		int k = i, x = mass[i];
		for (int j = i + 1; j &lt; c_m; j++)
			if (mass[j] &lt; x) {
				k = j;
				x = mass[j];
				count++;
			}
		mass[k] = mass[i];
		mass[i] = x;
	}
	for (int i = 0; i &lt; c_m; i++)
		date_mas_ch.Text = date_mas_ch.Text + &quot; &quot; + mass[i];
	cout_oper.Text = Convert.ToString(count);
}</pre>
<p>В этой процедуре сначала происходит очистка текстовых полей большой длины, чтобы при следующем запуске процедуры поля заполнялись только новыми данными. Дальше генерируем длину массива от 10 до 30 и создаем его. В первом цикле for происходит заполнение массива числа 0, 1 или 2 также случайно и вывод его в форму.</p>
<p>Затем мы используем сортировку, переставляя два элемента, если это необходимо. Самый последний цикл for выводит отсортированный в порядке возрастания массив в поле “date_mas_ch”, а в поле “cout_oper” записывается число равное количеству операций, которых нам понадобилось выполнить, чтобы отсортировать массив.</p>
<div id="attachment_73" class="wp-caption aligncenter" style="width: 310px"><a href="http://statprog.ru/wp-content/appl_9_3-result.gif" title="Пример выполнения программы Переставить числа 0, 1 и 2 в порядке возрастания" rel="lightbox[70]"><img class="size-medium wp-image-73" title="Пример выполнения программы Переставить числа 0, 1 и 2 в порядке возрастания" src="http://statprog.ru/wp-content/appl_9_3-result-300x131.gif" alt="Пример выполнения программы Переставить числа 0, 1 и 2 в порядке возрастания" width="300" height="131" /></a><p class="wp-caption-text">Пример выполнения программы Переставить числа 0, 1 и 2 в порядке возрастания</p></div>
<p>Теперь пробуйте запустить приложение. Пример выполнения программы показан выше.</p>
<blockquote><p><strong>Автор</strong>: Евтеев Евгений Александрович</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/04/05/perestavit-chisla-0-1-i-2-v-poryadke-vozrastaniya-ispolzuya-perestanovku-2-x-elementov/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вычислить сумму каждой рядом стоящей группы чисел на C#</title>
		<link>http://statprog.ru/2009/04/04/vychislit-summu-kazhdoj-ryadom-stoyashhej-gruppy-chisel-na-c</link>
		<comments>http://statprog.ru/2009/04/04/vychislit-summu-kazhdoj-ryadom-stoyashhej-gruppy-chisel-na-c#comments</comments>
		<pubDate>Sat, 04 Apr 2009 15:50:27 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[C / C++ / C#]]></category>
		<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=51</guid>
		<description><![CDATA[В данной статье будет разобрано решение следующей задачи: Дан массив a[1]..a[n] и число m < = n. Для каждой группы из m стоящих рядом членов (таких групп, очевидно, n-m+1) вычислить ее сумму. Как мы решим эту задачку? Сразу хочу скачать, реализовать программу будем на C# в среде разработки Visual Studio 2008 как Windows приложение с [...]]]></description>
			<content:encoded><![CDATA[<p>В данной статье будет разобрано решение следующей задачи:<br />
Дан массив a[1]..a[n] и число m < = n. Для каждой группы из m стоящих рядом членов (таких групп, очевидно, n-m+1) вычислить ее сумму.</p>
<p>Как мы решим эту задачку? Сразу хочу скачать, реализовать программу будем на C# в среде разработки Visual Studio 2008 как Windows приложение с формами.</p>
<p>Так что необходимо сначала создать проект с формой, разместить на ней все объекты как показано на картинке ниже <span id="more-51"></span>и, изменить имена, созданных объектов. Для полей “Размер массива” и “Число m” изменяем имя на “textBox_n” и “textBox_m” соответственно. Кнопка будет называться “work”, а объекты типа “ListBox” назовем “data_mas” и “mas_gr“ соответственно.</p>
<div id="attachment_53" class="wp-caption aligncenter" style="width: 303px"><a href="http://statprog.ru/wp-content/app.gif" rel="lightbox[51]"><img class=" wp-image-53 " title="Вычислить сумму каждой рядом стоящей группы чисел" src="http://statprog.ru/wp-content/app-293x300.gif" alt="Вычислить сумму каждой рядом стоящей группы чисел" width="293" height="300" /></a><p class="wp-caption-text">Вычислить сумму каждой рядом стоящей группы чисел</p></div>
<p>Теперь приступим к написанию программного кода нашей программы. Для начала напишем функцию проверки вводимых данных в поля “Размер массива” и “Число m”. Она возвращает значение “false”, когда неправильно заполнено одно или несколько полей, или “true”, когда все нормально с вводимыми данными. Нужно два раза кликнуть по полю “textBox_m”, которое находится напротив текста “Число m”, чтобы создать процедуру обработки события изменения данных в данном поле и вписать в нее вызов функции “textBox_TextCh()”, готовый код приведен ниже:</p>
<pre class="brush: csharp; title: ; notranslate">private void textBox_m_TextChanged(object sender, EventArgs e) {
	textBox_TextCh();
}

private bool textBox_TextCh() {
	if (textBox_n.Text.Length &lt; = 0 || Convert.ToInt32(textBox_n.Text) &lt;= 0 || Convert.ToInt32(textBox_m.Text) &gt; Convert.ToInt32(textBox_n.Text)) {
		textBox_m.Text = &quot;&quot;;
		MessageBox.Show(&quot;Неверно заполнено одно или несколько полей!&quot;, &quot;Ошибка при заполнении!&quot;);
		return false;
	}
	else
		return true;
}</pre>
<p>Рассмотрим процедуру, которая вызывается всякий раз, когда происходит событие клика по кнопке “work”:</p>
<pre class="brush: csharp; title: ; notranslate">private void work_Click(object sender, EventArgs e) {
	if (textBox_TextCh()) {
		int count_gr = Convert.ToInt32(textBox_n.Text) - Convert.ToInt32(textBox_m.Text) + 1;
		data_mas.Items.Clear();
		mas_gr.Items.Clear();
		Random r = new Random();
		int[] mass = new int[Convert.ToInt32(textBox_n.Text)];
		for (int i = 0; i &lt; Convert.ToInt32(textBox_n.Text); i++) {
			mass[i] = r.Next(1, 99);
			data_mas.Items.Add(i + 1 + &quot;) &quot; + mass[i]);
		}
		for (int i = 0; i &lt; count_gr; i++) {
			string group = &quot;&quot;;
			int summa = 0;
			for (int j = i; j &lt; i + Convert.ToInt32(textBox_m.Text); j++) {
				if(j &lt; i + Convert.ToInt32(textBox_m.Text) - 1)
					group += mass[j] + &quot; + &quot;;
				else
					group += mass[j];
				summa += mass[j];
			}
			mas_gr.Items.Add(i+1 + &quot;) &quot; +group + &quot; = &quot; + summa);
		}
	}
}</pre>
<p>Что здесь происходит? Сначала происходит вызов функции “textBox_TextCh()”. Если ошибок ввода данных не обнаружено, продолжаем работу этой процедуры. Вычисляем количество возможных групп из m стоящих рядом членов, где m – размер группы и записываем это в переменную “count_gr”. Далее очищаем “data_mas” и “mas_gr“, и создадим массив “mass”. Заполняем массив числами сгенерированными в диапозоне от 1 до 99 и сразу выводим его в наш “ListBox” с именем “data_mas”. Заполнение происходит автоматически с помощью генератора случайных чисел, ручное заполнение – это процесс долгий и уж точно не для ленивых.</p>
<p>Следующий этап – это поиск в массиве групп нужной длины, нахождение их суммы и вывод результирующих данных в “ListBox” с именем “ mas_gr ”.</p>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 306px"><a href="http://statprog.ru/wp-content/app_result.gif" rel="lightbox[51]"><img class="size-medium wp-image-58 " title="Вычислить сумму каждой рядом стоящей группы чисел" src="http://statprog.ru/wp-content/app_result-296x300.gif" alt="Результат выполнения программы Вычислить сумму каждой рядом стоящей группы чисел" width="296" height="300" /></a><p class="wp-caption-text">Результат выполнения программы Вычислить сумму каждой рядом стоящей группы чисел</p></div>
<p>Задача решена и реализована на C#, результат выполнения программы показан на рисунке выше. Спасибо и удачного программирования.</p>
<blockquote><p><strong>Автор</strong>: Евтеев Евгений Александрович</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/04/04/vychislit-summu-kazhdoj-ryadom-stoyashhej-gruppy-chisel-na-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

