Advertisement
Guest User

Генератор числовых комбинаций

a guest
Nov 12th, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.32 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11.  
  12. namespace Fishki
  13. {
  14.  
  15.     public partial class Form1 : Form
  16.     {
  17.  
  18.  
  19.         public bool _flag;
  20.         public int c = 0;
  21.  
  22.  
  23.         public Form1 ( )
  24.         {
  25.  
  26.             InitializeComponent ( );
  27.             this._flag = true;
  28.  
  29.         }
  30.  
  31.  
  32.         private void button_Click ( object sender, EventArgs e )
  33.         {
  34.             Thread th = new Thread( this.run );
  35.             th.Start ( );
  36.         }
  37.  
  38.  
  39.         private void output ( int[] data )
  40.         {
  41.             this.c++;
  42.  
  43.             try
  44.             {
  45.                 this.Invoke ( new EventHandler ( delegate
  46.                 {
  47.                     textBox1.Text += String.Join ( "/", data ) + "\r\n";
  48.                     progressText.Text = c.ToString ( );
  49.                     Application.DoEvents ( );
  50.                 } ) );
  51.             }
  52.             catch
  53.             {
  54.                 textBox1.Text += String.Join ( "/", data ) + "\r\n";
  55.                 progressText.Text = c.ToString ( );
  56.                 Application.DoEvents ( );
  57.             }
  58.         }
  59.  
  60.  
  61.         private void run (  )
  62.         {
  63.             this.c = 0;
  64.             int step = ( int ) this.Step.Value;             //  10
  65.             int pos = ( int ) this.Position.Value;          //   6
  66.             int sum = ( int ) this.Summa.Value;     //   1000
  67.             bool rules = this.Rules.Checked;            //   true or false
  68.             int[] data = new int[ pos ];
  69.  
  70.             int count = step;
  71.  
  72.             while ( data.Length == pos )
  73.             {
  74.                 // флаг выхода
  75.                 _flag = false;
  76.  
  77.                 for ( int j = 0; j < pos; j++ )
  78.                 {
  79.                     for ( int i = 0; i < pos ; i++ )
  80.                     {
  81.                         data[ i ] = count;
  82.                     }
  83.                     int total = sum - ( ( data.Length - 1 ) * count );
  84.                     data[ j ] = total;
  85.  
  86.                     // чтобы не получить в массиве отрицательных значений
  87.                     if ( total <= 0 )
  88.                     {
  89.                         // ставим флаг выхода и прерываем первый цикл for
  90.                         _flag = true;
  91.                         break; 
  92.                     }
  93.                     // распечатываем массив
  94.                     output ( data );
  95.  
  96.                     // если отмечена галочка "Сохранять порядок"
  97.                     if ( rules )
  98.                     {
  99.                         // прерываем первый цикл for
  100.                         j = pos;
  101.                     }
  102.                 }
  103.  
  104.                 // если есть флаг выхода, то прерываем цикл while
  105.                 if ( _flag )
  106.                 {
  107.                     break;
  108.                 }
  109.  
  110.                 count = count + step;
  111.  
  112.             }
  113.  
  114.         }
  115.  
  116.  
  117.     }
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement